<?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>Tibow Webdesign</title>
	<atom:link href="https://thibautsoufflet.fr/feed/" rel="self" type="application/rss+xml" />
	<link>https://thibautsoufflet.fr/</link>
	<description>Développeur spécialiste WordPress à Bordeaux</description>
	<lastBuildDate>Mon, 13 Apr 2026 16:04:56 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://thibautsoufflet.fr/wp-content/uploads/2025/05/cropped-favicon-tibowwebdesign-32x32.png</url>
	<title>Tibow Webdesign</title>
	<link>https://thibautsoufflet.fr/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Dark Patterns : quand le design vous manipule (sans que vous le sachiez)</title>
		<link>https://thibautsoufflet.fr/blog/dark-patterns-web-manipulation/</link>
					<comments>https://thibautsoufflet.fr/blog/dark-patterns-web-manipulation/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Sun, 12 Apr 2026 13:11:58 +0000</pubDate>
				<category><![CDATA[Actualités]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7900</guid>

					<description><![CDATA[<p>Vous avez déjà voulu annuler un abonnement et passé 10 minutes à chercher le bouton ? Coché sans le vouloir une assurance en réservant un billet d'avion ? Accepté des cookies parce que le bouton "Refuser" était introuvable ? Ce n'est pas un hasard. C'est du design. Dans cet article, on va décortiquer les dark [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/dark-patterns-web-manipulation/">Dark Patterns : quand le design vous manipule (sans que vous le sachiez)</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
.dp-intro-box{background:#f7f6f3;border-left:4px solid #e8593c;border-radius:0 8px 8px 0;padding:1.1rem 1.3rem;margin:1.2rem 0 1.8rem;color:#5a5a56}
.dp-pattern-card{border:1px solid rgba(0,0,0,.1);border-radius:10px;overflow:hidden;margin:1.8rem 0;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.dp-pattern-header{display:flex;align-items:center;gap:.75rem;padding:.9rem 1.1rem;background:#f7f6f3;border-bottom:1px solid rgba(0,0,0,.08);font-family:sans-serif}
.dp-pattern-num{width:30px;height:30px;border-radius:50%;background:#e8593c;color:#fff;font-weight:700;font-size:.9rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dp-pattern-title{font-weight:700;font-size:.97rem;font-family:sans-serif}
.dp-pattern-subtitle{font-size:.75rem;color:#8a8a84;margin-top:2px;font-family:sans-serif}
.dp-pattern-body{padding:1.1rem 1.3rem}
.dp-pattern-body p{font-size:.93rem;margin-bottom:.75rem;line-height:1.7}
.dp-mockup-wrap{background:#dbd9d2;border-radius:8px;padding:.9rem;margin:.9rem 0;display:flex;justify-content:center;align-items:center}
.dp-badge-bad{display:inline-block;background:#fcebeb;color:#a32d2d;font-family:sans-serif;font-size:10px;font-weight:700;padding:3px 8px;border-radius:20px;margin-bottom:5px}
.dp-badge-ok{display:inline-block;background:#eaf3de;color:#3b6d11;font-family:sans-serif;font-size:10px;font-weight:700;padding:3px 8px;border-radius:20px;margin-bottom:5px}
.dp-annotation{display:flex;align-items:center;gap:5px;font-family:sans-serif;font-size:11px;color:#a32d2d;font-weight:600;margin:3px 0 7px}
.dp-annotation::before{content:"&#x261d;";font-size:13px}
.dp-compare-row{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin:.9rem 0}
.dp-compare-col{border-radius:8px;padding:.85rem;font-family:sans-serif;font-size:.82rem;line-height:1.5}
.dp-compare-col.bad{background:#fcebeb;border:1px solid #f09595}
.dp-compare-col.good{background:#eaf3de;border:1px solid #c0dd97}
.dp-compare-col .dp-col-label{font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem}
.dp-compare-col.bad .dp-col-label{color:#a32d2d}
.dp-compare-col.good .dp-col-label{color:#3b6d11}
.dp-compare-col p{margin:0;color:#5a5a56}
.dp-site-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.9rem;margin:1.1rem 0}
.dp-site-card{border:1px solid rgba(0,0,0,.1);border-radius:10px;padding:.95rem;font-family:sans-serif;font-size:.82rem;background:#fff}
.dp-site-card .dp-site-name{font-weight:700;font-size:.95rem;margin-bottom:3px}
.dp-site-card .dp-site-pattern{display:inline-block;font-size:.72rem;background:#faeeda;color:#854f0b;padding:2px 8px;border-radius:20px;font-weight:600;margin-bottom:5px}
.dp-site-card p{color:#5a5a56;margin:0;line-height:1.5}
.dp-law-box{background:#fcebeb;border-left:4px solid #e24b4a;border-radius:0 8px 8px 0;padding:1.1rem 1.3rem;margin:1.2rem 0;font-family:sans-serif;font-size:.88rem}
.dp-law-box .dp-law-title{font-weight:700;font-size:.95rem;color:#a32d2d;margin-bottom:.45rem}
.dp-law-box ul{margin:0;padding-left:1.2rem;color:#5a5a56}
.dp-law-box li{margin-bottom:.28rem}
.dp-tips-box{background:#eaf3de;border-left:4px solid #639922;border-radius:0 8px 8px 0;padding:1.1rem 1.3rem;margin:1.2rem 0;font-family:sans-serif;font-size:.88rem}
.dp-tips-box .dp-tips-title{font-weight:700;font-size:.95rem;color:#3b6d11;margin-bottom:.45rem}
.dp-tips-box ul{margin:0;padding-left:1.2rem;color:#5a5a56}
.dp-tips-box li{margin-bottom:.28rem}

/* Mockup components */
.dp-cookie-mockup{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;max-width:500px;padding:1.1rem;font-family:sans-serif;font-size:12px;box-shadow:0 4px 18px rgba(0,0,0,.13)}
.dp-cookie-title{font-weight:700;font-size:13px;margin-bottom:5px}
.dp-cookie-text{color:#555;margin-bottom:12px;line-height:1.5}
.dp-cookie-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.dp-btn-accept{background:#0057b7;color:#fff;border:none;padding:8px 18px;border-radius:4px;font-size:12px;font-weight:700;cursor:pointer;font-family:sans-serif}
.dp-btn-refuse{background:none;color:#aaa;border:none;padding:8px 6px;font-size:10px;cursor:pointer;font-family:sans-serif;text-decoration:underline}
.dp-btn-custom{background:none;color:#888;border:1px solid #ccc;padding:7px 12px;border-radius:4px;font-size:10px;cursor:pointer;font-family:sans-serif}
.dp-cookie-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:.9rem 0;align-items:start}
.dp-urgency-mockup{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;max-width:360px;padding:1.1rem;font-family:sans-serif;font-size:12px;box-shadow:0 4px 18px rgba(0,0,0,.13)}
.dp-hotel-name{font-weight:700;font-size:13px;margin-bottom:3px}
.dp-hotel-price{font-size:19px;font-weight:700;color:#cc0000}
.dp-urgency-msg{background:#fff3cd;border-left:3px solid #f6a623;padding:6px 9px;border-radius:4px;font-size:11px;margin:7px 0;color:#7a5200}
.dp-seen-msg{color:#888;font-size:10px;margin:4px 0}
.dp-btn-book{display:block;width:100%;background:#cc0000;color:#fff;border:none;padding:9px;border-radius:4px;font-size:12px;font-weight:700;cursor:pointer;font-family:sans-serif;text-align:center;margin-top:9px}
.dp-popup-overlay{background:rgba(0,0,0,.42);border-radius:8px;padding:1.3rem;display:flex;align-items:center;justify-content:center;min-height:200px}
.dp-popup-box{background:#fff;border-radius:10px;padding:1.3rem;max-width:320px;width:100%;font-family:sans-serif;text-align:center;box-shadow:0 8px 28px rgba(0,0,0,.18)}
.dp-popup-box h4{font-size:14px;font-weight:700;margin-bottom:7px}
.dp-popup-box p{font-size:11px;color:#666;margin-bottom:12px;line-height:1.5}
.dp-btn-yes{display:block;width:100%;background:#e8593c;color:#fff;border:none;padding:9px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;font-family:sans-serif;margin-bottom:7px}
.dp-btn-no{display:block;width:100%;background:none;color:#aaa;border:none;font-size:10px;cursor:pointer;font-family:sans-serif;font-style:italic}
.dp-cart-mockup{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;max-width:420px;padding:.95rem;font-family:sans-serif;font-size:12px;box-shadow:0 4px 18px rgba(0,0,0,.13)}
.dp-cart-title{font-weight:700;font-size:13px;margin-bottom:9px;border-bottom:1px solid #eee;padding-bottom:7px}
.dp-cart-item{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid #f0f0f0;align-items:center}
.dp-cart-item.sneaky{background:#fff8e1;margin:0 -.95rem;padding:6px .95rem;position:relative}
.dp-cart-item.sneaky::before{content:"Ajouté auto.";position:absolute;top:0;right:0;font-size:9px;background:#f6a623;color:#7a5200;padding:2px 7px;border-radius:0 0 0 6px;font-weight:700}
.dp-cart-total{display:flex;justify-content:space-between;font-weight:700;font-size:14px;margin-top:9px}
.dp-roach-mockup{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;max-width:400px;font-family:sans-serif;font-size:11px;box-shadow:0 4px 18px rgba(0,0,0,.13);overflow:hidden}
.dp-roach-step{padding:.8rem 1rem;border-bottom:1px solid #eee}
.dp-roach-step:last-child{border-bottom:none}
.dp-step-header{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.dp-step-num{background:#eee;color:#888;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:10px;flex-shrink:0}
.dp-step-num.active{background:#0057b7;color:#fff}
.dp-step-label{font-weight:700;font-size:12px}
.dp-step-sub{color:#888;font-size:10px}
.dp-step-btns{display:flex;gap:7px;margin-top:7px}
.dp-btn-keep{background:#0057b7;color:#fff;border:none;padding:6px 12px;border-radius:4px;font-size:11px;font-weight:700;cursor:pointer;font-family:sans-serif}
.dp-btn-cancel-sm{background:none;border:none;color:#bbb;font-size:9px;cursor:pointer;font-family:sans-serif;text-decoration:underline;align-self:center}
.dp-fc-mockup{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;max-width:380px;padding:1.1rem;font-family:sans-serif;font-size:12px;box-shadow:0 4px 18px rgba(0,0,0,.13);text-align:center}
.dp-trial-badge{display:inline-block;background:#eaf3de;color:#3b6d11;font-weight:700;font-size:10px;padding:3px 11px;border-radius:20px;margin-bottom:9px}
.dp-fc-mockup h4{font-size:15px;font-weight:700;margin-bottom:5px}
.dp-fc-sub{font-size:11px;color:#888;margin-bottom:9px}
.dp-fc-info{background:#f7f6f3;border-radius:6px;padding:9px;text-align:left;margin-bottom:11px}
.dp-fc-line{font-size:10px;color:#666;margin-bottom:2px;display:flex;align-items:center;gap:5px}
.dp-btn-start{display:block;width:100%;background:#e8593c;color:#fff;border:none;padding:10px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;font-family:sans-serif;margin-bottom:6px}
.dp-fc-legal{font-size:9px;color:#bbb;line-height:1.4}
@media(max-width:540px){.dp-cookie-grid,.dp-compare-row{grid-template-columns:1fr}.dp-site-grid{grid-template-columns:1fr}}
</style>



<p>Vous avez déjà voulu annuler un abonnement et passé 10 minutes à chercher le bouton ? Coché sans le vouloir une assurance en réservant un billet d'avion ? Accepté des cookies parce que le bouton "Refuser" était introuvable ? Ce n'est pas un hasard. C'est du design.</p>



<p>Dans cet article, on va décortiquer les <strong>dark patterns</strong> : ce que c'est, comment les reconnaître, et quels sites bien connus en font usage. Avec des exemples visuels pour que ça ne passe plus jamais inaperçu.</p>



<h2 class="wp-block-heading">Qu'est-ce qu'un dark pattern ?</h2>



<p>Le terme <strong>dark pattern</strong> (ou <em>deceptive design</em> en anglais) a été inventé en <strong>2010 par Harry Brignull</strong>, designer UX britannique. Sa définition est simple :</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-background" style="background-color:#e6f1fb"><strong><mark style="background-color:#ffffff" class="has-inline-color"><em>Définition</em></mark></strong><br><br><strong>Un dark pattern est une interface utilisateur délibérément conçue pour vous faire faire quelque chose que vous n'auriez pas fait de vous-même</strong> — acheter, s'inscrire, accepter, rester abonné… en exploitant vos biais cognitifs plutôt qu'en vous informant clairement.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>En français, on parle aussi d'<strong>interface truquée</strong>, de <strong>design trompeur</strong> ou de <strong>pratique commerciale trompeuse</strong>. Ces techniques sont partout : dans les bandeaux cookies, les tunnels d'achat, les pages d'abonnement, les formulaires de désinscription...</p>



<h3 class="wp-block-heading">Pourquoi ça marche (psychologie)</h3>



<p>Les dark patterns ne s'inventent pas au hasard. Ils exploitent des mécanismes psychologiques bien documentés :</p>



<ul class="wp-block-list">
<li><strong>La fatigue décisionnelle</strong> : plus le parcours est long et compliqué, moins on fait attention à ce qu'on valide.</li>



<li><strong>Le biais de confirmation</strong> : on lit ce qu'on s'attend à lire. Un bouton bleu "Continuer" ? On clique sans vraiment lire ce qu'il dit.</li>



<li><strong>La peur de manquer (FOMO)</strong> : "Plus que 2 chambres disponibles !" nous pousse à décider vite, sans réfléchir.</li>



<li><strong>L'inertie</strong> : une case déjà cochée reste cochée si personne ne la décoche. C'est plus facile de ne rien faire.</li>
</ul>



<h2 class="wp-block-heading">Les 8 types de dark patterns les plus courants</h2>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">1</div>
    <div>
      <div class="dp-pattern-title">Les bandeaux cookies truqués</div>
      <div class="dp-pattern-subtitle">Misdirection — Asymétrie visuelle</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>C'est le dark pattern que vous rencontrez <strong>plusieurs fois par jour</strong>. Légalement, "Tout accepter" et "Tout refuser" doivent être aussi faciles d'accès l'un que l'autre. En pratique ? Ce n'est presque jamais le cas.</p>
    <div class="dp-cookie-grid">
      <div>
        <div class="dp-badge-bad"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dark pattern — fréquent</div>
        <div class="dp-mockup-wrap">
          <div class="dp-cookie-mockup">
            <div class="dp-cookie-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f36a.png" alt="🍪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Votre vie privée nous importe</div>
            <div class="dp-cookie-text">Nous utilisons des cookies pour améliorer votre expérience, mesurer l'audience et vous proposer des publicités personnalisées.</div>
            <div class="dp-cookie-actions">
              <button class="dp-btn-accept">Tout accepter</button>
              <button class="dp-btn-custom">Paramétrer</button>
              <button class="dp-btn-refuse">refuser</button>
            </div>
          </div>
        </div>
        <div class="dp-annotation">Bouton "Refuser" quasi invisible, en texte minuscule</div>
      </div>
      <div>
        <div class="dp-badge-ok"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Design honnête</div>
        <div class="dp-mockup-wrap">
          <div class="dp-cookie-mockup">
            <div class="dp-cookie-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f36a.png" alt="🍪" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Votre vie privée nous importe</div>
            <div class="dp-cookie-text">Nous utilisons des cookies pour améliorer votre expérience, mesurer l'audience et vous proposer des publicités personnalisées.</div>
            <div class="dp-cookie-actions">
              <button class="dp-btn-accept" style="background:#2d6a2d;">Tout accepter</button>
              <button class="dp-btn-accept" style="background:#fff;color:#333;border:1px solid #ccc;font-weight:600;">Tout refuser</button>
            </div>
          </div>
        </div>
      </div>
    </div>
    <p>La CNIL l'interdit formellement : le bouton "Refuser" doit être <strong>aussi visible et accessible</strong> que "Tout accepter". Les sanctions tombent : Google a écopé d'une amende de <strong>325 millions d'euros</strong> en septembre 2025 notamment pour ce type de pratique.</p>
  </div>
</div>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">2</div>
    <div>
      <div class="dp-pattern-title">La fausse urgence et la rareté artificielle</div>
      <div class="dp-pattern-subtitle">Scarcity — FOMO — Fake urgency</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>Des messages comme "Plus que 2 en stock !", "3 personnes regardent cet hôtel", ou "Offre expire dans 14:59"... Ces indicateurs sont souvent <strong>fabriqués de toutes pièces</strong> pour créer un sentiment d'urgence et court-circuiter votre réflexion.</p>
    <div class="dp-mockup-wrap">
      <div class="dp-urgency-mockup">
        <div class="dp-hotel-name"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3e8.png" alt="🏨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hôtel Bellevue, Paris</div>
        <div style="color:#888;font-size:10px;margin-bottom:7px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b50.png" alt="⭐" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b50.png" alt="⭐" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b50.png" alt="⭐" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2b50.png" alt="⭐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> · Centre-ville</div>
        <div class="dp-hotel-price">89 €<span style="font-size:11px;color:#888;font-weight:400;">/nuit</span></div>
        <div class="dp-urgency-msg"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f525.png" alt="🔥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Plus que 1 chambre disponible à ce prix !</div>
        <div class="dp-seen-msg"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f441.png" alt="👁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 14 personnes regardent cet hôtel en ce moment</div>
        <div style="background:#fff3f3;border-radius:4px;padding:6px;font-size:10px;color:#cc0000;margin-bottom:7px;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/23f0.png" alt="⏰" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ce tarif expire dans 11:32</div>
        <button class="dp-btn-book">Réserver maintenant</button>
      </div>
    </div>
    <div class="dp-annotation">Trois messages d'urgence empilés pour maximiser la pression psychologique</div>
    <p><strong>Booking.com</strong>, <strong>Ryanair</strong> et <strong>Amazon</strong> sont régulièrement pointés du doigt pour ce type de pratique. Ces informations ne sont pas toujours vérifiables, et le stock peut "se régénérer" miraculeusement après votre passage.</p>
  </div>
</div>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">3</div>
    <div>
      <div class="dp-pattern-title">Le confirmshaming — culpabilisation par les mots</div>
      <div class="dp-pattern-subtitle">Confirmshaming — Manipulation rhétorique</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>Il s'agit de <strong>reformuler le refus de manière culpabilisante</strong> pour que vous ayez honte de dire non. Le bouton d'acceptation est formulé positivement, le refus est formulé de manière à vous faire sentir stupide ou déraisonnable.</p>
    <div class="dp-mockup-wrap">
      <div class="dp-popup-overlay">
        <div class="dp-popup-box">
          <h4><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f48c.png" alt="💌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nos meilleures offres exclusives</h4>
          <p>Rejoignez 250 000 abonnés et recevez chaque semaine nos bons plans, astuces et promotions en avant-première.</p>
          <button class="dp-btn-yes">Oui, je veux économiser !</button>
          <button class="dp-btn-no">Non merci, je préfère payer plein tarif</button>
        </div>
      </div>
    </div>
    <div class="dp-annotation">Le refus est formulé pour vous faire paraître déraisonnable</div>
    <div class="dp-compare-row">
      <div class="dp-compare-col bad">
        <div class="dp-col-label"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Confirmshaming</div>
        <p>"Non merci, je préfère payer plein tarif" / "Non, je n'aime pas les bons plans" / "Je préfère rester ignorant"</p>
      </div>
      <div class="dp-compare-col good">
        <div class="dp-col-label"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Formulation honnête</div>
        <p>"Non merci" / "Je ne souhaite pas m'inscrire" / "Fermer"</p>
      </div>
    </div>
  </div>
</div>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">4</div>
    <div>
      <div class="dp-pattern-title">L'ajout furtif au panier</div>
      <div class="dp-pattern-subtitle">Sneak into basket — Trick question</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>Des produits ou options <strong>s'ajoutent automatiquement</strong> à votre commande, sans que vous les ayez explicitement choisis. Vous devez les retirer activement — et souvent, vous ne les remarquez qu'à la validation finale.</p>
    <div class="dp-mockup-wrap">
      <div class="dp-cart-mockup">
        <div class="dp-cart-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6d2.png" alt="🛒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Votre panier</div>
        <div class="dp-cart-item"><span>Vol Paris → Rome (aller-retour)</span><span style="font-weight:700;">149 €</span></div>
        <div class="dp-cart-item"><span>Bagage cabine</span><span style="font-weight:700;">15 €</span></div>
        <div class="dp-cart-item sneaky">
          <span><input type="checkbox" checked style="width:13px;height:13px;accent-color:#f6a623;margin-right:5px;">Assurance annulation FlexiPlus</span>
          <span style="font-weight:700;color:#cc8800;">+29 €</span>
        </div>
        <div class="dp-cart-item sneaky" style="margin-top:2px;">
          <span><input type="checkbox" checked style="width:13px;height:13px;accent-color:#f6a623;margin-right:5px;">Siège "Choix Standard"</span>
          <span style="font-weight:700;color:#cc8800;">+12 €</span>
        </div>
        <div class="dp-cart-total"><span>Total</span><span>205 €</span></div>
      </div>
    </div>
    <div class="dp-annotation">Deux options cochées par défaut — décocher demande de l'attention</div>
    <p><strong>Ryanair</strong> est l'exemple canonique : l'assurance voyage est préchoisie par défaut. Pour la refuser, il fallait historiquement sélectionner son pays de résidence dans une liste déroulante — un dark pattern particulièrement retors.</p>
  </div>
</div>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">5</div>
    <div>
      <div class="dp-pattern-title">Le "Roach Motel" — facile d'entrer, impossible de sortir</div>
      <div class="dp-pattern-subtitle">Roach Motel — Obstruction</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>S'abonner : 3 clics. Se désabonner : un vrai parcours du combattant avec écrans de confirmation, tentatives de dissuasion en cascade et bouton de résiliation délibérément caché.</p>
    <div class="dp-mockup-wrap">
      <div class="dp-roach-mockup">
        <div class="dp-roach-step">
          <div class="dp-step-header">
            <div class="dp-step-num" style="background:#27500a;color:#fff;">✓</div>
            <div class="dp-step-label">Étape 1 — Demande de résiliation</div>
          </div>
          <div class="dp-step-sub">Demande envoyée. Mais attendez...</div>
        </div>
        <div class="dp-roach-step">
          <div class="dp-step-header">
            <div class="dp-step-num active">2</div>
            <div class="dp-step-label">Vous allez perdre tous ces avantages</div>
          </div>
          <div class="dp-step-sub">Livraison offerte · Streaming · Kindle · Stockage photos illimité...</div>
          <div class="dp-step-btns">
            <button class="dp-btn-keep">Conserver mon abonnement</button>
            <button class="dp-btn-cancel-sm">Continuer la résiliation</button>
          </div>
        </div>
        <div class="dp-roach-step" style="opacity:.5;">
          <div class="dp-step-header">
            <div class="dp-step-num">3</div>
            <div class="dp-step-label">Une offre spéciale rien que pour vous</div>
          </div>
        </div>
        <div class="dp-roach-step" style="opacity:.3;">
          <div class="dp-step-header">
            <div class="dp-step-num">4</div>
            <div class="dp-step-label">Confirmation finale</div>
          </div>
        </div>
      </div>
    </div>
    <div class="dp-annotation">Amazon Prime propose jusqu'à 4 écrans de dissuasion avant la résiliation effective</div>
    <p>La Commission européenne a ouvert une enquête sur <strong>Amazon Prime</strong> précisément pour ce motif. Depuis, le processus a été simplifié en Europe — sous la pression réglementaire.</p>
  </div>
</div>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">6</div>
    <div>
      <div class="dp-pattern-title">L'essai gratuit qui devient payant</div>
      <div class="dp-pattern-subtitle">Force Continuity — Dark subscription</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>L'offre d'essai gratuite nécessite de renseigner sa carte bancaire. À la fin de la période, <strong>la facturation démarre automatiquement</strong> sans avertissement clair — ou avec un email noyé dans la masse.</p>
    <div class="dp-mockup-wrap">
      <div class="dp-fc-mockup">
        <div class="dp-trial-badge">✓ 30 jours d'essai GRATUIT</div>
        <h4>Commencez dès aujourd'hui !</h4>
        <div class="dp-fc-sub">Aucun paiement pendant 30 jours</div>
        <div class="dp-fc-info">
          <div class="dp-fc-line"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c5.png" alt="📅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Aujourd'hui : activation gratuite</div>
          <div class="dp-fc-line"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4b3.png" alt="💳" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dans 30 jours : <strong>12,99 €/mois</strong></div>
          <div class="dp-fc-line" style="color:#bbb;font-size:9px;">Résiliation possible à tout moment*</div>
        </div>
        <button class="dp-btn-start">Démarrer mon essai gratuit</button>
        <div class="dp-fc-legal">* La résiliation doit être effectuée 48h avant la fin de la période d'essai, via votre espace client, onglet "Abonnements", sous-menu "Gérer", section "Facturation active".</div>
      </div>
    </div>
    <div class="dp-annotation">Carte débitée sans rappel, résiliation volontairement complexifiée dans les petites lignes</div>
    <p>Les services de streaming (<strong>Netflix</strong>, <strong>Disney+</strong>), les logiciels SaaS et de nombreuses applis mobiles utilisent cette mécanique. Le principe : parier sur l'oubli ou la flemme de l'utilisateur.</p>
  </div>
</div>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">7</div>
    <div>
      <div class="dp-pattern-title">Les publicités déguisées</div>
      <div class="dp-pattern-subtitle">Disguised Ads — Bait and Switch</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>Des liens sponsorisés habillés comme des résultats naturels, des "articles recommandés" qui sont en fait des publicités, des boutons "Télécharger" qui renvoient vers un autre logiciel que celui attendu...</p>
    <div class="dp-mockup-wrap">
      <div style="background:#fff;border-radius:8px;padding:.95rem;width:100%;max-width:420px;font-family:sans-serif;font-size:11px;box-shadow:0 4px 18px rgba(0,0,0,.13);">
        <div style="font-size:9px;color:#888;margin-bottom:7px;">Résultats de recherche pour "télécharger VLC"</div>
        <div style="border:1px solid #d0d9f5;border-radius:6px;padding:9px;margin-bottom:7px;background:#f0f4ff;">
          <div style="display:flex;justify-content:space-between;align-items:center;">
            <div style="color:#1a73e8;font-size:12px;font-weight:700;">Télécharger VLC Media Player — Officiel</div>
            <div style="background:#e8f0fe;color:#1a73e8;font-size:8px;padding:2px 5px;border-radius:2px;font-weight:700;white-space:nowrap;">Sponsorisé</div>
          </div>
          <div style="color:#188038;font-size:10px;">www.vlc-download-now.net</div>
          <div style="color:#555;font-size:10px;margin-top:2px;">Téléchargez VLC gratuitement en 1 clic. Version officielle 2024.</div>
        </div>
        <div style="border:1px solid #eee;border-radius:6px;padding:9px;background:#fff;">
          <div style="color:#1a73e8;font-size:12px;font-weight:700;">VLC media player – VideoLAN</div>
          <div style="color:#188038;font-size:10px;">www.videolan.org › vlc</div>
          <div style="color:#555;font-size:10px;margin-top:2px;">VLC is a free and open source cross-platform multimedia player...</div>
        </div>
        <div class="dp-annotation" style="margin-top:7px;">Le 1er résultat imite l'officiel — et peut installer des logiciels indésirables</div>
      </div>
    </div>
    <p>On retrouve aussi ce pattern sur les sites de téléchargement avec <strong>plusieurs boutons "Télécharger"</strong> dont un seul est le bon — les autres installant des adwares ou barres d'outils non désirées.</p>
  </div>
</div>



<div class="dp-pattern-card">
  <div class="dp-pattern-header">
    <div class="dp-pattern-num">8</div>
    <div>
      <div class="dp-pattern-title">Le langage à double sens et les phrases à la négation</div>
      <div class="dp-pattern-subtitle">Misdirection — Trick questions</div>
    </div>
  </div>
  <div class="dp-pattern-body">
    <p>Des phrases à la négation volontairement confuses, des cases à cocher dont le sens est inversé, ou une mise en page qui attire l'œil sur un élément pour en cacher un autre.</p>
    <div class="dp-compare-row">
      <div class="dp-compare-col bad">
        <div class="dp-col-label"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Formulation trompeuse</div>
        <p>☐ <em>"Je ne souhaite pas ne pas recevoir les offres partenaires"</em><br><br>Double négation = impossible à déchiffrer rapidement</p>
      </div>
      <div class="dp-compare-col good">
        <div class="dp-col-label"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Formulation claire</div>
        <p>☐ <em>"Je souhaite recevoir les offres de nos partenaires"</em><br><br>Simple, direct, sans ambiguïté</p>
      </div>
    </div>
    <p><strong>LinkedIn</strong> est souvent cité pour ses emails de "confirmation" au libellé ambigu : cliquer sur "Oui" entraîne parfois l'envoi d'invitations à tous vos contacts Gmail — sans que ce soit clairement annoncé.</p>
  </div>
</div>



<h2 class="wp-block-heading">Les sites bien connus qui utilisent ces techniques</h2>



<p>Ces pratiques ne sont pas l'apanage de petits sites douteux. Les plus grandes plateformes mondiales y ont recours — certaines ont d'ailleurs été sanctionnées pour cela.</p>



<div class="dp-site-grid">
  <div class="dp-site-card">
    <div class="dp-site-name"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6d2.png" alt="🛒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Amazon</div>
    <div class="dp-site-pattern">Roach Motel + Urgence</div>
    <p>Résiliation de Prime en plusieurs étapes avec écrans de dissuasion. Affichage de "Plus que X en stock" et prix barrés parfois contestables.</p>
  </div>
  <div class="dp-site-card">
    <div class="dp-site-name"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3e8.png" alt="🏨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Booking.com</div>
    <div class="dp-site-pattern">Fausse urgence</div>
    <p>"X personnes regardent", "Dernière chambre", compteur en temps réel... Des indicateurs dont la réalité est souvent invérifiable.</p>
  </div>
  <div class="dp-site-card">
    <div class="dp-site-name"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2708.png" alt="✈" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ryanair</div>
    <div class="dp-site-pattern">Sneak into basket</div>
    <p>Options pré-cochées (assurance, siège), tarif de base affiché sans bagages. Le "vrai" prix n'apparaît qu'à la fin du tunnel d'achat.</p>
  </div>
  <div class="dp-site-card">
    <div class="dp-site-name"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4bc.png" alt="💼" class="wp-smiley" style="height: 1em; max-height: 1em;" /> LinkedIn</div>
    <div class="dp-site-pattern">Misdirection + Pression</div>
    <p>Invitations massives envoyées en votre nom sans consentement clair, notifications persistantes pour pousser vers Premium.</p>
  </div>
  <div class="dp-site-card">
    <div class="dp-site-name"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6cd.png" alt="🛍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Temu / SHEIN</div>
    <div class="dp-site-pattern">Urgence + Cookies</div>
    <p>Compteurs de stock et de promotion permanents, bandeaux cookies non conformes. Temu fait l'objet d'une procédure formelle de la Commission européenne.</p>
  </div>
  <div class="dp-site-card">
    <div class="dp-site-name"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Google</div>
    <div class="dp-site-pattern">Cookies tronqués</div>
    <p>Condamné à 325 M€ par la CNIL en 2025 pour des parcours de consentement orientés lors de la création de compte et des publicités "déguisées" dans Gmail.</p>
  </div>
</div>



<h2 class="wp-block-heading">Ce que dit la loi en France et en Europe</h2>



<div class="dp-law-box">
  <div class="dp-law-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2696.png" alt="⚖" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Cadre légal 2024–2026</div>
  <ul>
    <li><strong>RGPD</strong> : les dark patterns liés aux cookies sont illégaux. Le consentement doit être libre, éclairé et sans ambiguïté.</li>
    <li><strong>DSA (Digital Services Act)</strong> : en vigueur depuis 2024, il interdit explicitement les interfaces trompeuses aux grandes plateformes.</li>
    <li><strong>CNIL</strong> : 87 sanctions en 2024 pour un total de 55,2 M€. En 2025 : 325 M€ contre Google seul pour dark patterns cookies.</li>
    <li><strong>Code de la Consommation</strong> (art. L.121-1) : les dark patterns constituent des pratiques commerciales trompeuses, passibles jusqu'à 3,75 M€ ou 10 % du CA.</li>
    <li><strong>DGCCRF</strong> : 105,3 M€ de sanctions en 2024 (+44 % vs 2022), dont 960 cas de pratiques commerciales trompeuses.</li>
  </ul>
</div>



<p>Le message est clair : la tolérance zéro s'installe. La CNIL utilise désormais des <strong>"clients mystères numériques"</strong> pour contrôler les sites en incognito. Plus aucun site n'est à l'abri d'un contrôle.</p>



<h2 class="wp-block-heading">Comment s'en protéger au quotidien ?</h2>



<div class="dp-tips-box">
  <div class="dp-tips-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f6e1.png" alt="🛡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Vos réflexes anti-dark patterns</div>
  <ul>
    <li><strong>Prenez le temps de lire</strong> les écrans de paiement, surtout la dernière étape avant validation.</li>
    <li><strong>Cherchez le bouton "Refuser"</strong> sur les bandeaux cookies — il est souvent caché, mais il existe.</li>
    <li><strong>Méfiez-vous des urgences</strong> : un "Plus que 1 disponible !" qui dure depuis 3 jours n'est pas une urgence réelle.</li>
    <li><strong>Utilisez des extensions</strong> comme I don't care about cookies, uBlock Origin ou Consent-O-Matic pour automatiser les refus.</li>
    <li><strong>Vérifiez votre panier</strong> avant de payer : des options non désirées ont peut-être été ajoutées automatiquement.</li>
    <li><strong>Notez la date de fin d'essai</strong> dans votre agenda dès que vous vous inscrivez à un service gratuit.</li>
    <li><strong>Signalez</strong> les pratiques abusives à la CNIL (cnil.fr) ou à la DGCCRF.</li>
  </ul>
</div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Les dark patterns sont partout — et leur efficacité tient précisément au fait qu'ils passent inaperçus. Mais les reconnaître, c'est déjà s'en protéger.</p>



<p>Pour les professionnels du web, la question dépasse la technique : c'est une question d'<strong>éthique et de confiance</strong>. Un utilisateur qui se sent manipulé ne revient pas. À l'inverse, un design honnête — où "Refuser" est aussi facile que "Accepter", où les prix sont affichés clairement, où la résiliation prend 2 clics — est souvent aussi un design plus performant sur le long terme.</p>



<p>Et avec le renforcement des sanctions (CNIL, DSA, DGCCRF), ce n'est plus seulement une question de bon goût. C'est une question de conformité légale.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-background" style="background-color:#e6f1fb"><mark style="background-color:#ffffff" class="has-inline-color"><strong><em>Pour aller plus loin</em></strong></mark><br><br>Le site <a href="https://deceptive.design" target="_blank" rel="noreferrer noopener">deceptive.design</a> (anciennement darkpatterns.org), créé par Harry Brignull, recense des centaines d'exemples réels de dark patterns signalés par des internautes du monde entier. Une mine d'or pour les professionnels du web.</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/dark-patterns-web-manipulation/">Dark Patterns : quand le design vous manipule (sans que vous le sachiez)</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/dark-patterns-web-manipulation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>&#8220;Maximum execution time exceeded&#8221; WordPress &#8211; Comment corriger l’erreur</title>
		<link>https://thibautsoufflet.fr/blog/maximum-execution-time-exceeded-wordpress/</link>
					<comments>https://thibautsoufflet.fr/blog/maximum-execution-time-exceeded-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Thu, 05 Mar 2026 12:07:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7613</guid>

					<description><![CDATA[<p>Ton site affiche le message : Maximum execution time of 30 seconds exceeded Ou une variante similaire avec 60 ou 300 secondes ?Cela signifie que ton serveur coupe un script PHP parce qu’il met trop de temps à s’exécuter. Bonne nouvelle : cette erreur est facile à corriger. Pourquoi cette erreur apparaît Cette erreur survient [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/maximum-execution-time-exceeded-wordpress/">&#8220;Maximum execution time exceeded&#8221; WordPress &#8211; Comment corriger l’erreur</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ton site affiche le message : <strong><em>Maximum execution time of 30 seconds exceeded</em></strong></p>



<p>Ou une variante similaire avec 60 ou 300 secondes ?<br>Cela signifie que ton serveur coupe un script PHP parce qu’il met trop de temps à s’exécuter.</p>



<p><strong>Bonne nouvelle : cette erreur est facile à corriger</strong>.</p>



<h2 class="wp-block-heading">Pourquoi cette erreur apparaît</h2>



<p>Cette erreur survient lorsque :</p>



<ul class="wp-block-list">
<li>Un plugin est trop lourd</li>



<li>Une importation est trop volumineuse</li>



<li>Une sauvegarde dépasse le temps limite</li>



<li>La limite PHP par défaut est trop basse (souvent 30s)</li>



<li>Le serveur est lent ou surchargé</li>
</ul>



<p><strong>WordPress n’est pas en cause : c’est une limite serveur</strong>.</p>



<h2 class="wp-block-heading">Solution rapide (en 3 étapes)</h2>



<ol class="wp-block-list">
<li>Augmenter <code>max_execution_time</code></li>



<li>Vérifier les plugins lourds</li>



<li>Optimiser la mémoire PHP</li>
</ol>



<h2 class="wp-block-heading">Guide détaillé</h2>



<h3 class="wp-block-heading">Étape 1 : Modifier le fichier wp-config.php</h3>



<p>Ajoute cette ligne à la fin de ton fichier <code>wp-config.php</code> :</p>



<pre title="Augmentation du temps d'exécution serveur dans le fichier wp-config.php" class="wp-block-code"><code lang="php" class="language-php">set_time_limit(300);</code></pre>



<p>Ou celle-ci :</p>



<pre title="Augmentation du temps d'exécution serveur dans le fichier wp-config.php" class="wp-block-code"><code lang="php" class="language-php">@ini_set('max_execution_time', 300);</code></pre>



<p>Recharge ensuite ton site dans ton navigateur.</p>



<h3 class="wp-block-heading">Étape 2 : Modifier le fichier .htaccess</h3>



<p>Ajoute ensuite ce code à la fin de ton fichier <code>.htaccess</code> :</p>



<pre title="Augmentation du temps d'exécution serveur dans le fichier .htaccess" class="wp-block-code"><code class="">php_value max_execution_time 300
php_value max_input_time 300</code></pre>



<h3 class="wp-block-heading">Étape 3 : Modifier le fichier php.ini (si accessible)</h3>



<pre title="Augmentation du temps d'exécution serveur dans le fichier .htaccess" class="wp-block-code"><code class="">max_execution_time = 300
max_input_time = 300</code></pre>



<h3 class="wp-block-heading">Étape 4 : Vérifier les plugins responsables</h3>



<p>Les plugins souvent concernés :</p>



<ul class="wp-block-list">
<li>Extensions de sauvegarde</li>



<li>Plugins d’import/export</li>



<li>Plugins WooCommerce</li>



<li>Plugins de sécurité</li>
</ul>



<p>Désactive-les temporairement pour tester si tu constates un changement.</p>



<h2 class="wp-block-heading">Code prêt à copier</h2>



<p>Bloc complet de code recommandé dans <code>.htaccess</code> :</p>



<pre title="Code recommandé à insérer dans le fichier .htaccess pour augmenter la tolérance du serveur" class="wp-block-code"><code class="">php_value max_execution_time 300
php_value max_input_time 300
php_value memory_limit 256M
php_value post_max_size 256M
php_value upload_max_filesize 256M</code></pre>



<h2 class="wp-block-heading">Cas hébergeurs connus</h2>



<h3 class="wp-block-heading">OVH</h3>



<p>Modifier le fichier <code>.ovhconfig</code> :</p>



<pre title="Modification fichier .ovhconfig" class="wp-block-code"><code class="">app.engine=php
app.engine.version=8.1</code></pre>



<p>Puis augmenter les limites via l’espace client.</p>



<h3 class="wp-block-heading">o2switch</h3>



<p>cPanel → MultiPHP INI Editor → Modifier <code>max_execution_time</code>.</p>



<h3 class="wp-block-heading">Hostinger</h3>



<p>Hébergement → Paramètres PHP → Augmenter la valeur.</p>



<h2 class="wp-block-heading">FAQ</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1770898399344"><strong class="schema-faq-question">Quelle valeur recommander ?</strong> <p class="schema-faq-answer">300 secondes est généralement suffisant.<br/>Pour les imports lourds, 600 secondes peut être utile.</p> </div> <div class="schema-faq-section" id="faq-question-1770898410915"><strong class="schema-faq-question">Cette erreur peut-elle casser mon site ?</strong> <p class="schema-faq-answer">Non. Elle empêche simplement une action de se terminer.</p> </div> <div class="schema-faq-section" id="faq-question-1770898418267"><strong class="schema-faq-question">Faut-il aussi augmenter la mémoire PHP ?</strong> <p class="schema-faq-answer">Oui, surtout si tu utilises WooCommerce ou un builder comme Elementor.</p> </div> </div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>L’erreur "Maximum execution time exceeded" est liée aux limites serveur PHP.</p>



<p>Dans la majorité des cas, augmenter le temps d’exécution à 300 secondes suffit.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Consulte également mon <a href="https://thibautsoufflet.fr/blog/erreurs-wordpress-frequentes/" type="post" id="7581">guide complet des erreurs WordPress les plus fréquentes</a> pour prévenir d’autres blocages.</p>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/maximum-execution-time-exceeded-wordpress/">&#8220;Maximum execution time exceeded&#8221; WordPress &#8211; Comment corriger l’erreur</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/maximum-execution-time-exceeded-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress n’envoie pas d’e-mail : comment corriger le problème</title>
		<link>https://thibautsoufflet.fr/blog/wordpress-mail-probleme/</link>
					<comments>https://thibautsoufflet.fr/blog/wordpress-mail-probleme/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Wed, 04 Mar 2026 12:00:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7611</guid>

					<description><![CDATA[<p>Tu utilises le formulaire de contact, la réinitialisation de mot de passe…Et pourtant aucun e-mail reçu ? C’est un problème très courant. Pourquoi cette erreur apparaît Solution rapide Guide détaillé Étape 1 : Installer WP Mail SMTP Plugin recommandé : WP Mail SMTP Étape 2 : Configurer SMTP Exemple configuration Gmail :SMTP Host : smtp.gmail.comPort [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/wordpress-mail-probleme/">WordPress n’envoie pas d’e-mail : comment corriger le problème</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Tu utilises le formulaire de contact, la réinitialisation de mot de passe…<br>Et pourtant aucun e-mail reçu ?</p>



<p>C’est un problème très courant.</p>



<h2 class="wp-block-heading">Pourquoi cette erreur apparaît</h2>



<ul class="wp-block-list">
<li>Fonction mail() bloquée</li>



<li>Mauvaise configuration SMTP</li>



<li>Emails considérés comme spam</li>



<li>Hébergeur bloquant les envois</li>
</ul>



<h2 class="wp-block-heading">Solution rapide</h2>



<ol class="wp-block-list">
<li>Installer un plugin SMTP</li>



<li>Configurer un serveur SMTP fiable</li>



<li>Tester l’envoi</li>
</ol>



<h2 class="wp-block-heading">Guide détaillé</h2>



<h3 class="wp-block-heading">Étape 1 : Installer WP Mail SMTP</h3>



<p>Plugin recommandé : <a href="https://fr.wordpress.org/plugins/wp-mail-smtp/">WP Mail SMTP</a></p>



<h3 class="wp-block-heading">Étape 2 : Configurer SMTP</h3>



<p>Exemple configuration Gmail :<br>SMTP Host : smtp.gmail.com<br>Port : 587<br>Encryption : TLS</p>



<p>À toi de voir ces paramètres selon votre hébergeur ou client mail, laa doc en ligne t'aidera rapidement.</p>



<h3 class="wp-block-heading">Étape 3 : Tester</h3>



<p>Utiliser l’outil de test d’e-mail intégré à WP Mail SMTP.</p>



<h2 class="wp-block-heading">Cas hébergeurs</h2>



<p>OVH : mail() souvent limité<br>o2switch : fonctionne mais SMTP recommandé<br>Hostinger : activer email externe</p>



<h2 class="wp-block-heading">FAQ</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1770897870539"><strong class="schema-faq-question">Pourquoi WordPress ne reçoit pas d’email ?</strong> <p class="schema-faq-answer">Parce que PHP mail() n’est pas fiable.</p> </div> <div class="schema-faq-section" id="faq-question-1770897881139"><strong class="schema-faq-question">Faut-il utiliser SMTP ?</strong> <p class="schema-faq-answer">Oui, c’est la solution recommandée.</p> </div> </div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Configurer SMTP règle le problème dans 95 % des cas.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Consulte notre <a href="https://thibautsoufflet.fr/blog/erreurs-wordpress-frequentes/" type="post" id="7581">guide des erreurs WordPress</a> pour prévenir d’autres blocages.</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/wordpress-mail-probleme/">WordPress n’envoie pas d’e-mail : comment corriger le problème</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/wordpress-mail-probleme/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Allowed memory size exhausted WordPress : comment corriger l’erreur</title>
		<link>https://thibautsoufflet.fr/blog/allowed-memory-size-exhausted-wordpress/</link>
					<comments>https://thibautsoufflet.fr/blog/allowed-memory-size-exhausted-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Tue, 03 Mar 2026 11:56:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7609</guid>

					<description><![CDATA[<p>Le message suivant apparaît : Allowed memory size of X bytes exhausted Cela signifie que la mémoire PHP est insuffisante. Pourquoi cette erreur apparaît Solution rapide Guide détaillé Étape 1 : Modifier wp-config.php Étape 2 : Modifier php.ini Étape 3 : Identifier plugin lourd Désactive temporairement les plugins, puis réactive-les un à un pour identifier [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/allowed-memory-size-exhausted-wordpress/">Allowed memory size exhausted WordPress : comment corriger l’erreur</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Le message suivant apparaît : <strong><em>Allowed memory size of X bytes exhausted</em></strong></p>



<p>Cela signifie que la mémoire PHP est insuffisante.</p>



<h2 class="wp-block-heading">Pourquoi cette erreur apparaît</h2>



<ul class="wp-block-list">
<li>Plugin gourmand</li>



<li>Thème lourd</li>



<li>Import volumineux</li>



<li>Mémoire serveur trop faible</li>
</ul>



<h2 class="wp-block-heading">Solution rapide</h2>



<ol class="wp-block-list">
<li>Augmenter WP_MEMORY_LIMIT</li>



<li>Modifier php.ini</li>



<li>Vérifier plugin responsable</li>
</ol>



<h2 class="wp-block-heading">Guide détaillé</h2>



<h3 class="wp-block-heading">Étape 1 : Modifier wp-config.php</h3>



<pre title="Augmenter la mémoire dans wp-config.php" class="wp-block-code"><code lang="php" class="language-php">define('WP_MEMORY_LIMIT', '256M');</code></pre>



<h3 class="wp-block-heading">Étape 2 : Modifier php.ini</h3>



<pre title="Augmenter la mémoire dans php.ini" class="wp-block-code"><code lang="" class="">memory_limit = 256M</code></pre>



<h3 class="wp-block-heading">Étape 3 : Identifier plugin lourd</h3>



<p>Désactive temporairement les plugins, puis réactive-les un à un pour identifier lesquels sont responsables du surpoids.</p>



<h2 class="wp-block-heading">Cas hébergeurs</h2>



<p>OVH : augmenter via .ovhconfig<br>o2switch : MultiPHP INI Editor<br>Hostinger : Paramètres PHP</p>



<h2 class="wp-block-heading">FAQ</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1770897518798"><strong class="schema-faq-question">Quelle mémoire recommander ?</strong> <p class="schema-faq-answer">Minimum 256M pour WordPress moderne.</p> </div> </div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Cette erreur est liée aux limites serveur, pas à WordPress lui-même.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Consulte notre <a href="https://thibautsoufflet.fr/blog/erreurs-wordpress-frequentes/" type="post" id="7581">liste complète des erreurs WordPress</a>.</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/allowed-memory-size-exhausted-wordpress/">Allowed memory size exhausted WordPress : comment corriger l’erreur</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/allowed-memory-size-exhausted-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Erreur REST API WordPress : comment corriger le problème</title>
		<link>https://thibautsoufflet.fr/blog/erreur-rest-api-wordpress/</link>
					<comments>https://thibautsoufflet.fr/blog/erreur-rest-api-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Mon, 02 Mar 2026 11:51:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7607</guid>

					<description><![CDATA[<p>Si l'API REST ne fonctionne pas, tu peux rencontrer les messages d'erreurs WordPress suivants : Pas de panique, voici comment diagnostiquer et réparer l'erreur liée à l'API REST. Pourquoi cette erreur apparaît Solution rapide Guide détaillé Étape 1 : Tester la REST API Appelle le dossier wp-json via l'url suivante : Si une erreur apparaît [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/erreur-rest-api-wordpress/">Erreur REST API WordPress : comment corriger le problème</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Si l'API REST ne fonctionne pas, tu peux rencontrer les messages d'erreurs WordPress suivants :</p>



<ul class="wp-block-list">
<li>Publication échouée</li>



<li>Mise à jour impossible</li>



<li>Erreur JSON</li>



<li>Bloc éditeur non fonctionnel</li>
</ul>



<p>Pas de panique, voici comment diagnostiquer et réparer l'erreur liée à l'API REST.</p>



<h2 class="wp-block-heading">Pourquoi cette erreur apparaît</h2>



<ul class="wp-block-list">
<li>Conflit de plugin de sécurité</li>



<li>Mauvaise configuration .htaccess</li>



<li>Hébergement bloquant certaines requêtes</li>



<li>Problème HTTPS</li>
</ul>



<h2 class="wp-block-heading">Solution rapide</h2>



<ol class="wp-block-list">
<li>Tester la REST API</li>



<li>Vérifier le .htaccess</li>



<li>Désactiver plugins sécurité</li>
</ol>



<h2 class="wp-block-heading">Guide détaillé</h2>



<h3 class="wp-block-heading">Étape 1 : Tester la REST API</h3>



<p>Appelle le dossier <code>wp-json</code> via l'url suivante :</p>



<pre class="wp-block-code"><code class="">https://votresite.com/wp-json/</code></pre>



<p>Si une erreur apparaît → alors le problème est confirmé.</p>



<h3 class="wp-block-heading">Étape 2 : Vérifier le .htaccess</h3>



<p>Code standard :</p>



<pre title="Code d'origine du .htaccess WordPress" class="wp-block-code"><code class=""># BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress</code></pre>



<h3 class="wp-block-heading">Étape 3 : Désactiver les plugins de sécurité</h3>



<p>Wordfence, iThemes Security, etc. peuvent modifier certains paramètres WordPress et provoquer l'erreur d'API REST. Essaie de les désactiver pour tester si cela résouts le problème. </p>



<h2 class="wp-block-heading">Cas hébergeurs</h2>



<p>OVH : vérifie le module PHP<br>IONOS : activer mod_rewrite<br>o2switch : rarement bloqué</p>



<h2 class="wp-block-heading">FAQ</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1770897253730"><strong class="schema-faq-question">L'API REST est-elle indispensable ?</strong> <p class="schema-faq-answer">Oui, pour Gutenberg et beaucoup de plugins modernes.</p> </div> </div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Une REST API bloquée empêche WordPress de fonctionner correctement.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Voir aussi notre <a href="https://thibautsoufflet.fr/blog/erreurs-wordpress-frequentes/" type="post" id="7581">guide des erreurs WordPress fréquentes</a>.</p>



<div style="height:60px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/erreur-rest-api-wordpress/">Erreur REST API WordPress : comment corriger le problème</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/erreur-rest-api-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Nouveauté CSS en 2026 &#8211; un carousel sans JavaScript avec ::scroll-button</title>
		<link>https://thibautsoufflet.fr/blog/css-scroll-button-carousel-natif-sans-javascript/</link>
					<comments>https://thibautsoufflet.fr/blog/css-scroll-button-carousel-natif-sans-javascript/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Mon, 02 Mar 2026 09:59:19 +0000</pubDate>
				<category><![CDATA[Web pratique]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7721</guid>

					<description><![CDATA[<p>Après la personnalisation des &#60;select&#62; et le Masonry sans JavaScript avec grid-lanes, le CSS continue sa conquête du territoire JavaScript avec une nouvelle propriété pseudo-élément : ::scroll-button(). Elle permet de générer nativement des boutons de navigation pour les conteneurs scrollables, sans écrire une seule ligne de JS. Pourquoi c'est une vraie amélioration ? Jusqu'ici, créer [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/css-scroll-button-carousel-natif-sans-javascript/">Nouveauté CSS en 2026 &#8211; un carousel sans JavaScript avec ::scroll-button</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Après la <a href="https://thibautsoufflet.fr/blog/personnaliser-liste-select-css-sans-javascript/" type="post" id="7726">personnalisation des <code>&lt;select&gt;</code></a> et le <a href="https://thibautsoufflet.fr/blog/css-grid-lanes-fini-le-mansonry-javascript-en-2026/" type="post" id="7724">Masonry sans JavaScript avec <code>grid-lanes</code></a>, le CSS continue sa conquête du territoire JavaScript avec une nouvelle propriété pseudo-élément : <code>::scroll-button()</code>. Elle permet de <strong>générer nativement des boutons de navigation pour les conteneurs scrollables</strong>, sans écrire une seule ligne de JS.</p>



<h2 class="wp-block-heading">Pourquoi c'est une vraie amélioration ?</h2>



<p>Jusqu'ici, créer un carousel avec des boutons "précédent / suivant" imposait systématiquement du JavaScript : écouter les clics, calculer la position de scroll, gérer les états désactivés en bout de liste… Autant de code à maintenir, à tester et à rendre accessible.</p>



<p>Avec <code>::scroll-button()</code>, le navigateur prend en charge tout ça nativement :</p>



<ul class="wp-block-list">
<li>Les boutons sont <strong>générés automatiquement</strong> par le CSS, sans aucun <code>&lt;button&gt;</code> dans le HTML</li>



<li>L'état <strong><code>:disabled</code></strong> est appliqué automatiquement quand le scroll atteint ses limites</li>



<li>La <strong>navigation au clavier</strong> et l'<strong>accessibilité</strong> sont gérées par le navigateur</li>



<li>Combiné à <code>scroll-snap-type</code>, le défilement s'effectue snap par snap, de façon précise</li>
</ul>



<h2 class="wp-block-heading">Démo de carousel pur CSS avec ::scroll-button</h2>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="800" height="407" src="https://thibautsoufflet.fr/wp-content/uploads/2026/03/carouselenpurcssavec__scroll-button-googlechrome2026-03-0210-37-05-ezgif.com-video-to-gif-converter.gif" alt="Démo de Carousel élégant réalisé en HTML et CSS sans aucun code JavaScript. Avec la nouvelle propriété CSS scroll-button." class="wp-image-7828 img-fluid"/></figure>



<p><em>Note : cette fonctionnalité requiert Chrome 135+ ou Edge 135+</em></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="codepen" data-height="796" data-pen-title="Carousel en pur CSS avec ::scroll-button" data-default-tab="result" data-slug-hash="pvEjPzG" data-user="Tibow" style="height: 796px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/Tibow/pen/pvEjPzG">
  Carousel en pur CSS avec ::scroll-button</a> by Tibow (<a href="https://codepen.io/Tibow">@Tibow</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://public.codepenassets.com/embed/index.js"></script>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Le résultat est incroyablement fluide et convaincant</strong>. Voyons maintenant les compatibilités navigateurs et comment marche cette petite merveille en détails !</p>



<h2 class="wp-block-heading">Compatibilité avec les navigateurs modernes</h2>



<p><code>::scroll-button()</code> est une propriété <strong>très récente</strong> et prometteuse pour 2026, et elle est supportée (pour le moment) uniquement par Chrome et Edge 135 +</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d9414ce4c&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d9414ce4c" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="387" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/03/fireshot-capture-062-_scroll-button_-can-i-use.-support-tables-for-html5-css3-etc_-caniuse.com_-1024x387.png" alt="Can I Use : Tableau des compatibilités navigateurs de la propriété scroll-button" class="wp-image-7833 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/03/fireshot-capture-062-_scroll-button_-can-i-use.-support-tables-for-html5-css3-etc_-caniuse.com_-1024x387.png 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/03/fireshot-capture-062-_scroll-button_-can-i-use.-support-tables-for-html5-css3-etc_-caniuse.com_-300x113.png 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/03/fireshot-capture-062-_scroll-button_-can-i-use.-support-tables-for-html5-css3-etc_-caniuse.com_-768x290.png 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/03/fireshot-capture-062-_scroll-button_-can-i-use.-support-tables-for-html5-css3-etc_-caniuse.com_.png 1374w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Tableau des compatibilités navigateur avec la propriété CSS scroll-button</figcaption></figure>



<p><strong>Bonne pratique</strong> : la dégradation est gracieuse. Sur les navigateurs non compatibles, le conteneur reste scrollable (touch, trackpad, barre de défilement) — les boutons disparaissent simplement. Pas d'erreur, pas de JavaScript à prévoir.</p>



<h2 class="wp-block-heading">Comment ça fonctionne : sémantique et balisage</h2>



<h3 class="wp-block-heading">Le HTML : minimaliste</h3>



<p>Aucun bouton à ajouter dans le markup. Le conteneur scroll suffit :</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;div class="carousel">
  &lt;article class="card">&lt;!-- contenu -->&lt;/article>
  &lt;article class="card">&lt;!-- contenu -->&lt;/article>
  &lt;article class="card">&lt;!-- contenu -->&lt;/article>
&lt;/div></code></pre>



<h3 class="wp-block-heading">Le CSS : tout se passe ici</h3>



<pre class="wp-block-code"><code lang="css" class="language-css">.carousel {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
}

/* Bouton "précédent" */
.carousel::scroll-button(inline-start) {
  content: "←";           /* OBLIGATOIRE pour afficher le bouton */
  display: flex;
  width: 3rem;
  height: 3rem;
  background: #1a1612;
  color: white;
  border-radius: 50%;
  cursor: pointer;
}

/* Bouton "suivant" */
.carousel::scroll-button(inline-end) {
  content: "→";
  /* mêmes styles */
}</code></pre>



<h3 class="wp-block-heading">Les valeurs acceptées par <code>::scroll-button()</code></h3>



<p>La propriété accepte <strong>4 directions</strong> correspondant aux axes logiques CSS :</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Valeur</th><th>Direction</th></tr></thead><tbody><tr><td><code>inline-start</code></td><td>← (début de ligne, gauche en LTR)</td></tr><tr><td><code>inline-end</code></td><td>→ (fin de ligne, droite en LTR)</td></tr><tr><td><code>block-start</code></td><td>↑ (début de bloc, haut)</td></tr><tr><td><code>block-end</code></td><td>↓ (fin de bloc, bas)</td></tr></tbody></table></figure>



<p>Cela permet de gérer aussi bien les scrolls <strong>horizontaux</strong> que <strong>verticaux</strong>, et les contextes <strong>RTL</strong> (arabe, hébreu) sans aucune adaptation CSS.</p>



<h3 class="wp-block-heading">La propriété <code>content</code> est obligatoire</h3>



<p>Comme pour <code>::before</code> et <code>::after</code>, la propriété <code>content</code> est <strong>indispensable</strong> pour que le pseudo-élément s'affiche. Sans elle, le bouton n'est pas rendu.</p>



<pre title="Ne pas oublier la propriété content" class="wp-block-code"><code lang="css" class="language-css">/* <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ne s'affiche pas */
.carousel::scroll-button(inline-end) {
  background: black;
}

/* <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> S'affiche */
.carousel::scroll-button(inline-end) {
  content: "→";
  background: black;
}</code></pre>



<h3 class="wp-block-heading">Gérer les états <code>:disabled</code> et <code>:hover</code></h3>



<p>Le navigateur applique automatiquement <code>:disabled</code> quand le scroll ne peut plus aller dans une direction. On peut cibler cet état directement :</p>



<pre title="Gérer les états :disabled et :hover" class="wp-block-code"><code lang="css" class="language-css">.carousel::scroll-button(inline-start):disabled,
.carousel::scroll-button(inline-end):disabled {
  opacity: 0.2;
  pointer-events: none;
}

.carousel::scroll-button(inline-end):hover {
  background: #c8502a;
}</code></pre>



<h3 class="wp-block-heading">Bonus : les points de pagination avec <code>::scroll-marker</code></h3>



<p>Dans la même spec, <code>::scroll-marker</code> permet de générer des <strong>indicateurs de position</strong> (les fameux "dots") eux aussi sans JavaScript :</p>



<pre title="Points de pagination avec ::scroll-marker" class="wp-block-code"><code lang="css" class="language-css">/* Groupe de dots généré automatiquement */
.carousel::scroll-marker-group {
  display: flex;
  gap: 0.5rem;
  justify-content: center;
}

/* Un dot par élément */
.card::scroll-marker {
  content: "";
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: #ccc;
}

/* Dot actif */
.card::scroll-marker:target-current {
  background: #c8502a;
  width: 1.5rem;
  border-radius: 0.25rem;
}</code></pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p><code>::scroll-button()</code> s'inscrit dans une tendance de fond : le CSS reprend progressivement des interactions que seul JavaScript pouvait gérer jusqu'ici. Après les animations complexes, les transitions de vue avec <code>@view-transition</code>, ou encore la personnalisation des éléments de formulaire, c'est maintenant la navigation des conteneurs scrollables qui bascule côté CSS natif.</p>



<p>Le résultat : un HTML plus sémantique, moins de JavaScript à maintenir, de meilleures performances et une accessibilité gérée nativement par le navigateur.</p>



<p><strong>C'est aujourd'hui limité à Chrome 135+</strong>, mais la spec est en bonne voie et Firefox a déjà annoncé son implémentation. À surveiller de près, et à tester dès maintenant sur vos projets CodePen !</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/css-scroll-button-carousel-natif-sans-javascript/">Nouveauté CSS en 2026 &#8211; un carousel sans JavaScript avec ::scroll-button</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/css-scroll-button-carousel-natif-sans-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>“La publication a échoué” WordPress – Comment corriger l’erreur</title>
		<link>https://thibautsoufflet.fr/blog/publication-echoue-wordpress/</link>
					<comments>https://thibautsoufflet.fr/blog/publication-echoue-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 11:50:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7605</guid>

					<description><![CDATA[<p>Tu essaies de publier ou mettre à jour un article et WordPress affiche : La publication a échoué. Cette erreur est fréquente avec l’éditeur Gutenberg et elle est souvent liée à l'API REST ou à un problème de serveur. Voici comment la corriger rapidement ! Pourquoi cette erreur apparaît Les causes les plus fréquentes sont [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/publication-echoue-wordpress/">“La publication a échoué” WordPress – Comment corriger l’erreur</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Tu essaies de publier ou mettre à jour un article et WordPress affiche : <strong><em>La publication a échoué</em></strong>.</p>



<p>Cette erreur est fréquente avec l’éditeur Gutenberg et elle est souvent liée à l'API REST ou à un problème de serveur.</p>



<p>Voici comment la corriger rapidement !</p>



<h2 class="wp-block-heading">Pourquoi cette erreur apparaît</h2>



<p>Les causes les plus fréquentes sont :</p>



<ul class="wp-block-list">
<li>Problème avec la REST API</li>



<li>Conflit de plugin</li>



<li>Erreur SSL (HTTPS mal configuré)</li>



<li>Extension de sécurité bloquant les requêtes</li>



<li>Erreur de permaliens</li>
</ul>



<h2 class="wp-block-heading">Solution rapide (en 3 étapes)</h2>



<ol class="wp-block-list">
<li>Réenregistrer les permaliens</li>



<li>Désactiver les plugins</li>



<li>Vérifier l’URL du site (HTTP/HTTPS)</li>
</ol>



<h2 class="wp-block-heading">Guide détaillé</h2>



<h3 class="wp-block-heading">Étape 1 : Réinitialiser les permaliens</h3>



<p>Allez dans :<br>Réglages → Permaliens → Enregistrer les modifications</p>



<p>Sans rien changer.</p>



<h3 class="wp-block-heading">Étape 2 : Vérifier l’URL du site</h3>



<p>Dans :<br>Réglages → Général</p>



<p>Vérifie que :</p>



<ul class="wp-block-list">
<li>Adresse WordPress</li>



<li>Adresse du site</li>
</ul>



<p>Sont bien en HTTPS si ton site utilise un certificat SSL.</p>



<h3 class="wp-block-heading">Étape 3 : Désactiver les plugins</h3>



<p>Désactive tous les plugins, puis réactive-les un par un pour identifier le conflit.</p>



<h2 class="wp-block-heading">Code prêt à copier</h2>



<p>Dans <code>wp-config.php</code>, forcer HTTPS si nécessaire :</p>



<pre title="Forcer HTTPS dans wp-config.php" class="wp-block-code"><code lang="php" class="language-php">define('FORCE_SSL_ADMIN', true);</code></pre>



<h2 class="wp-block-heading">Cas hébergeurs connus</h2>



<p>OVH : vérifier que le SSL est activé<br>o2switch : forcer HTTPS via cPanel<br>Hostinger : activer SSL gratuit</p>



<h2 class="wp-block-heading">FAQ</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1770896982609"><strong class="schema-faq-question">Cette erreur supprime-t-elle mon contenu ?</strong> <p class="schema-faq-answer">Non, votre contenu est enregistré automatiquement en brouillon.</p> </div> <div class="schema-faq-section" id="faq-question-1770896994966"><strong class="schema-faq-question">Est-ce lié à Gutenberg ?</strong> <p class="schema-faq-answer">Oui, la plupart du temps.</p> </div> </div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Dans 80 % des cas, il s’agit d’un problème REST API ou SSL.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Consulte aussi notre <a href="https://thibautsoufflet.fr/blog/erreurs-wordpress-frequentes/" type="post" id="7581">guide complet des erreurs WordPress</a> pour éviter d’autres blocages.</p>



<div style="height:80px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/publication-echoue-wordpress/">“La publication a échoué” WordPress – Comment corriger l’erreur</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/publication-echoue-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CSS grid-lanes : fini le Masonry JavaScript en 2026 !</title>
		<link>https://thibautsoufflet.fr/blog/css-grid-lanes-fini-le-mansonry-javascript-en-2026/</link>
					<comments>https://thibautsoufflet.fr/blog/css-grid-lanes-fini-le-mansonry-javascript-en-2026/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 12:00:40 +0000</pubDate>
				<category><![CDATA[Web pratique]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7724</guid>

					<description><![CDATA[<p>Le futur des mises en page en Masonry sur le web est arrivé ! Après les bases posées par Mozilla, des années d'efforts de la part de l'équipe WebKit d'Apple et de nombreux débats au sein du groupe de travail CSS avec tous les navigateurs, son fonctionnement est désormais clair. Voici CSS Grid Lanes pour [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/css-grid-lanes-fini-le-mansonry-javascript-en-2026/">CSS grid-lanes : fini le Masonry JavaScript en 2026 !</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>Le futur des mises en page en Masonry sur le web est arrivé ! <br>Après les bases posées par Mozilla, des années d'efforts de la part de l'équipe WebKit d'Apple et de nombreux débats au sein du groupe de travail CSS avec tous les navigateurs, son fonctionnement est désormais clair.</strong></p>



<p>Voici CSS Grid Lanes pour notre plus grand plaisir !</p>



<pre title="La nouvelle propriété CSS grid-lanes pour créer des galerie Mansonry sans JavaScript" class="wp-block-code"><code lang="css" class="language-css line-numbers">.container {
  display: grid-lanes;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 16px;
}</code></pre>



<h2 class="wp-block-heading">Compatibilité de grid-lanes avec les navigateurs modernes en 2026</h2>



<p>Les perspectives de développement des navigateurs suggèrent que <strong>le support complet et cohérent pourrait arriver courant 2026</strong>, mais aujourd’hui nous sommes encore dans une phase d’exploration et d’implémentations préliminaires dans des versions expérimentales.</p>



<p><code>display: grid-lanes</code> est très prometteur, mais il <strong>n’est pas encore adopté par les navigateurs stables</strong>, donc à réserver à l’expérimentation avec des solutions de repli solides.</p>



<p><strong>À ce-jour, seul Safari 26.4 est compatible avec</strong> <code>display: grid-lanes</code> (février 2026)</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="800" height="374" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/caniuse-grid-lanes-css.jpg" alt="Can I Use : Tableau des compatibilités navigateurs de la propriété grid-lanes" class="wp-image-7785 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/caniuse-grid-lanes-css.jpg 800w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/caniuse-grid-lanes-css-300x140.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/caniuse-grid-lanes-css-768x359.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><figcaption class="wp-element-caption">Can I Use : Tableau des compatibilités navigateurs de la propriété grid-lanes</figcaption></figure>
</div>


<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Comment Grid Lanes fonctionne</h2>



<p>Voyons en détail comment créer cette mise en page magique et surpuissante (sans JavaScript) pour tes galeries photo.</p>



<p>Tu peux tester dès aujourd'hui cette <a href="https://webkit.org/demos/grid3/photos/" target="_blank" rel="noreferrer noopener nofollow">démo de mises en page de galeries photos</a> dans Safari Technology Preview.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="671" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/grid-lanes-pur-css-masonry-1024x671.jpg" alt="Disposition classique de type Masonry de photos de différents formats, toutes de même largeur, alignées en six colonnes." class="wp-image-7822 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/grid-lanes-pur-css-masonry-1024x671.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/grid-lanes-pur-css-masonry-300x197.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/grid-lanes-pur-css-masonry-768x503.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/grid-lanes-pur-css-masonry-1536x1007.jpg 1536w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/grid-lanes-pur-css-masonry.jpg 2000w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Commençons par le HTML</strong></p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;main class="container"&gt;
  &lt;figure&gt;&lt;img src="photo-1.jpg"&gt;&lt;/figure&gt;
  &lt;figure&gt;&lt;img src="photo-2.jpg"&gt;&lt;/figure&gt;
  &lt;figure&gt;&lt;img src="photo-3.jpg"&gt;&lt;/figure&gt;
  &lt;!-- etc --&gt;
&lt;/main&gt;</code></pre>



<p>On applique d'abord <code>display: grid-lanes</code> à l'élément parent afin de créer un conteneur de type Grid prêt à réaliser ce type de mise en page. Ensuite, nous utilisons <code>grid-template-columns</code> pour créer les « rangées » en exploitant toute la puissance de CSS Grid.</p>



<p>Dans ce cas, on utilise <code>repeat(auto-fill, minmax(250px, 1fr))</code> pour créer des colonnes flexibles d'au moins 250 pixels de large. Le navigateur décidera du nombre de colonnes à créer, en remplissant tout l'espace disponible.</p>



<p>Ensuite, <code>gap: 20px</code> nous donne des espaces de 20 pixels entre les colonnes et des espaces de 20 pixels entre les éléments à l'intérieur des colonnes.</p>



<p><strong>Voilà le CSS qui tient en 3 lignes, c'est tout !</strong></p>



<pre class="wp-block-code"><code lang="css" class="language-css">.container {
  display: grid-lanes;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 20px;
}</code></pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Tout comme dans la bibliothèque Masonry JavaScript classique, le navigateur décide lui-même de placer chaque élément dans la colonne qui le rapproche le plus du haut de la fenêtre. <strong>À l'instar du trafic routier, chaque voiture "change de voie" pour se retrouver dans celle qui lui permet d'avancer le plus loin possible.</strong></p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="800" height="764" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/mansonry-bouchon-voitures.jpg" alt="" class="wp-image-7799 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/mansonry-bouchon-voitures.jpg 800w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/mansonry-bouchon-voitures-300x287.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/mansonry-bouchon-voitures-768x733.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>
</div>


<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Essaie-le toi-même !</h2>



<p>Utilise le navigateur Safari 26.4 ou + et test Grid Lanes.<br><strong>Toutes les démos disponibles sur <a href="https://webkit.org/demos/grid3/" target="_blank" rel="noreferrer noopener nofollow">webkit.org/demos/grid3</a></strong> ont été mises à jour avec la nouvelle syntaxe, y compris d'autres cas d'utilisation de Grid Lanes. Cela ne concerne pas uniquement les images ! Par exemple, un méga menu de pied de page rempli de liens devient soudainement facile à mettre en page.</p>



<h2 class="wp-block-heading">Et maintenant ?</h2>



<p>Il reste quelques décisions à prendre au sein du groupe de travail CSS. Mais dans l'ensemble, la fonctionnalité décrite dans cet article est prête à être utilisée. <strong>Il est temps de l'essayer et de s'amuser avec en attendant sa compatibilité officielle avec les navigateurs récents.</strong></p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>BONUS</strong></p>



<p>Découvre aussi <a href="https://thibautsoufflet.fr/blog/personnaliser-liste-select-css-sans-javascript/" type="post" id="7726">la nouvelle fonction CSS appearance: base-select</a> qui te permet de personnaliser une liste sans aucun JavaScript.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="480" height="320" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/select-custom-html.gif" alt="Gif d'un selecteur en pur HTML et CSS pour démo choix équipage One Piece" class="wp-image-7739 img-fluid"/></figure>
</div>


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/css-grid-lanes-fini-le-mansonry-javascript-en-2026/">CSS grid-lanes : fini le Masonry JavaScript en 2026 !</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/css-grid-lanes-fini-le-mansonry-javascript-en-2026/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Personnaliser une liste &#8220;select&#8221; en CSS sans JavaScript, la nouveauté 2026</title>
		<link>https://thibautsoufflet.fr/blog/personnaliser-liste-select-css-sans-javascript/</link>
					<comments>https://thibautsoufflet.fr/blog/personnaliser-liste-select-css-sans-javascript/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 12:13:16 +0000</pubDate>
				<category><![CDATA[Web pratique]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7726</guid>

					<description><![CDATA[<p>Le CSS moderne est désormais suffisamment puissant pour gérer des animations complexes et des interactions utilisateur qui nécessitaient auparavant des scripts personnalisés. Dans cet article, nous allons explorer une des dernières fonctionnalités disponibles avec CSS et voir comment elle peut simplifier ton workflow et les performances de tes sites. Imagine un monde où tu peux [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/personnaliser-liste-select-css-sans-javascript/">Personnaliser une liste &#8220;select&#8221; en CSS sans JavaScript, la nouveauté 2026</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>Le CSS moderne est désormais suffisamment puissant pour gérer des animations complexes et des interactions utilisateur qui nécessitaient auparavant des scripts personnalisés. Dans cet article, nous allons explorer une des dernières fonctionnalités disponibles avec CSS et voir comment elle peut simplifier ton workflow et les performances de tes sites.</strong></p>



<p>Imagine un monde où tu peux créer des éléments <code>&lt;select&gt;</code> entièrement personnalisables sans écrire une ligne de JavaScript. C'est exactement ce qui devient possible avec ces nouvelles fonctionnalités CSS 2026, et c'est une évolution qu'on était impatient de voir arriver !</p>



<h2 class="wp-block-heading">Personnalisation du sélecteur HTML natif</h2>



<p>C'est une fonctionnalité que j'attendais sincèrement depuis des années, voyons donc comment elle fonctionne dans la pratique. <strong>L'élément <code>&lt;select&gt;</code> est la solution intégrée au navigateur pour créer un menu déroulant accessible, mais ses possibilités de personnalisation ont toujours été limitées</strong>.</p>



<p>Si tu voulais quelque chose de plus avancé que d'ajuster le remplissage ou de changer les couleurs, tu devais généralement créer un menu déroulant entièrement personnalisé avec un balisage supplémentaire, des gestionnaires JavaScript et toute la complexité qui accompagne la tentative d'imiter le comportement natif. </p>



<p><strong>Les sélecteurs personnalisables te permettent maintenant de combiner le meilleur des deux mondes</strong> : l'accessibilité native et la sémantique d'un véritable <code>&lt;select&gt;</code> avec une personnalisation avancée du style sans aucun code JavaScript !</p>



<p><strong>Dans la démo ci-dessous, j'utilise 2 nouvelles fonctionnalités CSS pour créer un sélecteur One Piece qui</strong> :</p>



<ul class="wp-block-list">
<li>Utilise le &lt;select&gt; natif pour la sémantique et l'accessibilité</li>



<li>Affiche une icône et une couleur d'arrière-plan pour chaque option</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="480" height="320" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/select-custom-html.gif" alt="Gif d'un selecteur en pur HTML et CSS pour démo choix équipage One Piece" class="wp-image-7739 img-fluid"/></figure>
</div>


<p><em>Note : cette fonctionnalité requiert Chrome 135+ ou Edge 135+</em></p>



<p class="codepen" data-height="300" data-pen-title="Personnaliser le select HTML en pure CSS" data-default-tab="html,result" data-slug-hash="yyaBGvN" data-user="Tibow" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/Tibow/pen/yyaBGvN">
  Personnaliser le select HTML en pure CSS</a> by Tibow (<a href="https://codepen.io/Tibow">@Tibow</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://public.codepenassets.com/embed/index.js"></script>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Tout cela est réalisé à l'aide d'un seul élément <code>&lt;select&gt;</code> et de quelques attributs data-*. L'interactivité provient des fonctionnalités suivantes : apparence : base-select (plus le select picker) et attributs attr().</p>



<h3 class="wp-block-heading">Compatibilité avec les navigateurs modernes</h3>



<p>Une compatibilité élargie à Safari et Firefox est attendue dans le courant de cette année 2026. Pour l'heure, cette nouvelle fonctionnalité est à utiliser avec parcimonie car uniquement compatible Chrome et Edge 135 et plus.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="769" height="373" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/screenshot-2026-02-23-at-18-55-23-appearance-css-mdn.png" alt="Tableau des compatibilités navigateur avec la propriété CSS base-select" class="wp-image-7744 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/screenshot-2026-02-23-at-18-55-23-appearance-css-mdn.png 769w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/screenshot-2026-02-23-at-18-55-23-appearance-css-mdn-300x146.png 300w" sizes="(max-width: 769px) 100vw, 769px" /><figcaption class="wp-element-caption">Tableau des compatibilités navigateur avec la propriété CSS base-select</figcaption></figure>
</div>


<h2 class="wp-block-heading">appearance: base-select et le select picker</h2>



<p>La première étape consiste à passer le contrôle en mode personnalisable :</p>



<pre class="wp-block-code"><code lang="css" class="language-css line-numbers">select,
select::picker(select) {
  appearance: base-select;
}</code></pre>



<p><a href="https://developer.mozilla.org/fr/docs/Web/CSS/Reference/Properties/appearance#base-select" target="_blank" rel="noreferrer noopener nofollow"><code>appearance: base-select</code></a> permet de rendre personnalisable l'apparence du volet déroulant.<br>Les navigateurs qui ne le prennent pas en charge ignoreront simplement la propriété et afficheront le menu déroulant normalement.</p>



<p>Une fois que tu as opté pour cette solution, le pseudo-élément <code>::picker(select)</code> représente le rendu de la liste déroulante que tu peux donc styliser librement.</p>



<pre class="wp-block-code"><code lang="css" class="language-css line-numbers">select::picker(select) {
  margin-block-end: 1em;
  border-radius: 12px;
  border: 1px solid #e0e0e0;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
}</code></pre>



<p>Grâce aux select personnalisables, le navigateur gère pour toi une grande partie de la complexité des listes déroulantes, notamment :</p>



<ul class="wp-block-list">
<li><strong>Gestion automatique des débordements</strong> : si le menu déroulant est plus haut que l'espace disponible, le navigateur gère le débordement pour toi. Cela inclut la limitation de la hauteur du sélecteur et la possibilité de le faire défiler si nécessaire, plutôt que de le laisser déborder de l'écran ou de t'obliger à calculer manuellement les hauteurs.</li>



<li><strong>Positionnement automatique de l'affichage du menu déroulant</strong> : le menu déroulant choisit automatiquement le meilleur emplacement pour s'afficher (haut ou bas), en fonction de l'espace disponible dans la fenêtre d'affichage. </li>



<li><strong>Gestion intégrée du focus</strong> : le comportement du focus est géré de manière native. Lorsque la sélection s'ouvre, le focus se déplace vers le sélecteur de manière prévisible. Et lorsqu'elle se ferme, le focus revient correctement.</li>



<li><strong>Navigation complète au clavier</strong> (touches fléches, Entrée, Échap) : les utilisateurs peuvent naviguer parmi les options à l'aide des touches du clavier, confirmer une sélection avec la touche Entrée et fermer le sélecteur avec la touche Échap, comme avec un élément normal.</li>



<li><strong>Prise en charge d'un contenu d'option plus riche</strong> : tu peux inclure plus que du texte brut dans chaque élément, comme des icônes, des étiquettes supplémentaires ou du contenu structuré.</li>
</ul>



<p>Ce sont des éléments que tu devrais normalement créer manuellement en JavaScript pour concevoir un menu déroulant personnalisé, mais ici, tout est géré nativement en CSS.</p>



<p>Un autre avantage majeur est le modèle d'amélioration progressive intégré. Si un navigateur ne prend pas encore en charge les sélections personnalisables, l'utilisateur obtient simplement l'élément <code>&lt;select&gt;</code> natif standard. Rien ne se casse et il n'est pas nécessaire de maintenir deux versions du composant.</p>



<h2 class="wp-block-heading">Fonction attr() avancée pour un style selon des données du HTML</h2>



<p>Enfin, la démo utilise la fonction <code>attr()</code> pour conserver les détails visuels déclarés dans les attributs data-*.</p>



<p>La fonction <code>attr()</code> est disponible depuis un certain temps déjà. Mais jusqu'à récemment, elle n'était fiable que pour la propriété <code>content</code>.</p>



<pre class="wp-block-code"><code lang="css" class="language-css">//HTML
&lt;option data-bg-color="#F8C9A0" value="chopper"&gt;

//CSS
option {
  background-color: attr(data-bg-color color, transparent);
}</code></pre>



<p>Avec la nouvelle version typée de <code>attr()</code>, on peut commencer à utiliser les valeurs d'attribut dans davantage d'endroits dans le CSS, à condition d'indiquer au navigateur le type attendu.</p>



<p>Dans cette démo, chaque option comprend un attribut <code>data-bg-color</code> qui définit la couleur d'arrière-plan au survol, et nous lisons cette valeur directement dans le CSS, terriblement efficace !</p>



<p>Comme nous traitons explicitement l'attribut comme une couleur, le navigateur l'analyse correctement et fourni en toute sécurité une valeur de repli si l'attribut est manquant. Ça nous ouvre les portes d'une stylisation davantage axée sur les données : tu peux modifier les couleurs du thème dans le code HTML sans toucher au CSS.</p>



<h2 class="wp-block-heading">En conclusion</h2>



<p>Réunis : <code>base-select</code>, le <code>select picker</code> et <code>attr()</code> permettent de créer un menu déroulant plus riche et qui reste fondamentalement un véritable élément <code>&lt;select&gt;</code>. Tu peux le personnaliser à souhait sans craindre de perdre le comportement natif et les fonctionnalités d'accessibilité intégrées.</p>



<p>Cette démo montre l'aspect le plus passionnant de l'évolution du CSS : remplacer plus de 150 lignes de JavaScript par seulement quelques fonctionnalités CSS est vraiment incroyable. </p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>BONUS</strong></p>



<p>Découvre aussi <a href="https://thibautsoufflet.fr/blog/css-grid-lanes-fini-le-mansonry-javascript-en-2026/" type="post" id="7724">la nouvelle fonction CSS grid-lanes</a> qui te permet de créer une grille Mansonry sans aucun JavaScript.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/grid-lanes-classic-dark-1024x671.png" alt="Disposition classique de type Mansonry de photos de différents formats, toutes de même largeur, alignées en six colonnes." class="wp-image-7791 img-fluid"/></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p></p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/personnaliser-liste-select-css-sans-javascript/">Personnaliser une liste &#8220;select&#8221; en CSS sans JavaScript, la nouveauté 2026</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/personnaliser-liste-select-css-sans-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ferrari, Porsche, Lamborghini, McLaren, Bugatti : quel constructeur a le site web le plus rapide ?</title>
		<link>https://thibautsoufflet.fr/blog/performance-web-ferrari-porsche-lamborghini-mclaren-bugatti/</link>
					<comments>https://thibautsoufflet.fr/blog/performance-web-ferrari-porsche-lamborghini-mclaren-bugatti/#respond</comments>
		
		<dc:creator><![CDATA[thibaut]]></dc:creator>
		<pubDate>Wed, 18 Feb 2026 11:22:51 +0000</pubDate>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Web pratique]]></category>
		<guid isPermaLink="false">https://thibautsoufflet.fr/?p=7636</guid>

					<description><![CDATA[<p>Ils construisent les voitures les plus rapides du monde. Certaines dépassent les 400 km/h et pulvérisent des records sur circuit. Mais aujourd’hui, on ne parle pas de chevaux. On parle de performance web, de LCP, et de Core Web Vitals. ⚡️ Parce qu’une question nous obsède : Les marques automobiles les plus rapides ont-elles aussi [&#8230;]</p>
<p>L’article <a href="https://thibautsoufflet.fr/blog/performance-web-ferrari-porsche-lamborghini-mclaren-bugatti/">Ferrari, Porsche, Lamborghini, McLaren, Bugatti : quel constructeur a le site web le plus rapide ?</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Ils construisent les voitures les plus rapides du monde. Certaines dépassent les 400 km/h et pulvérisent des records sur circuit.</p>



<p>Mais aujourd’hui, on ne parle pas de chevaux. On parle de <strong>performance web</strong>, de <strong>LCP</strong>, et de <strong>Core Web Vitals</strong>. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a1.png" alt="⚡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>Parce qu’une question nous obsède : <strong>Les marques automobiles les plus rapides ont-elles aussi les sites internet les plus rapides ?</strong></p>



<p>Alors passons les sites internet au banc d'essai et accrochez vos ceintures, car c'est inattendu !</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Méthodologie du test (benchmark performance web)</h2>



<p>Un peu de méthode avant de passer la 1ère (et pour pas être accusé de tricherie). Pour comparer ces sites de manière équitable, voici les conditions de tests scrupuleusement identiques :</p>



<ul class="wp-block-list">
<li>Test via Google Lighthouse</li>



<li>Mode navigation privée</li>



<li>Simulation mobile</li>



<li>Réseau standard (throttling activé)</li>



<li>Page d’accueil uniquement</li>



<li>Aucun cache</li>



<li>Même localisation</li>



<li>Réalisé le même jour - 16/02/2026 </li>
</ul>



<p><strong>Indicateurs mesurés :</strong></p>



<ul class="wp-block-list">
<li>Score Performance Lighthouse</li>



<li>Largest Contentful Paint (LCP)</li>



<li>Comportement général du chargement</li>
</ul>



<p><strong>Les constructeurs testés :</strong></p>



<ul class="wp-block-list">
<li>Bugatti</li>



<li>McLaren</li>



<li>Lamborghini</li>



<li>Porsche</li>



<li>Ferrari</li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Résultats : performance Lighthouse et LCP</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Marque</th><th>Score Performance</th><th>LCP</th></tr></thead><tbody><tr><td>Bugatti <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f947.png" alt="🥇" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>59/100</td><td>9.7s</td></tr><tr><td>McLaren <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f948.png" alt="🥈" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>52/100</td><td>12.2s</td></tr><tr><td>Porsche <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f949.png" alt="🥉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>51/100</td><td>14.1s</td></tr><tr><td>Lamborghini <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f36b.png" alt="🍫" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>39/100</td><td>22.5s</td></tr><tr><td>Ferrari <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f62d.png" alt="😭" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td>24/100</td><td>30.4s</td></tr></tbody></table></figure>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f534.png" alt="🔴" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Oui, vous avez bien lu, <strong>30.4 secondes de LCP pour Ferrari.</strong><br>À ce niveau, ce n’est plus un chargement. C’est un court-métrage ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3ac.png" alt="🎬" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Analyse détaillée par constructeur</h2>



<h3 class="wp-block-heading">Bugatti – Le plus rapide… mais pas ouf</h3>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d9415d6e2&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d9415d6e2" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/bugatti-website-1024x482.jpg" alt="Site internet de Bugatti" class="wp-image-7651 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/bugatti-website-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/bugatti-website-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/bugatti-website-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/bugatti-website.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d9415deef&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d9415deef" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-bugatti-1024x482.jpg" alt="Résultat de performance Lighthouse du site internet de Bugatti" class="wp-image-7652 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-bugatti-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-bugatti-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-bugatti-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-bugatti.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p style="font-size:25px"><strong>Score : 59<br>LCP : 9.7 secondes</strong></p>



<p>Bugatti arrive en tête du classement. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3c6.png" alt="🏆" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br>Mais ne nous enflammons pas, 9.7 secondes pour afficher l’élément principal reste très très au-dessus des recommandations Google (idéalement &lt; 2.5s).</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Le site privilégie :</strong></p>



<ul class="wp-block-list">
<li>Images ultra haute définition</li>



<li>Expérience immersive</li>



<li>Design premium</li>



<li>Transitions élégantes</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26ab.png" alt="⚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Parmi les points noirs des performances, on notera :</strong></p>



<ul class="wp-block-list">
<li>Un manque de recours à fetchpriority=high pour réduire le LCP</li>



<li>Des visuels un peu trop lourds (mais qualitatifs)</li>



<li>Une charge utile réseau sacrifiée par l'affichage de nombreuses vidéos .mp4</li>



<li>Et surtout du code JavaScript massif qui demande du temps (+ de 5s) au thread principal pour l'analyser, le compiler et l'exécuter</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>En synthèse :</strong></p>



<p>Le luxe passe avant la vitesse, mais avec un ajustement de quelques règles de priorité d'affichage, couplé à des visuels plus léger et un peu moins de vidéos le score serait juste merveilleux !</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">McLaren – L’ingénierie, mais beaucoup de JavaScript</h3>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d9415ebc6&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d9415ebc6" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/mclaren-website-1024x482.jpg" alt="Site internet de McLaren" class="wp-image-7660 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/mclaren-website-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/mclaren-website-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/mclaren-website-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/mclaren-website.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d9415f3ab&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d9415f3ab" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-mclaren-1024x482.jpg" alt="Résultat de performance Lighthouse de 52 pour le site internet de McLaren" class="wp-image-7663 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-mclaren-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-mclaren-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-mclaren-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-mclaren.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p style="font-size:25px"><strong>Score : 52<br>LCP : 12.2 secondes</strong></p>



<p>McLaren propose une expérience technique et immersive.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Cependant :</strong></p>



<ul class="wp-block-list">
<li>Scripts lourds</li>



<li>Animations nombreuses</li>



<li>Chargement progressif complexe</li>
</ul>



<p>Résultat : un LCP au-delà de 12 secondes. L'écurie à la couleur mandarine reste ironiquement fidèle à elle même avec un score dans le orange. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f34a.png" alt="🍊" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26ab.png" alt="⚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Parmi les points noirs des performances, on notera :</strong></p>



<ul class="wp-block-list">
<li>Des contrastes insuffisants entre les couleurs de fond et de texte </li>



<li>Une charge utile réseau sacrifiée par l'affichage de vidéos .mp4 au dessus de la ligne de flottaison (malgré des liens vidéos via CDN)</li>



<li>Le chargement de nombreuses balises Google Tag Manager qui viennent manger + de 1.2s</li>



<li>Ici aussi, le code JavaScript demande du temps (environ 5s) au thread principal pour l'analyser, le compiler et l'exécuter</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>En synthèse :</strong></p>



<p>L’ingénierie automobile ne garantit pas l’optimisation front-end. La charte graphique de la marque peut nuire à son accessibilité (ce qui est relativement bien maîtrisé dans les faits) et le travail SEO est propre. </p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Porsche – L’efficacité… avec surcharge moderne</h3>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d941601d2&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d941601d2" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/porsche-website-1024x482.jpg" alt="Site internet de Porsche" class="wp-image-7665 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/porsche-website-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/porsche-website-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/porsche-website-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/porsche-website.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d94160a15&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d94160a15" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-porsche-1024x482.jpg" alt="Résultat de performance Lighthouse de 51 pour le site internet de Porsche" class="wp-image-7664 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-porsche-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-porsche-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-porsche-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-porsche.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p style="font-size:25px"><strong>Score : 51<br>LCP : 14.1 secondes</strong></p>



<p>On attendait une performance chirurgicale, c'est loupé ! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f915.png" alt="🤕" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Le site reste solide structurellement, mais :</strong></p>



<ul class="wp-block-list">
<li>Animations nombreuses</li>



<li>Assets conséquents</li>



<li>Hero visuel massif</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26ab.png" alt="⚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Parmi les points noirs des performances, on notera :</strong></p>



<ul class="wp-block-list">
<li>Un poids élevé des images car non délivrées aux formats modernes (jpg au lieu de webp ou avif) - une optimisation simple qui lui enlève des points essentiels, dommage...</li>



<li>Une charge utile réseau très sollicitée par une volée de vidéos au format .ts (malgré des liens vidéos établis via leur sous-domaine videos.porsche.com)</li>



<li>Insolite : des erreurs JS remontent dans la console telle que <code>Error: [Porsche Design System v3.31.0] usage of p-link-pure is not valid.</code></li>



<li>Moins de gourmandise JavaScript mais toujours bien présent avec un temps d'exécution d'environ 2s pour le thread principal</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>En synthèse :</strong></p>



<p>L’expérience utilisateur est premium, mais les Core Web Vitals en souffrent. On note tout de même un soin particulier apporté à l'accessibilité, à un JavaScript contenu ainsi qu'au respect des bonnes pratiques et à la qualité du SEO <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f44f.png" alt="👏" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Lamborghini – L’expérience cinématographique</h3>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d941616df&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d941616df" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/lamborghini-website-1024x482.jpg" alt="Site internet de Lamborghini" class="wp-image-7659 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/lamborghini-website-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/lamborghini-website-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/lamborghini-website-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/lamborghini-website.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d94161ed7&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d94161ed7" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-lamborghini-1024x482.jpg" alt="Résultat de performance Lighthouse de 39 pour le site internet de Lamborghini" class="wp-image-7662 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-lamborghini-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-lamborghini-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-lamborghini-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-lamborghini.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p style="font-size:25px"><strong>Score : 39<br>LCP : 22.5 secondes</strong></p>



<p>Lamborghini ne charge pas une page, elle raconte une histoire.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Pas de doutes, le taureau charge :</strong></p>



<ul class="wp-block-list">
<li>Vidéos hero</li>



<li>Transitions spectaculaires</li>



<li>Scroll animé</li>



<li>Effets immersifs</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26ab.png" alt="⚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Parmi les points noirs des performances, on notera :</strong></p>



<ul class="wp-block-list">
<li>Des négligences bêtes dans la qualité du code provoquant une perte de points sur l'accessibilité et le SEO (contraste fond/écriture, balisage de listes, attribut hreflang confus...)</li>



<li>Pour Lamborghini, le surpoids ne vient pas des vidéos mais d'un JS obèse dévorant 3.7s</li>



<li>Ironiquement le serveur est trop lent puisqu'il a mis +1.3s à de latence</li>



<li>Des règles de durée de vie du cache trop courtes, notamment pour les images et le JS</li>



<li>L'utilisation d'images au format .png (pourquoi ?) au lieu de .webp ou .avif</li>



<li>La console affiche dans le navigateur des erreurs répétées en JS telle que <code>TypeError: Cannot read properties of null (reading 'scrollWidth')</code></li>



<li>Le temps d'exécution pour le thread principal est énorme et passe les 6.2s</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>En synthèse :</strong></p>



<p>Résultat : un LCP supérieur à 20 secondes, le taureau a pris de l'embonpoint. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f402.png" alt="🐂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br>L’émotion l’emporte largement sur la performance web pour Lamborghini.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Ferrari – LCP en mode marathon</h3>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d94162bc6&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d94162bc6" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/ferrari-website-1024x482.jpg" alt="Site internet de Ferrari" class="wp-image-7658 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/ferrari-website-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/ferrari-website-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/ferrari-website-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/ferrari-website.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69f9d941633dd&quot;}" data-wp-interactive="core/image" data-wp-key="69f9d941633dd" class="wp-block-image size-large wp-lightbox-container"><img decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-ferrari-1024x482.jpg" alt="Résultat de performance Lighthouse de 24 pour le site internet de Ferrari" class="wp-image-7661 img-fluid" srcset="https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-ferrari-1024x482.jpg 1024w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-ferrari-300x141.jpg 300w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-ferrari-768x362.jpg 768w, https://thibautsoufflet.fr/wp-content/uploads/2026/02/pagespeed-lighthouse-ferrari.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandir"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p style="font-size:25px"><strong>Score : 24<br>LCP : 30.4 secondes</strong></p>



<p>Ferrari ferme la marche avec 30 secondes pour le Largest Contentful Paint (LCP), c'est plus de 3 arrêts aux stands en formule 1.</p>



<p>Cela signifie que l’élément principal visible à l’écran met plus d’une demi-minute à se charger complètement. Enzo ne serait sans doute pas très jouasse !</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/27a1.png" alt="➡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Le site mise tout sur :</strong></p>



<ul class="wp-block-list">
<li>Expérience immersive</li>



<li>Vidéo et visuels très lourds</li>



<li>Animations multiples</li>



<li>Branding avant performance</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26ab.png" alt="⚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Parmi les points noirs des performances, on notera :</strong></p>



<ul class="wp-block-list">
<li>Comme pour Lamborghini, certaines règles de code non respectées nuisent à l'accessibilité (contraste fond/écriture insuffisant, balisage de listes, espacement d'éléments cliquables trop faibles, ordre des titres dans la structure...)</li>



<li>Plusieurs vidéos 4K qui atteignent parfois 1 minute viennent démolir la performance</li>



<li>Un moteur de rendu dense avec WebGL/WebGPU utilisé pour afficher des éléments graphiques dynamiques et texturés reposant sur Adobe Experience Manager (AEM)</li>



<li>Des règles de durée de vie du cache trop courtes, notamment pour les images et le JS</li>



<li>Le temps d'exécution pour le thread principal est énorme et passe les 14s</li>
</ul>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>En synthèse :</strong></p>



<p>C’est spectaculaire, certes, mais en termes d’optimisation SEO et d’expérience mobile, c’est clairement problématique.<br>Ferrari assume complètement la priorité à l'effet "Waouh" et à l'image perçue avant le confort de l'expérience utilisateur. L'internaute qui vient chez eux ne vient pas par hasard et saura être patient pour en prendre plein les yeux.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Pourquoi les sites des marques de luxe sont-ils si lents ?</h2>



<p>Ce benchmark révèle un phénomène intéressant chez ces constructeurs accros à la performance sportive et au luxe.</p>



<p><strong>Plus une marque est :</strong></p>



<ul class="wp-block-list">
<li>Premium</li>



<li>Visuelle</li>



<li>Expérientielle</li>



<li>Axée storytelling</li>
</ul>



<p><strong>Plus le site :</strong></p>



<ul class="wp-block-list">
<li>Est lourd en images et vidéos</li>



<li>Utilise beaucoup de JavaScript</li>



<li>Multiplie les animations</li>



<li>Charge des polices et ressources externes</li>
</ul>



<p><strong>Le résultat ? Des scores Lighthouse faibles et des LCP élevés. Le marketing expérientiel entre en conflit direct avec la performance technique.</strong></p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Impact SEO et Core Web Vitals</h2>



<p>Un LCP supérieur à 2.5 secondes est considéré comme "à améliorer". Au-delà de 4 secondes, il est jugé mauvais. Ici, <strong>aucun constructeur ne respecte les recommandations</strong>.</p>



<p>Conséquences possibles :</p>



<ul class="wp-block-list">
<li>Dégradation de l’expérience mobile</li>



<li>Taux de rebond élevé</li>



<li>Impact SEO</li>



<li>Classement Google affecté</li>
</ul>



<p>Même pour des marques iconiques, la performance web reste un enjeu stratégique.</p>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Conclusion : la vraie hypercar, c’est celle qui charge vite</h2>



<p>Sur circuit :</p>



<ul class="wp-block-list">
<li>Bugatti bat des records.</li>



<li>Ferrari fait vibrer les moteurs.</li>



<li>Lamborghini impressionne.</li>



<li>McLaren calcule.</li>



<li>Porsche maîtrise.</li>
</ul>



<p>Sur le web ? Aucun ne descend sous les 9 secondes de LCP.</p>



<p>La leçon est claire : La performance automobile ne garantit pas la performance web et en 2026, la véritable hypercar digitale n’est pas celle qui atteint 400 km/h, c’est <strong>celle qui affiche son contenu en moins de 2 secondes !</strong></p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column px-4 pb-5 has-background is-layout-flow wp-block-column-is-layout-flow" style="background-color:#f2f2f2">
<h3 class="wp-block-heading has-text-align-center" id="h-besoin-d-un-expert-pour-booster-les-performances-de-ton-site-wordpress">Besoin d'un expert pour booster les performances de ton site WordPress ?</h3>



<p class="has-text-align-center">Reçoit une estimation gratuite des optimisations à apporter à ton site web.<br><a href="https://thibautsoufflet.fr/contact/">Contacte-moi</a> pour en discuter ensemble !<br></p>
</div>
</div>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>
<p>L’article <a href="https://thibautsoufflet.fr/blog/performance-web-ferrari-porsche-lamborghini-mclaren-bugatti/">Ferrari, Porsche, Lamborghini, McLaren, Bugatti : quel constructeur a le site web le plus rapide ?</a> est apparu en premier sur <a href="https://thibautsoufflet.fr">Tibow Webdesign</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thibautsoufflet.fr/blog/performance-web-ferrari-porsche-lamborghini-mclaren-bugatti/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
