{"id":5865,"date":"2016-05-16T14:45:57","date_gmt":"2016-05-16T12:45:57","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=5865"},"modified":"2016-05-16T17:07:03","modified_gmt":"2016-05-16T15:07:03","slug":"des-proprietes-css-supportees-par-firefox","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/css-css3\/des-proprietes-css-supportees-par-firefox","title":{"rendered":"Des propri\u00e9t\u00e9s CSS support\u00e9es par Firefox\u2026"},"content":{"rendered":"<p>Firefox supporte certaines fonctionnalit\u00e9s que j&rsquo;ai h\u00e2te d&rsquo;utiliser en production, mais qui ne sont, \u00e0 l&rsquo;heure d&rsquo;\u00e9criture de ces lignes, pas support\u00e9es par Chrome, ni Opera. Prenez donc cet article comme une invitation \u00e0 motiver les autres navigateurs \u00e0 aller de l&rsquo;avant, et \u00e9galement comme une possibilit\u00e9 de faire de l&rsquo;am\u00e9lioration progressive dans certains cas.<\/p>\n<p><!--more--><\/p>\n<p class=\"message\">Cet article est une traduction et adaptation autoris\u00e9es de l&rsquo;<a href=\"http:\/\/brainlessdeveloper.com\/css-features-that-firefox-supports-but-chrome-doesnt\/\">article de Brainless Developer<\/a> originellement en anglais. Vous pouvez suivre <a href=\"https:\/\/twitter.com\/brainlessdev\">@brainlessdev<\/a> sur Twitter.<\/p>\n<p>Peut-\u00eatre que vous n&rsquo;avez jamais entendu parler de ces fonctionnalit\u00e9s, et pour cause, elles sont plut\u00f4t mal support\u00e9es par le panel de navigateurs \u00e0 ce jour. Faisons une pr\u00e9sentation de certaines d&rsquo;entre elles.<\/p>\n<div class=\"tdm\">\n<h2>Contenu de l&rsquo;article<\/h2>\n<ol>\n<li><a href=\"#css-scroll-snap-points\">CSS Scroll Snap Points<\/a><\/li>\n<li><a href=\"#les-cesures-avec-hyphenation\">Les c\u00e9sures avec Hyphenation<\/a><\/li>\n<li><a href=\"#la-fonction-css-element\">La fonction CSS <code>element()<\/code><\/a><\/li>\n<li><a href=\"#la-propriete-position-sticky\">La propri\u00e9t\u00e9 <code>position: sticky;<\/code><\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"css-scroll-snap-points\">CSS Scroll Snap Points<\/h2>\n<p><strong>Scroll Snap Points<\/strong> est une m\u00e9thode qui permet d&rsquo;ajouter une dose de pr\u00e9cision lors d&rsquo;une action de d\u00e9filement dans un \u00e9l\u00e9ment donn\u00e9.<br \/>\nCet aspect est particuli\u00e8rement int\u00e9ressant pour contraindre la m\u00e9thode de navigation, ou l&rsquo;harmoniser entre les terminaux des utilisateurs, je pense notamment aux terminaux tactiles. Imaginez la chose dans une galerie d&rsquo;image, o\u00f9 l&rsquo;on souhaite passer image par image : peu importe le mouvement de gliss\u00e9, ou le scroll effectu\u00e9, un mouvement dans un sens pour passer \u00e0 la suivante, un mouvement dans l&rsquo;autre pour revenir \u00e0 la pr\u00e9c\u00e9dent, le navigateur s&rsquo;occupe d&rsquo;arr\u00eater le d\u00e9filement au bon endroit suivant l&rsquo;entendu du mouvement.<\/p>\n<p>Il y a quelques biblioth\u00e8ques qui proposent ce genre de comportement tout en supportant l&rsquo;ensemble des navigateurs (ou presque), comme par exemple <a href=\"https:\/\/github.com\/alvarotrigo\/pagePiling.js\">pagePiling.js<\/a>. (qui fait \u00e9galement bien d&rsquo;autres choses) Mais la propri\u00e9t\u00e9 native en CSS est encore trop mal support\u00e9e.<\/p>\n<p>Si vous naviguez sur Firefox, voici une d\u00e9monstration fonctionnelle propos\u00e9e sur CodePen.<\/p>\n<p class='codepen'  data-height='290' data-theme-id='0' data-slug-hash='zqXyvy' data-default-tab='result' data-animations='run' data-editable='' data-embed-version='2'>\nVoir CSS Scroll Snap Points Full Height dans CodePen<\/p>\n\n<p>Voici le support de cette propri\u00e9t\u00e9 qui pourrait \u00e9voluer assez rapidement, en tout cas je l&rsquo;esp\u00e8re.<\/p>\n<div class=\"ciu_embed\" data-feature=\"css-snappoints\" data-periods=\"future_1,current,past_1,past_2\"><a href=\"http:\/\/caniuse.com\/#feat=css-snappoints\">Can I Use css-snappoints?<\/a><\/div>\n\t\t<script src=\"\/\/cdn.jsdelivr.net\/caniuse-embed\/1.0.1\/caniuse-embed.min.js\"><\/script>\n<h2 id=\"les-cesures-avec-hyphenation\">Les c\u00e9sures avec Hyphenation<\/h2>\n<p>Une autre fonctionnalit\u00e9, cette fois li\u00e9e \u00e0 la typographie, est <a href=\"https:\/\/www.creativejuiz.fr\/blog\/css-css3\/controles-fin-des-cesures-css4-text\">la c\u00e9sure<\/a>. Vous le savez certainement, c&rsquo;est la possibilit\u00e9 de laisser un mot se couper s&rsquo;il est trop long, et le marquer par un trait d&rsquo;union en fin de ligne. J&rsquo;avais \u00e9crit un article sur le sujet en 2013 : <a href=\"https:\/\/www.creativejuiz.fr\/blog\/css-css3\/controles-fin-des-cesures-css4-text\">Un contr\u00f4le plus fin des c\u00e9sures en CSS4<\/a>.<br \/>\nBien que l&rsquo;article date, le support de la r\u00e8gle de base n&rsquo;est toujours pas fait sur Chrome et Opera alors qu&rsquo;il fonctionne sur tous les navigateurs.<\/p>\n<p class='codepen'  data-height='350' data-theme-id='0' data-slug-hash='oxRvRq' data-default-tab='result' data-animations='run' data-editable='' data-embed-version='2'>\nVoir Hyphenation dans CodePen<\/p>\n\n<p>Les valeurs <code>none<\/code>, <code>auto<\/code> et <code>manual<\/code> de <code>hyphens<\/code> permettent dans l&rsquo;ordre de ne pas tenir compte de la c\u00e9sure (<code>none<\/code>), de laisser faire l&rsquo;algorithme du navigateur selon le dictionnaire de langue (<code>auto<\/code>) ou de proposer des c\u00e9sures manuelles (<code>manual<\/code>) notamment avec le caract\u00e8res HTML &amp;shy; qui est un trait d&rsquo;union conditionnel.<\/p>\n<p>Voici le support actuel pour CSS Hyphens :<\/p>\n<div class=\"ciu_embed\" data-feature=\"css-hyphens\" data-periods=\"future_1,current,past_1,past_2\"><a href=\"http:\/\/caniuse.com\/#feat=css-hyphens\">Can I Use css-hyphens?<\/a><\/div>\n\t\t<script src=\"\/\/cdn.jsdelivr.net\/caniuse-embed\/1.0.1\/caniuse-embed.min.js\"><\/script>\n<p>Le support de hyphens dans Blink (Chrome) est <a href=\"https:\/\/docs.google.com\/document\/d\/1ZgMnNxYxvPJYMOeyxJs8MsfGMNFiDKrz64AySxlCzpk\/edit\">pr\u00e9vu<\/a>, il a d&rsquo;ailleurs \u00e9t\u00e9 partiellement support\u00e9 dans Chrome 13, mais retir\u00e9, comme souvent\u2026<\/p>\n<h2 id=\"la-fonction-css-element\">La fonction CSS <code>element()<\/code><\/h2>\n<p>Cette fonction a un effet un peu \u00ab\u00a0magique\u00a0\u00bb, et entre nous la magie c&rsquo;est sympa mais \u00e7a nous cache des choses :p<br \/>\nJe ne vais pas rentrer dans les d\u00e9tails de ce qui se passe sous le capot de <code>element()<\/code>, mais plut\u00f4t vous montrer comment le mettre en place. Pas facile \u00e0 saisir, mais imaginez deux blocs : le bloc de gauche propose un contenu, le bloc de droite applique ce contenu en tant que fond imag\u00e9. Tous les changements effectu\u00e9s dans le bloc de gauche se r\u00e9percuteront dans le fond imag\u00e9 du bloc de droite gr\u00e2ce \u00e0 la valeur <code>element()<\/code> de la propri\u00e9t\u00e9 <code>background<\/code>.<br \/>\nJe vous ai dit que c&rsquo;\u00e9tait tordu. Avec un exemple \u00e7a marchera mieux (essayez sur Firefox) :<\/p>\n<p class='codepen'  data-height='350' data-theme-id='0' data-slug-hash='yOWLvX' data-default-tab='result' data-animations='run' data-editable='' data-embed-version='2'>\nVoir CSS element() function dans CodePen<\/p>\n\n<p>L\u00e0 c&rsquo;est le moment o\u00f9 vous me dites : quel int\u00e9r\u00eat !<br \/>\nJ&rsquo;ai eu du mal sur le moment \u00e0 comprendre \u00e9galement, mais cela permet de cr\u00e9er des effets de transformation applicables aux blocs sans dupliquer de contenu. Exemple avec un reflet :<\/p>\n<p class='codepen'  data-height='350' data-theme-id='0' data-slug-hash='NNVWzR' data-default-tab='result' data-animations='run' data-editable='' data-embed-version='2'>\nVoir Reflect with CSS element() function dans CodePen<\/p>\n\n<p>Vincent nous a propos\u00e9 encore plus de d\u00e9monstrations sur <a href=\"http:\/\/iamvdo.me\/en\/blog\/css-element-function\">son article<\/a> avec de tr\u00e8s bonnes id\u00e9es, je vous laisse aller lire cela.<\/p>\n<div class=\"ciu_embed\" data-feature=\"css-element-function\" data-periods=\"future_1,current,past_1,past_2\"><a href=\"http:\/\/caniuse.com\/#feat=css-element-function\">Can I Use css-element-function?<\/a><\/div>\n\t\t<script src=\"\/\/cdn.jsdelivr.net\/caniuse-embed\/1.0.1\/caniuse-embed.min.js\"><\/script>\n<h2 id=\"la-propriete-position-sticky\">La propri\u00e9t\u00e9 <code>position: sticky<\/code><\/h2>\n<p>Une petite derni\u00e8re pour la route, et pas des moindre : la possibilit\u00e9 de d\u00e9finir si et quand un \u00e9l\u00e9ment doit se \u00ab\u00a0coller\u00a0\u00bb \u00e0 sa position et rester \u00e0 l&rsquo;\u00e9cran pendant un d\u00e9filement de la page. Je vous en ai parl\u00e9 avec une d\u00e9monstration vid\u00e9o sur l&rsquo;article <a href=\"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/creer-menu-sticky-avec-javascript-css\">Cr\u00e9er un menu sticky avec JavaScript et CSS<\/a>.<\/p>\n<p>Actuellement pour avoir un support complet sur tous les navigateurs, vous devez utiliser une biblioth\u00e8que ou un script JS. Peut-\u00eatre la faute au support navigateur plut\u00f4t mauvais. Pourtant cette prise en charge native par Firefox est vraiment bonne. Voyez par vous-m\u00eame avec cette autre d\u00e9monstration.<\/p>\n<p class='codepen'  data-height='320' data-theme-id='0' data-slug-hash='YqbzRo' data-default-tab='result' data-animations='run' data-editable='' data-embed-version='2'>\nVoir Position Sticky dans CodePen<\/p>\n\n<p>\u00c7a marche sur Safari et Firefox, esp\u00e9rons bient\u00f4t sur Chrome !<\/p>\n<div class=\"ciu_embed\" data-feature=\"css-sticky\" data-periods=\"future_1,current,past_1,past_2\"><a href=\"http:\/\/caniuse.com\/#feat=css-sticky\">Can I Use css-sticky?<\/a><\/div>\n\t\t<script src=\"\/\/cdn.jsdelivr.net\/caniuse-embed\/1.0.1\/caniuse-embed.min.js\"><\/script>\n<p>Il y a encore bien des fonctionnalit\u00e9s CSS dont j&rsquo;attends avec h\u00e2te le support \u00e9tendu sur tous les navigateurs. Et vous, vous attendez lesquelles ?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firefox supporte certaines fonctionnalit\u00e9s que j&rsquo;ai h\u00e2te d&rsquo;utiliser en production, mais qui ne sont, \u00e0 l&rsquo;heure d&rsquo;\u00e9criture de ces lignes, pas support\u00e9es par Chrome, ni Opera. Prenez donc cet article comme une invitation \u00e0 motiver les autres navigateurs \u00e0 aller de l&rsquo;avant, et \u00e9galement comme une possibilit\u00e9 de faire de l&rsquo;am\u00e9lioration progressive dans certains cas.<\/p>\n","protected":false},"author":4,"featured_media":5877,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[17],"tags":[544,113,688,447,81],"coauthors":[597],"class_list":["post-5865","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-css3","tag-cesure","tag-slideshow","tag-sticky","tag-transform","tag-typographie"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/5865","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=5865"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/5865\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/5877"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=5865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=5865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=5865"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=5865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}