A place to cache linked articles (think custom and personal wayback machine)
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

index.html 29KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang=fr>
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset=utf-8>
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>HTML5 : Éléments &lt;figure&gt; et &lt;figcaption&gt; (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="http://www.alsacreations.com/article/lire/1337-html5-elements-figure-et-figcaption.html">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. HTML5 : Éléments &lt;figure&gt; et &lt;figcaption&gt; (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="http://www.alsacreations.com/article/lire/1337-html5-elements-figure-et-figcaption.html">Source originale du contenu</a></h3>
  445. <p>L'élément <code class="html">&lt;figure&gt;</code> ne devrait pas vous être inconnu puisque son rôle est pareil à celui qu'il joue dans les supports papiers tels que les livres ou magazines afin d'illustrer et de légender des photos, des diagrammes, ou encore des schémas.</p>
  446. <h3>
  447. Illustration légendée</h3>
  448. <p>
  449. Inaugurés avec HTML5, les éléments <code class="html">&lt;figure&gt;</code> et <code class="html">&lt;figcaption&gt;</code> fonctionnent de concert pour associer une légende à une illustration ou un autre élément média.</p>
  450. <pre class="code">
  451. <code class="html"><strong>&lt;figure&gt;</strong>
  452. &lt;img src="image.jpg" alt="" /&gt;
  453. <strong>&lt;figcaption&gt;</strong>Légende associée<strong>&lt;/figcaption&gt;</strong>
  454. <strong>&lt;/figure&gt;</strong></code></pre>
  455. <h4>
  456. Élément <code class="html">&lt;figure&gt;</code></h4>
  457. <p>
  458. <code class="html">&lt;figure&gt;</code> est une unité de contenu, c'est-à-dire que cet élément sert de conteneur dans lequel s'insèrent divers éléments comme des images, des schémas, des vidéos, des tableaux ou encore des blocs de code. L'objectif est de lier ce contenu à une légende, définie par l'élément <code class="html">&lt;figcaption&gt;</code> (facultatif).</p>
  459. <h4>
  460. Élément <code class="html">&lt;figcaption&gt;</code></h4>
  461. <p>
  462. Enfant direct de <code class="html">&lt;figure&gt;</code>, son rôle est de légender son parent, sous forme de texte et/ou de liens. Il peut se placer avant ou après le contenu principal de <code class="html">&lt;figure&gt;</code>.</p>
  463. <h3>
  464. Quelques applications dans le monde du livre</h3>
  465. <p>
  466. Ce fonctionnement se retrouve dans de nombreux ouvrages, y compris les premières encyclopédies pour lesquelles on imprimait des planches de figures à part.</p>
  467. <figure class="center">
  468. <figcaption>
  469. <p>Une planche de gravures sur l'Astronomie, illustrations de l'Encyclopédie de Diderot (1713-1784)</p>
  470. </figcaption>
  471. <p>
  472. <img alt="" src="http://www.alsacreations.com/xmedia/doc/full/planche-encyclopedie.png"/></p>
  473. </figure>
  474. <figure class="center">
  475. <figcaption><p>Un diagramme circulaire de statistiques</p></figcaption>
  476. <p><img alt="" src="http://www.alsacreations.com/xmedia/doc/full/email-client-popularity-2012.png"/></p>
  477. </figure>
  478. <h4>
  479. Compatibilité navigateur des éléments <code>&lt;figure&gt;</code> et <code>&lt;figcaption&gt;</code></h4>
  480. <table class="pagetable">
  481. <tbody>
  482. <tr>
  483. <th>
  484. Navigateurs</th>
  485. <th>
  486. Versions</th>
  487. </tr>
  488. <tr>
  489. <td>
  490. <img alt="Internet Explorer" height="40" src="http://www.alsacreations.com/xmedia/doc/small/IExplorer_Transparent.png" width="40"/></td>
  491. <td>
  492. <strong>Internet Explorer 9.0+</strong></td>
  493. </tr>
  494. <tr>
  495. <td>
  496. <img alt="Firefox" height="40" src="http://www.alsacreations.com/xmedia/doc/small/Firefox_Transparent.png" width="40"/></td>
  497. <td>
  498. <strong>Firefox 3.0+</strong></td>
  499. </tr>
  500. <tr>
  501. <td>
  502. <img alt="Chrome" height="40" src="http://www.alsacreations.com/xmedia/doc/small/Chrome_Transparent.png" width="40"/></td>
  503. <td>
  504. <strong>Chrome 4.0+</strong></td>
  505. </tr>
  506. <tr>
  507. <td>
  508. <img alt="Safari" height="40" src="http://www.alsacreations.com/xmedia/doc/small/Safari_Transparent.png" width="40"/></td>
  509. <td>
  510. <strong>Safari 3.1+</strong><br/>
  511. <strong>iOS Safari 3.2+</strong></td>
  512. </tr>
  513. <tr>
  514. <td>
  515. <img alt="Opera" height="40" src="http://www.alsacreations.com/xmedia/doc/small/Opera_Transparent.png" width="40"/></td>
  516. <td>
  517. <strong>Opera 9.0+</strong><br/>
  518. <strong>Opera Mini 5.0 + et Mobile</strong> <strong>10.0</strong></td>
  519. </tr>
  520. <tr>
  521. <td>
  522. <img alt="Android Browser" src="http://www.alsacreations.com/xmedia/doc/small/android-logo.png"/></td>
  523. <td>
  524. <strong>Android Browser 4.0+</strong></td>
  525. </tr>
  526. </tbody>
  527. </table>
  528. <p class="remarque">
  529. Un navigateur n'implémentant pas ces éléments affichera le contenu au format brut, sans présentation particulière. Par défaut, le style appliqué est <code>display:block</code> sur les deux éléments, ainsi que des marges sur <code>&lt;figure&gt;</code>. Sous IE&lt;9 il faudra appliquer un <a href="/article/lire/1376-html5-section-article-nav-header-footer-aside.html">shim</a> pour pouvoir leur appliquer un style bloc.</p>
  530. <h3>
  531. Applications sur le web</h3>
  532. <h5>
  533. Utilisation sans légende</h5>
  534. <p>
  535. Il est tout à fait envisageable d'insérer <code class="html">&lt;figcaption&gt;</code> avant l'image voire de ne pas le mettre du tout car il est facultatif.</p>
  536. <pre class="code">
  537. <code class="html"><strong>&lt;figure&gt;</strong>
  538. &lt;img src="un-gout-de-fraise.jpg" alt="Proposition pour le thème : Un goût de fraise" /&gt;
  539. <strong>&lt;/figure&gt;</strong></code></pre>
  540. <p>
  541. <a class="demo" href="/xmedia/tuto/html5/figure-figcaption/demo1.html">Démonstration</a></p>
  542. <p class="center">
  543. <img alt="Demonstration image sans légende" src="http://www.alsacreations.com/xmedia/doc/full/demo23.jpg"/></p>
  544. <p>
  545. Les différents éléments peuvent être stylés en CSS. Dans cet exemple ont été ajoutées à <code class="html">&lt;figure&gt;</code> une bordure et une couleur de fond blanche.</p>
  546. <h5>
  547. Une image avec sa légende</h5>
  548. <p>
  549. Dans son usage le plus courant, l'élément <code class="html">&lt;figure&gt;</code> contient une image puis sa légende <code class="html">&lt;figcaption&gt;</code>. </p>
  550. <pre class="code">
  551. <code class="html"><strong>&lt;figure&gt;</strong>
  552. &lt;img src="un-gout-de-fraise.jpg" alt="" /&gt;
  553. <strong>&lt;figcaption&gt;</strong>Proposition pour le thème : &lt;br&gt;&lt;em&gt;Un goût de fraise&lt;/em&gt; du jeu &lt;a href="http://www.photogame.fr/"&gt;PhotoGame&lt;/a&gt;<strong>&lt;/figcaption&gt;</strong>
  554. <strong>&lt;/figure&gt;</strong></code></pre>
  555. <p>
  556. <a class="demo" href="/xmedia/tuto/html5/figure-figcaption/demo2.html">Démonstration</a></p>
  557. <p class="center">
  558. <img alt="Visuel de la démonstration 1" src="http://www.alsacreations.com/xmedia/doc/full/demo12.jpg"/></p>
  559. <h4 class="center">
  560. Utilisation avancée</h4>
  561. <p class="center">
  562. Il est prévu de pouvoir regrouper une liste d'images et ainsi les lier à l'aide d'un unique élément <code class="html">&lt;figcaption&gt;</code>.</p>
  563. <h5 class="center">
  564. Une liste d'images</h5>
  565. <pre class="code">
  566. <code class="html"><strong>&lt;figure&gt;</strong>
  567. &lt;img src="porto1.jpg" alt="Graffiti dans le sud de Porto" width="181" height="242"&gt;
  568. &lt;img src="porto2.jpg" alt="Balcons dans une rue de Porto" width="181" height="242"&gt;
  569. &lt;img src="porto3.jpg" alt="Chat somnolant au sud de Porto" width="181" height="242"&gt;
  570. <strong>&lt;figcaption&gt;</strong>Photo d'un voyage à Porto. Ville emplie de graffitis, balcons loufoques et chats profitant des quelques ruines derrière la ville.<strong>&lt;/figcaption&gt;</strong>
  571. <strong>&lt;/figure&gt;</strong></code></pre>
  572. <p class="center">
  573. <a class="demo" href="/xmedia/tuto/html5/figure-figcaption/demo3.html">Démonstration</a></p>
  574. <p class="center">
  575. <img alt="" src="http://www.alsacreations.com/xmedia/doc/full/demo34.jpg"/></p>
  576. <h5 class="center">
  577. Un bloc de code</h5>
  578. <p>
  579. Les illustrations ne sont pas les seuls éléments HTML à pouvoir profiter de <code class="html">&lt;figure&gt;</code> et <code class="html">&lt;figcaption&gt;</code>. On peut également les appliquer à un bloc de code source.</p>
  580. <pre class="code">
  581. <code class="html"><strong>&lt;figure&gt;</strong>
  582. &lt;pre&gt;
  583. &lt;code&gt;
  584. &lt;!-- Le code source à exposer --&gt;
  585. &lt;/code&gt;
  586. &lt;/pre&gt;
  587. <strong>&lt;figcaption&gt;</strong>Description du code source présenté<strong>&lt;/figcaption&gt;</strong>
  588. <strong>&lt;/figure&gt;</strong></code></pre>
  589. <p>
  590. <a class="demo" href="/xmedia/tuto/html5/figure-figcaption/demo4.html">Démonstration</a></p>
  591. <p class="center">
  592. <img alt="" src="http://www.alsacreations.com/xmedia/doc/full/demo4.jpg"/></p>
  593. <h5 class="center">
  594. Une vidéo</h5>
  595. <p>
  596. Le même principe est appliqué à la balise <code class="html">&lt;video&gt;</code>. Voir aussi l'article : <a href="/article/lire/1125-introduction-balise-video-html5-mp4-h264-webm-ogg-theora.html">Introduction à la balise &lt;video&gt;</a>.</p>
  597. <pre class="code">
  598. <code class="html"><strong>&lt;figure&gt;</strong>
  599. &lt;video src="video.ogv" width="640" height="480"&gt;&lt;/video&gt;
  600. <strong>&lt;figcaption&gt;</strong>Description de la vidéo<strong>&lt;/figcaption&gt;</strong>
  601. <strong>&lt;/figure&gt;</strong></code></pre>
  602. <h5>
  603. Les diagrammes et autres graphes dynamiques</h5>
  604. <p>
  605. Du côté de Canvas et <a href="/tuto/lire/1421-svg-initiation-syntaxe-outils.html">SVG</a>, le document peut également en profiter. <span>HTML5 ne compte pas que </span><code class="html">&lt;figure&gt;</code><span> et </span><code class="html">&lt;figcaption&gt;</code><span> dans ses nouveaux éléments mais également </span><code class="html">&lt;canvas&gt;</code><span>, qui vous permettra de créer, en association avec JavaScript, des diagrammes, des graphiques, et tout ce qu'une surface de dessin permet de faire. </span>À ce sujet, consultez l'article de David Rousset : <a href="http://blogs.msdn.com/b/davrous/archive/2011/05/20/introduction-aux-apis-graphiques-d-html5-svg-amp-canvas-2-4.aspx">Introduction aux APIs graphiques d’HTML5: SVG &amp; Canvas</a></p>
  606. <h4>
  607. Choisir <code class="html">&lt;figure&gt;</code> ou <code class="html">&lt;aside&gt;</code> ?</h4>
  608. <p>
  609. Ces deux éléments sont des unités de contenu mais n'ont pas le même rôle sémantique. Tandis qu'<code class="html">&lt;aside&gt;</code> n'est pas essentiel pour la compréhension de la page (il ne doit être qu'un apport tangentiel), <code class="html">&lt;figure&gt;</code> est lié à celle-ci : il transmet un contenu pertinent, lié au contenu principal, comme le serait une image classique.</p>
  610. <p>
  611. Nous pouvons donc résumer la chose comme suit :</p>
  612. <ul>
  613. <li>
  614. <code class="html">&lt;aside&gt;</code> : son contenu est périphérique à la page, et son absence ne doit pas gêner la compréhension de celle-ci.</li>
  615. <li>
  616. <code class="html">&lt;figure&gt;</code> : son contenu contribue à donner du sens et de la compréhension à la page, et son placement n'est pas déterminant.</li>
  617. </ul>
  618. <h3>
  619. Propriétés des éléments</h3>
  620. <h4>
  621. <code class="html">&lt;figure&gt;</code></h4>
  622. <table class="pagetable">
  623. <tbody>
  624. <tr>
  625. <th>
  626. Propriété</th>
  627. <th>
  628. Détails</th>
  629. </tr>
  630. <tr>
  631. <td>
  632. Modèles de contenu autorisés</td>
  633. <td>
  634. Un élément <code class="html">&lt;figcaption&gt;</code> optionnel, suivi par du contenu de flux</td>
  635. </tr>
  636. <tr>
  637. <td>
  638. Parents autorisés</td>
  639. <td>
  640. Tout élément pouvant contenir des éléments du flux</td>
  641. </tr>
  642. <tr>
  643. <td>
  644. Omission de balise</td>
  645. <td>
  646. Les balises ouvrantes et fermantes sont obligatoires</td>
  647. </tr>
  648. <tr>
  649. <td>
  650. Style par défaut</td>
  651. <td>
  652. <code class="css">figcaption { display:block; margin:1em 40px; }</code></td>
  653. </tr>
  654. </tbody>
  655. </table>
  656. <h4>
  657. <code class="html">&lt;figcaption&gt;</code></h4>
  658. <table class="pagetable">
  659. <tbody>
  660. <tr>
  661. <th>
  662. Propriété</th>
  663. <th>
  664. Détails</th>
  665. </tr>
  666. <tr>
  667. <td>
  668. Modèles de contenu autorisés</td>
  669. <td>
  670. Contenu de flux</td>
  671. </tr>
  672. <tr>
  673. <td>
  674. Parents autorisés</td>
  675. <td>
  676. <code>&lt;figure&gt;</code></td>
  677. </tr>
  678. <tr>
  679. <td>
  680. Omission de balise</td>
  681. <td>
  682. Les balises ouvrantes et fermantes sont obligatoires</td>
  683. </tr>
  684. <tr>
  685. <td>
  686. Style par défaut</td>
  687. <td>
  688. <code class="css">figcaption { display:block; }</code></td>
  689. </tr>
  690. </tbody>
  691. </table>
  692. <p>
  693.  </p>
  694. </div>
  695. </article>
  696. </section>
  697. <nav id="jumpto">
  698. <p>
  699. <a href="/david/blog/">Accueil du blog</a> |
  700. <a href="http://www.alsacreations.com/article/lire/1337-html5-elements-figure-et-figcaption.html">Source originale</a> |
  701. <a href="/david/stream/2019/">Accueil du flux</a>
  702. </p>
  703. </nav>
  704. <footer>
  705. <div>
  706. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  707. <p>
  708. Bonjour/Hi!
  709. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  710. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  711. </p>
  712. <p>
  713. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  714. </p>
  715. <p>
  716. Voici quelques articles choisis :
  717. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  718. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  719. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  720. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  721. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  722. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  723. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  724. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  725. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  726. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  727. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  728. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  729. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  730. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  731. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  732. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  733. </p>
  734. <p>
  735. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  736. </p>
  737. <p>
  738. Je ne traque pas ta navigation mais mon
  739. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  740. conserve des logs d’accès.
  741. </p>
  742. </div>
  743. </footer>
  744. <script type="text/javascript">
  745. ;(_ => {
  746. const jumper = document.getElementById('jumper')
  747. jumper.addEventListener('click', e => {
  748. e.preventDefault()
  749. const anchor = e.target.getAttribute('href')
  750. const targetEl = document.getElementById(anchor.substring(1))
  751. targetEl.scrollIntoView({behavior: 'smooth'})
  752. })
  753. })()
  754. </script>