<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CSS Archives - Copier coller</title>
	<atom:link href="https://www.copier-coller.com/css/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.copier-coller.com/css/</link>
	<description>Des tutos wordpress pour les nuls !!!</description>
	<lastBuildDate>Sat, 31 Dec 2022 00:12:51 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.7</generator>

<image>
	<url>https://www.copier-coller.com/wp-content/uploads/2018/03/cropped-copier-coller_06_favicon-32x32.png</url>
	<title>CSS Archives - Copier coller</title>
	<link>https://www.copier-coller.com/css/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Créer une ombre verticale</title>
		<link>https://www.copier-coller.com/creer-une-ombre-verticale/</link>
					<comments>https://www.copier-coller.com/creer-une-ombre-verticale/#comments</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sun, 11 Apr 2021 02:17:09 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=6262</guid>

					<description><![CDATA[<p>Ici le but est de créer une ombre sur les coins, pour donner l&#8217;impression qu&#8217;on a devant soi la page d&#8217;un livre. Sur le net, vous trouverez une foule d&#8217;exemples pour des ombres horizontales. En revanche pas grand chose sur des ombres verticales. Voici donc un exemple. Il doit y avoir une façon plus simple, [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-une-ombre-verticale/">Créer une ombre verticale</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment créer un box shadow vertical sur un élement ?</h2>
<p>Ici le but est de créer une ombre sur les coins, pour donner l&rsquo;impression qu&rsquo;on a devant soi la page d&rsquo;un livre. Sur le net, vous trouverez une foule d&rsquo;exemples pour des ombres horizontales. En revanche pas grand chose sur des ombres verticales. Voici donc un exemple. Il doit y avoir une façon plus simple, mais c&rsquo;est déjà une approche :</p>
<p>Sur un conteneur parent, on crée deux pseudo-éléments <em> ::after</em> et<em> ::before</em>. Ce sont deux lignes d&rsquo;1px auxquelles on applique l&rsquo;ombre et que l&rsquo;on va lentement tourner (rotate) jusqu&rsquo;à former un X derrière le conteneur.</p>
<p>Si on cible ces deux lignes via l&rsquo;inspecteur, on voit bien qu&rsquo;elles forment une croix. L&rsquo;extrémité haute de la première va créer l&rsquo;ombre du coin supérieur droit du conteneur.. et l&rsquo;extrémité basse de la seconde va créer l&rsquo;ombre du coin inférieur droit.</p>
<p>C&rsquo;est un peu alambiqué mais ca fonctionne. La seule contrainte, c&rsquo;est qu&rsquo;il faut ensuite jouer sur les hauteurs et placements des deux lignes pour que ca passe en mobile/tablette</p>
<p>Voici l&rsquo;exemple:</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="css,result" data-user="yuyazz" data-slug-hash="MWbKdwd" data-preview="true" data-pen-title="Vertical Curved Shadow">See the Pen <a href="https://codepen.io/yuyazz/pen/MWbKdwd"><br />
Vertical Curved Shadow</a> by blindDev (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-une-ombre-verticale/">Créer une ombre verticale</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/creer-une-ombre-verticale/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>counter css</title>
		<link>https://www.copier-coller.com/counter-css/</link>
					<comments>https://www.copier-coller.com/counter-css/#comments</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sat, 10 Apr 2021 18:24:04 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=6252</guid>

					<description><![CDATA[<p>Voici une fonctionnalité bien pratique pour créer ses listes dynamiques sans avoir à passer par des pseudos éléments avec images. On commence par créer une instance du compteur avec l&#8217;attribut counter-reset sur la liste. On annule le style par défaut avec le list-style-type:none. Dans mon exemple, je ne me sert pas de ce code par [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/counter-css/">counter css</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment créer des listes numérotées rien qu&rsquo;en css</h2>
<p>Voici une fonctionnalité bien pratique pour créer ses listes dynamiques sans avoir à passer par des pseudos éléments avec images.</p>
<h3>Créer une instance du compteur</h3>
<p>On commence par créer une instance du compteur avec l&rsquo;attribut <strong><em>counter-reset</em></strong> sur la liste.<br />
On annule le style par défaut avec le <em>list-style-type:none</em>.</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">ol { <br/>counter-reset: li; <br/>list-style-type: none; <br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Dans mon exemple, je ne me sert pas de ce code par défaut, et ca marche très bien.</p>
<h3>Incrémenter ses items</h3>
<p>Sur l&rsquo;item du menu, on incrémente le compteur li, avec <strong><em>counter-increment: li</em></strong>; Puis en utilisant un pseudo element, on précise l&rsquo;élément à incrémenter, ici nos items de menu « li »  : <strong><em>content: counter(li); </em></strong>De cette façon, à chaque nouveau « li », on aura notre numéro qui va s&rsquo;afficher.<code></code></p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="css,result" data-user="yuyazz" data-slug-hash="NWxGzNg" data-preview="true" data-pen-title="Counters CSS">See the Pen <a href="https://codepen.io/yuyazz/pen/NWxGzNg"><br />
Counters CSS</a> by blindDev (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<p>Vous trouverez différentes manière de faire sur le web, à vous de trouver celle qui conviendra à votre site !</p>
<p>Et voici pour finir un cas pratique: pour expliquer le fonctionnement d&rsquo;une fonctionnalité sur un site, on veut afficher la procédure à suivre sans que ca prenne trop de place. On crée donc un accordéon, un lien ou une div, sur lequel on clique pour dérouler les étapes à suivre. Ici au lieu d&rsquo;une simple liste, on numérote chaque étape pour plus de clarté.</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="css,result" data-user="yuyazz" data-slug-hash="YzpXMYQ" data-preview="true" data-pen-title="content:counter(li)">See the Pen <a href="https://codepen.io/yuyazz/pen/YzpXMYQ"><br />
content:counter(li)</a> by blindDev (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/counter-css/">counter css</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/counter-css/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Créer une Step Progress Bar</title>
		<link>https://www.copier-coller.com/creer-une-step-progress-bar/</link>
					<comments>https://www.copier-coller.com/creer-une-step-progress-bar/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sat, 10 Apr 2021 17:26:08 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=6243</guid>

					<description><![CDATA[<p>Ce genre de design est surtout visible sur les sites e-commerce ou les formulaires multi-étapes. On affiche des numéros, au clic sur un bouton on passe à l&#8217;étape suivante. Les numéros permettent de voir où l&#8217;on se situe. Voici donc un exemple simple, les numéros sont grisés par défaut (opacity;0.5) et au clic s&#8217;affichent à [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-une-step-progress-bar/">Créer une Step Progress Bar</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment créer une « step progress bar » ou barre de progression par étape</h2>
<p>Ce genre de design est surtout visible sur les sites e-commerce ou les formulaires multi-étapes. On affiche des numéros, au clic sur un bouton on passe à l&rsquo;étape suivante. Les numéros permettent de voir où l&rsquo;on se situe.</p>
<h3>Une progression en 4 étapes</h3>
<p>Voici donc un exemple simple, les numéros sont grisés par défaut (opacity;0.5) et au clic s&rsquo;affichent à pleine opacité (opacity:1). Les div sont également cachées, positionnées en absolute, et la suivante remplace la précédente. Ici on peut passer de la 1ère à la dernière position et inversement.</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="css,result" data-user="yuyazz" data-slug-hash="oNxOREM" data-preview="true" data-pen-title="Tab list">See the Pen <a href="https://codepen.io/yuyazz/pen/oNxOREM"><br />
Tab list</a> by blindDev (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<h3>Une progression en 3 étapes</h3>
<p>Et voici un exemple similaire en 3 étapes seulement</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="css,result" data-user="yuyazz" data-slug-hash="KKVmePo" data-preview="true" data-pen-title="Simple Jquery - Css Step Process">See the Pen <a href="https://codepen.io/yuyazz/pen/KKVmePo"><br />
Simple Jquery &#8211; Css Step Process</a> by blindDev (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-une-step-progress-bar/">Créer une Step Progress Bar</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/creer-une-step-progress-bar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Appliquer un effet au survol des liens</title>
		<link>https://www.copier-coller.com/appliquer-un-effet-au-survol-des-liens/</link>
					<comments>https://www.copier-coller.com/appliquer-un-effet-au-survol-des-liens/#comments</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sat, 10 Apr 2021 16:38:46 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=6239</guid>

					<description><![CDATA[<p>De plus en plus de sites utilisent cette technique de surlignement des liens, parfois débordant sur le mot lui même. Au survol, le surlignage recouvre tout ou partie du lien. Voici quelques exemples de surlignement et d&#8217;effets au survol : On utilise ici les propriétés css background-image, linear-gradient et transition. Pour le dernier, quelques propriétés [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/appliquer-un-effet-au-survol-des-liens/">Appliquer un effet au survol des liens</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment créer une petite animation sur le surlignement des liens ?</h2>
<p>De plus en plus de sites utilisent cette technique de surlignement des liens, parfois débordant sur le mot lui même. Au survol, le surlignage recouvre tout ou partie du lien.</p>
<p>Voici quelques exemples de surlignement et d&rsquo;effets au survol : On utilise ici les propriétés css background-image, linear-gradient et transition. Pour le dernier, quelques propriétés peu utilisées et méconnues : text-decoration-color, text-decoration-thickness;</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="css,result" data-user="yuyazz" data-slug-hash="GRjVXGK" data-preview="true" data-pen-title="Highlight simple hover effet">See the Pen <a href="https://codepen.io/yuyazz/pen/GRjVXGK"><br />
Highlight simple hover effet</a> by blindDev (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script></p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/appliquer-un-effet-au-survol-des-liens/">Appliquer un effet au survol des liens</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/appliquer-un-effet-au-survol-des-liens/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Utiliser la propriété shape outside en css</title>
		<link>https://www.copier-coller.com/utiliser-la-propriete-shape-outside-en-css/</link>
					<comments>https://www.copier-coller.com/utiliser-la-propriete-shape-outside-en-css/#comments</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sun, 31 May 2020 09:03:29 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=6170</guid>

					<description><![CDATA[<p>Si l&#8217;on se réfère à la page référence, « La propriété shape-outside définit une forme (qui peut ne pas être un rectangle) autour de laquelle le contenu en ligne devra « s&#8217;écouler ». Cette propriété permet donc de contourner un élément en épousant sa forme. On peut utiliser une valeur avec un mot clé Une valeur [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/utiliser-la-propriete-shape-outside-en-css/">Utiliser la propriété shape outside en css</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment utiliser la propriété shape outside</h2>
<p>Si l&rsquo;on se réfère à la <a href="https://developer.mozilla.org/fr/docs/Web/CSS/shape-outside">page référence</a>, « La propriété <strong><code>shape-outside</code></strong> définit une forme (qui peut ne pas être un rectangle) autour de laquelle le contenu en ligne devra « s&rsquo;écouler ». Cette propriété permet donc de contourner un élément en épousant sa forme. On peut utiliser une valeur avec un mot clé</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">shape-outside: none;<br/>shape-outside: margin-box;<br/>shape-outside: content-box;<br/>shape-outside: border-box;<br/>shape-outside: padding-box;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Une valeur utilisant une fonction :</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">/* Valeurs utilisant une fonction */<br/>shape-outside: circle();<br/>shape-outside: ellipse();<br/>shape-outside: inset(10px 10px 10px 10px);<br/>shape-outside: polygon(10px 10px, 20px 20px, 30px 30px);<br/>shape-outside: linear-gradient(45deg, rgba(255,255,255,0) 150px, red 150px);</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Une valeur de type url :</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">/* Valeur de type &lt;url&gt; */<br/>shape-outside: url(image.png);</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Ou enfin une valeur du type gradient :</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code"><br/>/* Valeur de type &lt;gradient&gt; */<br/>shape-outside: linear-gradient(45deg, rgba(255, 255, 255, 0) 150px, red 150px);</code></pre> <div class="code-embed-infos"> </div> </div>
<h3>Mise en forme et pratique</h3>
<p>L&rsquo;utilisation de cette propriété n&rsquo;est pas forcément simple. Ca l&rsquo;est si l&rsquo;on utilise une structure vraiment basique, comme suggéré sur la page css trick.</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">.element {  <br/>  float: left;<br/>  shape-outside: circle(50%);<br/>  width: 200px;<br/>  height: 200px;<br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Voici un exemple d&rsquo;application :</p>
<p><iframe style="width: 100%;" title="Simple shape outside circle example" src="https://codepen.io/yuyazz/embed/OJyKaPV?height=300&amp;theme-id=10187&amp;default-tab=html,result" height="300" frameborder="no" scrolling="no" allowfullscreen="allowfullscreen"><br />
See the Pen <a href="https://codepen.io/yuyazz/pen/OJyKaPV">Simple shape outside circle example</a> by blindDev<br />
(<a href="https://codepen.io/yuyazz">@yuyazz</a>) on <a href="https://codepen.io">CodePen</a>.<br />
</iframe></p>
<p>Le principe est ici assez simple :</p>
<p>On prend une image. A l&rsquo;origine celle-ci est carrée et fait 200px sur 200px. Je lui applique un border radius de 50% pour lui donner une apparence de cercle.</p>
<p>A la suite je place du texte dans une balise paragraphe.</p>
<p>J&rsquo;applique un float à l&rsquo;image, et la propriété <em>shape-outside: circle(50%); </em>Sans le border-radius, vous n&rsquo;obtiendrez pas l&rsquo;effet de contour. Le texte sera accolé à l&rsquo;image. Grâce au border-radius, l&rsquo;image apparaît arrondie et l&rsquo;effet du <em>shape-outside</em> est nettement visible.</p>
<h3>Utiliser shape-outside en imbriquant les éléments</h3>
<p>Dans le deuxième exemple, on utilise le même principe, sauf que l&rsquo;image est à l&rsquo;intérieur d&rsquo;une div, ainsi que le texte. Rien ne change ici, on cible également l&rsquo;image et on applique le même css. L&rsquo;effet fonctionne aussi. La difficulté survient lorsqu&rsquo;on essaye d&rsquo;utiliser cette propriété avec une mise en page en flex-box. L&rsquo;effet ne marche plus et il faut donc bien réfléchir à la structure de ses blocs pour l&rsquo;utiliser;</p>
<h3>Utilisation avancée de la propriété shape-outside</h3>
<p>Consultez ces deux références pour en savoir plus</p>
<p><a href="https://css-tricks.com/almanac/properties/s/shape-outside/">css-trick</a> et <a href="https://chromatichq.com/blog/breaking-box-shape-outside">chromaticq </a></p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/utiliser-la-propriete-shape-outside-en-css/">Utiliser la propriété shape outside en css</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/utiliser-la-propriete-shape-outside-en-css/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Créer un conteneur enfant plus large que le conteneur parent</title>
		<link>https://www.copier-coller.com/creer-un-conteneur-enfant-plus-large-que-le-conteneur-parent/</link>
					<comments>https://www.copier-coller.com/creer-un-conteneur-enfant-plus-large-que-le-conteneur-parent/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Fri, 15 May 2020 20:08:14 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=6152</guid>

					<description><![CDATA[<p>Voici un CodePen dans lequel je teste différentes solutions souvent citées sur stackoverflow. Le but est de faire en sorte que la div enfant déborde et prenne toute la largeur de l&#8217;écran. See the Pen Full Width Containers in Limited Width Parents by blogob (@yuyazz) on CodePen. La solution la plus pratique est la deuxième [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-un-conteneur-enfant-plus-large-que-le-conteneur-parent/">Créer un conteneur enfant plus large que le conteneur parent</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment faire en sorte que le conteneur enfant déborde de son parent ?</h2>
<p>Voici un CodePen dans lequel je teste différentes solutions souvent citées sur stackoverflow. Le but est de faire en sorte que la div enfant déborde et prenne toute la largeur de l&rsquo;écran.</p>
<p class="codepen" style="height: 265px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="265" data-theme-id="light" data-default-tab="result" data-user="yuyazz" data-slug-hash="BaoqBBq" data-preview="true" data-pen-title="Full Width Containers in Limited Width Parents">See the Pen <a href="https://codepen.io/yuyazz/pen/BaoqBBq"><br />
Full Width Containers in Limited Width Parents</a> by blogob (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://static.codepen.io/assets/embed/ei.js"></script></p>
<h3>La meilleur solution</h3>
<p>La solution la plus pratique est la deuxième dans mon exemple :</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">margin: 0 -100%;<br/>  padding: 0 100%;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>En appliquant ces valeurs à la div que l&rsquo;on veut étendre, la mise en page est respectée au redimensionnement de la fenêtre. Il n&rsquo;y donc rien de plus à faire pour le responsive. Tous les autres exemples requièrent l&rsquo;application de <em>media queries</em>, et aussi la nécessité de définir une largeur pour le bloc intérieur.</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-un-conteneur-enfant-plus-large-que-le-conteneur-parent/">Créer un conteneur enfant plus large que le conteneur parent</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/creer-un-conteneur-enfant-plus-large-que-le-conteneur-parent/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Un footer widgetisé et conditionnel</title>
		<link>https://www.copier-coller.com/un-footer-widgetise-et-conditionnel/</link>
					<comments>https://www.copier-coller.com/un-footer-widgetise-et-conditionnel/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Mon, 02 Mar 2020 18:00:50 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=5948</guid>

					<description><![CDATA[<p>Ce mémo est une adaptation de l&#8217;article posté par l&#8217;agence Themetry. A peu près tous les sites ont un footer disposant de blocs de contenu : des sous menus, des liens, un logo, un calendrier ou tout autre élément décoratif. C&#8217;est particulièrement vrai sur les thèmes premium des CMS tels que wordpress. Des sidebar ou [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-footer-widgetise-et-conditionnel/">Un footer widgetisé et conditionnel</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment disposer les widget du footer de façon optimale ?</h2>
<p>Ce mémo est une adaptation de l&rsquo;<a href="https://themetry.com/flexible-footer-widgets/">article posté par l&rsquo;agence Themetry</a>.</p>
<p>A peu près tous les sites ont un footer disposant de blocs de contenu : des sous menus, des liens, un logo, un calendrier ou tout autre élément décoratif. C&rsquo;est particulièrement vrai sur les thèmes premium des CMS tels que wordpress. Des <em>sidebar</em> ou « emplacement de widgets » sont crées en <em>backoffice</em> pour le footer et l&rsquo;utilisateur n&rsquo;a plus qu&rsquo;à y insérer les widgets de son choix.</p>
<p><img decoding="async" loading="lazy" class="alignnone size-full wp-image-2262" src="https://www.copier-coller.com/wp-content/uploads/2015/01/Utopiafooter.png" alt="" width="1335" height="346" srcset="https://www.copier-coller.com/wp-content/uploads/2015/01/Utopiafooter.png 1335w, https://www.copier-coller.com/wp-content/uploads/2015/01/Utopiafooter-300x78.png 300w, https://www.copier-coller.com/wp-content/uploads/2015/01/Utopiafooter-1024x265.png 1024w" sizes="(max-width: 1335px) 100vw, 1335px" /></p>
<h3>Bien occuper l&rsquo;espace</h3>
<p>Une des difficultés lorsque l&rsquo;on crée soi même un thème, c&rsquo;est de faire en sorte que ces widgets normalement répartis sur 4 colonnes maximum, soient toujours bien affichés, quelque soit le nombre de <em>sidebar</em> utilisés.</p>
<p>Par exemple, si on en utilise 4, ils se répartissent avec chacun 25 % de l&rsquo;espace disponible.</p>
<p>Avec 3 sidebar seulement, ils occupent chacun 33.33% de l&rsquo;espace. A deux, 50% et avec une seule sidebar, le widget occupe tout l&rsquo;espace.</p>
<p>Cela permet d&rsquo;éviter des espaces vides ou des décalages visuellement dérangeants.</p>
<h3>Si votre thème wordpress ne dispose pas d&#8217;emplacements de widgets</h3>
<p>Dans notre fichier <em>functions.php</em>, il faut repérer le hook <em>add_action( &lsquo;widgets_init&rsquo;, &#8230;)</em> qui contient en principe une ou plusieurs déclarations de sidebar. Ajoutez-y les 4 emplacements dédiés au footer.</p>
<div class="code-embed-wrapper"> <pre class="language-markup code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-markup code-embed-code">	register_sidebar( array(<br/>		&#039;name&#039;          =&gt; esc_html__( &#039;Footer 1&#039;, &#039;votre_text_domain&#039; ),<br/>		&#039;id&#039;            =&gt; &#039;footer-1&#039;,<br/>		&#039;description&#039;   =&gt; esc_html__( &#039;Add widgets here for the first footer column.&#039;, &#039;votre_text_domain&#039; ),<br/>		&#039;before_widget&#039; =&gt; &#039;&lt;section id=&quot;%1$s&quot; class=&quot;widget %2$s&quot;&gt;&#039;,<br/>		&#039;after_widget&#039;  =&gt; &#039;&lt;/section&gt;&#039;,<br/>		&#039;before_title&#039;  =&gt; &#039;&lt;h2 class=&quot;widget-title&quot;&gt;&#039;,<br/>		&#039;after_title&#039;   =&gt; &#039;&lt;/h2&gt;&#039;,<br/>	) );<br/>	register_sidebar( array(<br/>		&#039;name&#039;          =&gt; esc_html__( &#039;Footer 2&#039;, &#039;votre_text_domain&#039; ),<br/>		&#039;id&#039;            =&gt; &#039;footer-2&#039;,<br/>		&#039;description&#039;   =&gt; esc_html__( &#039;Add widgets here for the second footer column.&#039;, &#039;votre_text_domain&#039; ),<br/>		&#039;before_widget&#039; =&gt; &#039;&lt;section id=&quot;%1$s&quot; class=&quot;widget %2$s&quot;&gt;&#039;,<br/>		&#039;after_widget&#039;  =&gt; &#039;&lt;/section&gt;&#039;,<br/>		&#039;before_title&#039;  =&gt; &#039;&lt;h2 class=&quot;widget-title&quot;&gt;&#039;,<br/>		&#039;after_title&#039;   =&gt; &#039;&lt;/h2&gt;&#039;,<br/>	) );<br/>	register_sidebar( array(<br/>		&#039;name&#039;          =&gt; esc_html__( &#039;Footer 3&#039;, &#039;votre_text_domain&#039; ),<br/>		&#039;id&#039;            =&gt; &#039;footer-3&#039;,<br/>		&#039;description&#039;   =&gt; esc_html__( &#039;Add widgets here for the third footer column&#039;, &#039;votre_text_domain&#039; ),<br/>		&#039;before_widget&#039; =&gt; &#039;&lt;section id=&quot;%1$s&quot; class=&quot;widget %2$s&quot;&gt;&#039;,<br/>		&#039;after_widget&#039;  =&gt; &#039;&lt;/section&gt;&#039;,<br/>		&#039;before_title&#039;  =&gt; &#039;&lt;h2 class=&quot;widget-title&quot;&gt;&#039;,<br/>		&#039;after_title&#039;   =&gt; &#039;&lt;/h2&gt;&#039;,<br/>	) );<br/><br/>  register_sidebar( array(<br/>    &#039;name&#039;          =&gt; esc_html__( &#039;Footer area four&#039;, &#039;votre_text_domain&#039; ),<br/>    &#039;id&#039;            =&gt; &#039;footer-4&#039;,<br/>    &#039;description&#039;   =&gt; esc_html__( &#039;Add widgets here for the third footer column&#039;, &#039;votre_text_domain&#039; ),<br/>	&#039;before_widget&#039; =&gt; &#039;&lt;section id=&quot;%1$s&quot; class=&quot;widget %2$s&quot;&gt;&#039;,<br/>	&#039;after_widget&#039;  =&gt; &#039;&lt;/section&gt;&#039;,<br/>	&#039;before_title&#039;  =&gt; &#039;&lt;h2 class=&quot;widget-title&quot;&gt;&#039;,<br/>	&#039;after_title&#039;   =&gt; &#039;&lt;/h2&gt;&#039;,<br/>  ));</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Dans le fichier <em>footer.php</em>, il faut ensuite placer nos <em>sidebar</em> avec des conditions. Tout le bloc est inclus dans une condition, et chaque bloc également. Ceci permet justement un affichage optimal, en fonction du nombre de <em>sidebar</em> utilisés.</p>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">&lt;footer id=&quot;colophon&quot; class=&quot;site-footer&quot;&gt;<br/>		&lt;div class=&quot;site-info&quot;&gt;<br/>	&lt;?php if ( is_active_sidebar( &#039;footer-1&#039; ) || is_active_sidebar( &#039;footer-2&#039; ) || is_active_sidebar( &#039;footer-3&#039; ) || is_active_sidebar( &#039;footer-4&#039; ) ) : ?&gt;<br/>			&lt;div class=&quot;footer-widgets flex-container&quot;&gt;<br/>				&lt;?php if ( is_active_sidebar( &#039;footer-1&#039; ) ) : ?&gt;<br/>					&lt;div class=&quot;footer-widget-area&quot;&gt;<br/>						&lt;?php dynamic_sidebar( &#039;footer-1&#039; ); ?&gt;<br/>					&lt;/div&gt;<br/>				&lt;?php endif; ?&gt;<br/>				&lt;?php if ( is_active_sidebar( &#039;footer-2&#039; ) ) : ?&gt;<br/>					&lt;div class=&quot;footer-widget-area&quot;&gt;<br/>						&lt;?php dynamic_sidebar( &#039;footer-2&#039; ); ?&gt;<br/>					&lt;/div&gt;<br/>				&lt;?php endif; ?&gt;<br/>				&lt;?php if ( is_active_sidebar( &#039;footer-3&#039; ) ) : ?&gt;<br/>					&lt;div class=&quot;footer-widget-area&quot;&gt;<br/>						&lt;?php dynamic_sidebar( &#039;footer-3&#039; ); ?&gt;<br/>					&lt;/div&gt;<br/>				&lt;?php endif; ?&gt;<br/>				&lt;?php if ( is_active_sidebar( &#039;footer-4&#039; ) ) : ?&gt;<br/>					&lt;div class=&quot;footer-widget-area&quot;&gt;<br/>						&lt;?php dynamic_sidebar( &#039;footer-4&#039; ); ?&gt;<br/>					&lt;/div&gt;<br/>				&lt;?php endif; ?&gt;<br/>			&lt;/div&gt;&lt;!-- .footer-widgets --&gt;<br/>		&lt;?php endif; ?&gt;<br/>		&lt;/div&gt;&lt;!-- .site-info --&gt;<br/>	&lt;/footer&gt;&lt;!-- #colophon --&gt;</code></pre> <div class="code-embed-infos"> </div> </div>
<p>La magie se situe au niveau du css.</p>
<h3>Utiliser Flexbox</h3>
<div class="code-embed-wrapper"> <pre class="language-php code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-php code-embed-code">.footer-widgets {<br/><br/>    display: -webkit-box;<br/><br/>    display: -ms-flexbox;<br/><br/>    display: flex;<br/>   -webkit-box-orient: vertical;<br/>   -webkit-box-direction: normal;<br/>       -ms-flex-flow: column wrap;<br/>           flex-flow: column wrap;<br/>  }<br/><br/>.footer-widget-area {<br/>    width: 100%;<br/>    -webkit-box-sizing: border-box;<br/>            box-sizing: border-box;<br/>    -webkit-box-flex: 1;<br/>        -ms-flex-positive: 1;<br/>            flex-grow: 1;<br/>    padding:10px<br/>}<br/><br/>@media (min-width:992px){<br/>  .footer-widgets {<br/>    display: -webkit-box;<br/>    display: -ms-flexbox;<br/>    display: flex;<br/>    -webkit-box-orient: horizontal;<br/>    -webkit-box-direction: normal;<br/>        -ms-flex-flow: row wrap;<br/>            flex-flow: row wrap;<br/>  }<br/><br/>.footer-widget-area {<br/>    width: 25%;<br/>    -webkit-box-sizing: border-box;<br/>            box-sizing: border-box;<br/>    -webkit-box-flex: 1;<br/>        -ms-flex-positive: 1;<br/>            flex-grow: 1;<br/>    padding:10px<br/>}<br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>Ces quelques lignes de codes suffisent à répartir les widgets parfaitement quelque soit le nombre de sidebar utilisés.</p>
<h3>Utiliser les siblings</h3>
<p>Un autre système plus complexe mais intéressant à étuder et imaginé <a href="http://andr3.net/blog/post/142">André luis</a> puis <a href="http://lea.verou.me/2011/01/styling-children-based-on-their-number-with-css3/">Léa Verou </a>utilise le système de « parentalité » des éléments.</p>
<p>si un div est le premier enfant et le dernier enfant (c&rsquo;est-à-dire <code>.footer-widget-area:nth-child(1):nth-last-child(1)</code>), on peut supposer que c&rsquo;est le seul enfant du parent donc il prend toute la largeur disponible.</p>
<p>Si un div est le premier enfant et l&rsquo;avant-dernier enfant (c.-à-d. <code>.footer-widget-area:nth-child(1):nth-last-child(2)</code>), on peut supposer qu&rsquo;il y a deux colonnes, donc chaque élément prend 50% de la largeur disponible.</p>
<p>Etc&#8230;</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">.footer-widget-area {<br/>	border: 1px solid #000; /* For better visualization, not necessary */<br/>	float: left;<br/>}<br/><br/>/* One column */<br/>.footer-widget-area:nth-child(1):nth-last-child(1) {<br/>	float: none; /* No need for one column to float */<br/>	width: 100%; /* Not necessary, but better illustrates technique */<br/>}<br/><br/>/* Two columns */<br/>.footer-widget-area:nth-child(1):nth-last-child(2),<br/>.footer-widget-area:nth-child(2):nth-last-child(1) {<br/>	width: 50%;<br/>}<br/><br/>/* Three columns */<br/>.footer-widget-area:nth-child(1):nth-last-child(3),<br/>.footer-widget-area:nth-child(2):nth-last-child(2),<br/>.footer-widget-area:nth-child(3):nth-last-child(1) {<br/>	width: 33.3333%;<br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>&nbsp;</p>
<p><strong>Voici le résultat avec un exemple statique :</strong></p>
<p>Vous pouvez l&rsquo;ouvrir dans codepen pour l&rsquo;éditer, et notamment supprimer des blocs « <em>footer-widget-area</em> » pour voir le résultat.</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="html,result" data-user="yuyazz" data-slug-hash="xxbvLdr" data-preview="true" data-pen-title="Conditionnal Footer Widget Display ">See the Pen <a href="https://codepen.io/yuyazz/pen/xxbvLdr"><br />
Conditionnal Footer Widget Display </a> by yuyazz (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://static.codepen.io/assets/embed/ei.js"></script></p>
<p>N&rsquo;hésitez pas, si vous avez des idées d&rsquo;amélioration ou des corrections à apporter à ce tuto !</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/un-footer-widgetise-et-conditionnel/">Un footer widgetisé et conditionnel</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/un-footer-widgetise-et-conditionnel/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Une page web oblique</title>
		<link>https://www.copier-coller.com/une-page-web-oblique/</link>
					<comments>https://www.copier-coller.com/une-page-web-oblique/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Sun, 01 Mar 2020 18:00:36 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=5915</guid>

					<description><![CDATA[<p>Voici un exemple de page oblique crée uniquement en html/css. C&#8217;est le genre de design que l&#8217;on voit souvent sur des images, portfolio ou présentation de thèmes. Rarement codées puisque très difficiles à maintenir, notamment le côté responsive qui est impossible à réaliser, ca reste néanmoins un exercice intéressant. Le rendu en tout cas est [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/une-page-web-oblique/">Une page web oblique</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment créer une page html oblique ?</h2>
<p>Voici un exemple de page oblique crée uniquement en html/css. C&rsquo;est le genre de design que l&rsquo;on voit souvent sur des images, portfolio ou présentation de thèmes. Rarement codées puisque très difficiles à maintenir, notamment le côté responsive qui est impossible à réaliser, ca reste néanmoins un exercice intéressant. Le rendu en tout cas est impressionnant. Je pars ici de l&rsquo;exemple de bouton imaginé par l&rsquo;auteur de ce codepen: https://codepen.io/Stockin/pen/mzydLz*/</p>
<p>Cliquez sur « Edit on CodePen » pour voir le résultat. Le fonction rotate, skew et translate font tout le travail, et elles s&rsquo;activent dans l&rsquo;exemple au delà de 1200px.</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="css,result" data-user="yuyazz" data-slug-hash="WNbJaoz" data-preview="true" data-pen-title="Oblik Web Page pure css">See the Pen <a href="https://codepen.io/yuyazz/pen/WNbJaoz"><br />
Oblik Web Page pure css</a> by yuyazz (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://static.codepen.io/assets/embed/ei.js"></script></p>
<p>N&rsquo;hésitez pas, si vous avez des idées d&rsquo;amélioration ou des corrections à apporter à ce tuto !</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/une-page-web-oblique/">Une page web oblique</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/une-page-web-oblique/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Flex, un exemple de grille</title>
		<link>https://www.copier-coller.com/flex-un-exemple-de-grille/</link>
					<comments>https://www.copier-coller.com/flex-un-exemple-de-grille/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Fri, 28 Feb 2020 06:27:06 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=5911</guid>

					<description><![CDATA[<p>Voici un exemple de grille flex, trouvée sur le CodePen de Ruslan Pivovarov. Reprenant la logique bootstrap, elle comporte la base d&#8217;une disposition en 12 colonnes et permet de structurer sa page très facilement. Pour l&#8217;utiliser, il faut se servir du « container » pour englober son contenu. A l&#8217;intérieur on glisse autant de row que nécessaire. [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/flex-un-exemple-de-grille/">Flex, un exemple de grille</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Créer une grille à partir de la propriété display: flex</h2>
<p>Voici un exemple de grille flex, trouvée sur le CodePen de <a class="ItemTitle_ownerLink-tMhWC" href="https://codepen.io/mrspok407">Ruslan Pivovarov.</a></p>
<p>Reprenant la logique bootstrap, elle comporte la base d&rsquo;une disposition en 12 colonnes et permet de structurer sa page très facilement. Pour l&rsquo;utiliser, il faut se servir du « container » pour englober son contenu. A l&rsquo;intérieur on glisse autant de row que nécessaire. Et dans celles-ci, on glisse nos colonnes en se servant des classes flex-col-xs, flex-col-sm, flex-col-md, et flex-col-lg. Ce code peut être modifié, amélioré et on peut y ajouter toutes les autres classes utiles de bootstrap pour en faire son propre framework css de base !</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">.flex-container {<br/>  box-sizing: border-box;<br/>  margin: 0 auto;<br/>  padding: 0 1em;<br/>}<br/>@media (min-width: 540px) {<br/>  .flex-container {<br/>    max-width: 540px;<br/>  }<br/>}<br/>@media (min-width: 768px) {<br/>  .flex-container {<br/>    max-width: 768px;<br/>  }<br/>}<br/>@media (min-width: 992px) {<br/>  .flex-container {<br/>    max-width: 992px;<br/>  }<br/>}<br/>@media (min-width: 1200px) {<br/>  .flex-container {<br/>    max-width: 1200px;<br/>  }<br/>}<br/><br/>.flex-row {<br/>  box-sizing: border-box;<br/>  display: flex;<br/>  flex-wrap: wrap;<br/>  margin-bottom: 1em;<br/>}<br/><br/>.flex-row--align-v-center {<br/>  align-items: center;<br/>}<br/><br/>.flex-row--align-v-bottom {<br/>  align-items: flex-end;<br/>}<br/><br/>.flex-row--align-h-center {<br/>  justify-content: center;<br/>}<br/><br/>.flex-row--align-h-right {<br/>  justify-content: flex-end;<br/>}<br/><br/>.flex-row--reverse {<br/>  flex-direction: row-reverse;<br/>}<br/><br/>.flex-col-xs-1,<br/>.flex-col-sm-1,<br/>.flex-col-md-1,<br/>.flex-col-lg-1 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-1 {<br/>    max-width: calc(100% * (1 / 12));<br/>    width: calc(100% * (1 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-1 {<br/>    max-width: calc(100% * (1 / 12));<br/>    width: calc(100% * (1 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-1 {<br/>    max-width: calc(100% * (1 / 12));<br/>    width: calc(100% * (1 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-1 {<br/>    max-width: calc(100% * (1 / 12));<br/>    width: calc(100% * (1 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-2,<br/>.flex-col-sm-2,<br/>.flex-col-md-2,<br/>.flex-col-lg-2 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-2 {<br/>    max-width: calc(100% * (2 / 12));<br/>    width: calc(100% * (2 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-2 {<br/>    max-width: calc(100% * (2 / 12));<br/>    width: calc(100% * (2 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-2 {<br/>    max-width: calc(100% * (2 / 12));<br/>    width: calc(100% * (2 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-2 {<br/>    max-width: calc(100% * (2 / 12));<br/>    width: calc(100% * (2 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-3,<br/>.flex-col-sm-3,<br/>.flex-col-md-3,<br/>.flex-col-lg-3 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-3 {<br/>    max-width: calc(100% * (3 / 12));<br/>    width: calc(100% * (3 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-3 {<br/>    max-width: calc(100% * (3 / 12));<br/>    width: calc(100% * (3 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-3 {<br/>    max-width: calc(100% * (3 / 12));<br/>    width: calc(100% * (3 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-3 {<br/>    max-width: calc(100% * (3 / 12));<br/>    width: calc(100% * (3 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-4,<br/>.flex-col-sm-4,<br/>.flex-col-md-4,<br/>.flex-col-lg-4 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-4 {<br/>    max-width: calc(100% * (4 / 12));<br/>    width: calc(100% * (4 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-4 {<br/>    max-width: calc(100% * (4 / 12));<br/>    width: calc(100% * (4 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-4 {<br/>    max-width: calc(100% * (4 / 12));<br/>    width: calc(100% * (4 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-4 {<br/>    max-width: calc(100% * (4 / 12));<br/>    width: calc(100% * (4 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-5,<br/>.flex-col-sm-5,<br/>.flex-col-md-5,<br/>.flex-col-lg-5 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-5 {<br/>    max-width: calc(100% * (5 / 12));<br/>    width: calc(100% * (5 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-5 {<br/>    max-width: calc(100% * (5 / 12));<br/>    width: calc(100% * (5 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-5 {<br/>    max-width: calc(100% * (5 / 12));<br/>    width: calc(100% * (5 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-5 {<br/>    max-width: calc(100% * (5 / 12));<br/>    width: calc(100% * (5 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-6,<br/>.flex-col-sm-6,<br/>.flex-col-md-6,<br/>.flex-col-lg-6 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-6 {<br/>    max-width: calc(100% * (6 / 12));<br/>    width: calc(100% * (6 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-6 {<br/>    max-width: calc(100% * (6 / 12));<br/>    width: calc(100% * (6 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-6 {<br/>    max-width: calc(100% * (6 / 12));<br/>    width: calc(100% * (6 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-6 {<br/>    max-width: calc(100% * (6 / 12));<br/>    width: calc(100% * (6 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-7,<br/>.flex-col-sm-7,<br/>.flex-col-md-7,<br/>.flex-col-lg-7 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-7 {<br/>    max-width: calc(100% * (7 / 12));<br/>    width: calc(100% * (7 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-7 {<br/>    max-width: calc(100% * (7 / 12));<br/>    width: calc(100% * (7 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-7 {<br/>    max-width: calc(100% * (7 / 12));<br/>    width: calc(100% * (7 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-7 {<br/>    max-width: calc(100% * (7 / 12));<br/>    width: calc(100% * (7 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-8,<br/>.flex-col-sm-8,<br/>.flex-col-md-8,<br/>.flex-col-lg-8 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-8 {<br/>    max-width: calc(100% * (8 / 12));<br/>    width: calc(100% * (8 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-8 {<br/>    max-width: calc(100% * (8 / 12));<br/>    width: calc(100% * (8 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-8 {<br/>    max-width: calc(100% * (8 / 12));<br/>    width: calc(100% * (8 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-8 {<br/>    max-width: calc(100% * (8 / 12));<br/>    width: calc(100% * (8 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-9,<br/>.flex-col-sm-9,<br/>.flex-col-md-9,<br/>.flex-col-lg-9 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-9 {<br/>    max-width: calc(100% * (9 / 12));<br/>    width: calc(100% * (9 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-9 {<br/>    max-width: calc(100% * (9 / 12));<br/>    width: calc(100% * (9 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-9 {<br/>    max-width: calc(100% * (9 / 12));<br/>    width: calc(100% * (9 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-9 {<br/>    max-width: calc(100% * (9 / 12));<br/>    width: calc(100% * (9 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-10,<br/>.flex-col-sm-10,<br/>.flex-col-md-10,<br/>.flex-col-lg-10 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-10 {<br/>    max-width: calc(100% * (10 / 12));<br/>    width: calc(100% * (10 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-10 {<br/>    max-width: calc(100% * (10 / 12));<br/>    width: calc(100% * (10 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-10 {<br/>    max-width: calc(100% * (10 / 12));<br/>    width: calc(100% * (10 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-10 {<br/>    max-width: calc(100% * (10 / 12));<br/>    width: calc(100% * (10 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-11,<br/>.flex-col-sm-11,<br/>.flex-col-md-11,<br/>.flex-col-lg-11 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-11 {<br/>    max-width: calc(100% * (11 / 12));<br/>    width: calc(100% * (11 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-11 {<br/>    max-width: calc(100% * (11 / 12));<br/>    width: calc(100% * (11 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-11 {<br/>    max-width: calc(100% * (11 / 12));<br/>    width: calc(100% * (11 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-11 {<br/>    max-width: calc(100% * (11 / 12));<br/>    width: calc(100% * (11 / 12));<br/>  }<br/>}<br/><br/>.flex-col-xs-12,<br/>.flex-col-sm-12,<br/>.flex-col-md-12,<br/>.flex-col-lg-12 {<br/>  box-sizing: border-box;<br/>  padding: 1em;<br/>  width: 100%;<br/>}<br/><br/>@media (min-width: 540px) {<br/>  .flex-col-xs-12 {<br/>    max-width: calc(100% * (12 / 12));<br/>    width: calc(100% * (12 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 768px) {<br/>  .flex-col-sm-12 {<br/>    max-width: calc(100% * (12 / 12));<br/>    width: calc(100% * (12 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 992px) {<br/>  .flex-col-md-12 {<br/>    max-width: calc(100% * (12 / 12));<br/>    width: calc(100% * (12 / 12));<br/>  }<br/>}<br/><br/>@media (min-width: 1200px) {<br/>  .flex-col-lg-12 {<br/>    max-width: calc(100% * (12 / 12));<br/>    width: calc(100% * (12 / 12));<br/>  }<br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>l&rsquo;original est codée en scss</p>
<div class="code-embed-wrapper"> <pre class="language-css code-embed-pre"  data-start="1" data-line-offset="0"><code class="language-css code-embed-code">$device-xs: 540px;<br/>$device-sm: 768px;<br/>$device-md: 992px;<br/>$device-lg: 1200px;<br/>.flex-container {<br/>  box-sizing: border-box;<br/>  margin: 0 auto;<br/>  padding: 0 1em;<br/>  @media (min-width: $device-xs) {<br/>    max-width: $device-xs;<br/>  }<br/>  @media (min-width: $device-sm) {<br/>    max-width: $device-sm;<br/>  }<br/>  @media (min-width: $device-md) {<br/>    max-width: $device-md;<br/>  }<br/>  @media (min-width: $device-lg) {<br/>    max-width: $device-lg;<br/>  }<br/>}<br/><br/>.flex-row {<br/>  box-sizing: border-box;<br/>  display: flex;<br/>  flex-wrap: wrap;<br/>  margin-bottom: 1em;<br/>}<br/><br/>.flex-row--align-v-center {<br/>  align-items: center;<br/>}<br/><br/>.flex-row--align-v-bottom {<br/>  align-items: flex-end;<br/>}<br/><br/>.flex-row--align-h-center {<br/>  justify-content: center;<br/>}<br/><br/>.flex-row--align-h-right {<br/>  justify-content: flex-end;<br/>}<br/><br/>.flex-row--reverse {<br/>  flex-direction: row-reverse;<br/>}<br/><br/>@for $i from 1 through 12 {<br/>  .flex-col-xs-#{$i},<br/>  .flex-col-sm-#{$i},<br/>  .flex-col-md-#{$i},<br/>  .flex-col-lg-#{$i} {<br/>    box-sizing: border-box;<br/>    padding: 1em;<br/>    width: 100%;<br/>  }<br/>  .flex-col-xs-#{$i} {<br/>    @media (min-width: $device-xs) {<br/>      max-width: calc(100% * (#{$i} / 12));<br/>      width: calc(100% * (#{$i} / 12));<br/>    }<br/>  }<br/>  .flex-col-sm-#{$i} {<br/>    @media (min-width: $device-sm) {<br/>      max-width: calc(100% * (#{$i} / 12));<br/>      width: calc(100% * (#{$i} / 12));<br/>    }<br/>  }<br/>  .flex-col-md-#{$i} {<br/>    @media (min-width: $device-md) {<br/>      max-width: calc(100% * (#{$i} / 12));<br/>      width: calc(100% * (#{$i} / 12));<br/>    }<br/>  }<br/>  .flex-col-lg-#{$i} {<br/>    @media (min-width: $device-lg) {<br/>      max-width: calc(100% * (#{$i} / 12));<br/>      width: calc(100% * (#{$i} / 12));<br/>    }<br/>  }<br/>}</code></pre> <div class="code-embed-infos"> </div> </div>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/flex-un-exemple-de-grille/">Flex, un exemple de grille</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/flex-un-exemple-de-grille/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Créer un accordéon accessible pour vos infographies</title>
		<link>https://www.copier-coller.com/creer-un-accordeon-accessible-pour-vos-infographies/</link>
					<comments>https://www.copier-coller.com/creer-un-accordeon-accessible-pour-vos-infographies/#respond</comments>
		
		<dc:creator><![CDATA[copier coller]]></dc:creator>
		<pubDate>Wed, 26 Feb 2020 18:00:31 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://www.copier-coller.com/?p=5924</guid>

					<description><![CDATA[<p>Les infographies sont partout, du bloc au site plus sérieux, et nous sommes peu nombreux à rendre cette image descriptive accessible. Pour rendre une infographie ou toute autre image complexe accessibles, une simple alternative textuelle ne suffit pas. Les infographies sont là généralement pour regrouper tout un tas d&#8217;informations de manière ludique visuelle et concise. [...]</p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-un-accordeon-accessible-pour-vos-infographies/">Créer un accordéon accessible pour vos infographies</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Comment rendre des infographies accessibles ?</h2>
<p>Les infographies sont partout, du bloc au site plus sérieux, et nous sommes peu nombreux à rendre cette image descriptive accessible. Pour rendre une infographie ou toute autre image complexe accessibles, une simple alternative textuelle ne suffit pas. Les infographies sont là généralement pour regrouper tout un tas d&rsquo;informations de manière ludique visuelle et concise. En terme d&rsquo;accessibilité il est donc recommandé d&rsquo;afficher à la suite du document un texte descriptif qui reprend toutes les informations présente dans l&rsquo;image. Une façon discrète de la faire est d&rsquo;utiliser un élément « accordéon ». Au clic sur le lien ou le bouton, le texte de description se déroule et se referme, ne perturbant pas la structure générale de la page.</p>
<h3>Un accordéon non accessible, en css uniquement.</h3>
<p>Voici un exemple d&rsquo;accordéon non accessible. utilisant une checkbox pour plier/déplier le contenu.</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="html,result" data-user="yuyazz" data-slug-hash="JjoBvaZ" data-preview="true" data-pen-title="Accordion only css (checkbox)">See the Pen <a href="https://codepen.io/yuyazz/pen/JjoBvaZ"><br />
Accordion only css (checkbox)</a> by yuyazz (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://static.codepen.io/assets/embed/ei.js"></script><br />
C&rsquo;est un simple « bouton » à placer sous l&rsquo;infographie, qui reprendrait donc les informations présentes sur l&rsquo;image. Au clic, le texte descriptif s&rsquo;ouvre. On évite donc le <em>display:none </em>ou <em>visiblity:hidden</em> qui ne sont pas recommandés d&rsquo;un point de vue SEO. <a href="https://www.rebootonline.com/blog/hidden-text-experiment/">Tous les tests menés par certains développeurs</a> tendent à prouver que Google lit bien les éléments cachés via ces attributs, au moment du chargement de la page. Par contre, selon ces tests, et google le confirme, les éléments cachés en « <em>display:none</em> » ou via le jabascript sont largement moins bien considérés que les autres éléments présents sur la page.</p>
<p>La technique consiste donc à utiliser la notion de max-height. On joue sur la hauteur pour cacher ou dévoiler le texte.</p>
<h3>La balise html « details »</h3>
<p>On peut aussi utiliser la balise native &lt;details&gt;&lt;details&gt; qui produit le même effet sans une ligne de code css ou js ! Malheureusement IE et Edge à l&rsquo;heure actuelle ne comprennent pas cette balise !</p>
<h3>Un accordéon accessible avec les attributs aria-hidden</h3>
<p>Voici le même accordéon, rendu accessible via javascript. La partie html et css sont classiques,  On injecte les attributs aria-hidden:true ou false en javascript au clic sur le bouton.</p>
<p>Au lieu de jouer sur la notion de « checked » sur l&rsquo;input checkbox, on injecte ici les classes « expanded&rsquo; ou &lsquo;open » qui vont jouer exactement le même rôle au niveau du css.</p>
<p>Au niveau des balises aria, le bouton reçoit l&rsquo;attribut <em>aria-expanded= »false »</em> ou <em>aria-expanded= »true »</em> en fonction du clic.</p>
<p>Le bloc de texte reçoit quand à lui l&rsquo;attribut <em>aria-hidden= »false »</em> ou <em>aria-hidden= »true »</em> en fonction du clic.</p>
<p>&nbsp;</p>
<p class="codepen" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-height="300" data-theme-id="10187" data-default-tab="html,result" data-user="yuyazz" data-slug-hash="mdyoZLo" data-preview="true" data-pen-title="Accessible accordion with javascript">See the Pen <a href="https://codepen.io/yuyazz/pen/mdyoZLo"><br />
Accessible accordion with javascript</a> by yuyazz (<a href="https://codepen.io/yuyazz">@yuyazz</a>)<br />
on <a href="https://codepen.io">CodePen</a>.</p>
<p><script async src="https://static.codepen.io/assets/embed/ei.js"></script></p>
<h3>Autres Ressources</h3>
<p>Vous trouverez d&rsquo;autres exemples valides sur les pages suivantes:</p>
<p><a href="https://scottaohara.github.io/a11y_accordions/">a11y_accordions</a></p>
<p><a href="https://www.w3.org/TR/wai-aria-practices/examples/accordion/accordion.html">W3C</a></p>
<p><a href="https://www.hassellinclusion.com/blog/accessible-accordion-pattern/">Accessible accordion pattern</a></p>
<p><a href="https://inclusive-components.design/collapsible-sections/">Collapsible sections</a></p>
<p>The post <a rel="nofollow" href="https://www.copier-coller.com/creer-un-accordeon-accessible-pour-vos-infographies/">Créer un accordéon accessible pour vos infographies</a> appeared first on <a rel="nofollow" href="https://www.copier-coller.com">Copier coller</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.copier-coller.com/creer-un-accordeon-accessible-pour-vos-infographies/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
