以下の問題は and を使用<img />
してPHP
(またはjavascript
それについても) 解決できることはわかっていますが、可能であれば だけを使用して解決したいと考えていCSS
ます。
言語メニューをマークアップしました。このメニューでは、各名前付き言語の横にフラグ アイコンを表示したいと考えています。
理想的には、新しい言語を追加するたびに、CSS に新しい行を追加する必要がないようにしたいと考えています。
しかし、attr()
またはCSSカスタムプロパティまたはその他の方法を使用して、(eg)class="fr"
とだけを使用してブラウザに各リスト項目の正しい背景画像を導出させる方法はありdata-language="fr"
ますか?
注意: これが CSS の現在の機能を超えることに対しては十分に準備ができていますが、これにアプローチする独創的な方法があるかどうかを知りたいと思っています。
.language li {line-height: 40px;}
.language li::before {content:''; display:inline-block; position:relative; width:27px; height:27px; margin-right:9px; vertical-align:middle; background-color: rgb(191,191,191); border-radius:3px;}
.language li.de::before {background-image: url('/flags/de.png');}
.language li.en::before {background-image: url('/flags/en.png');}
.language li.es::before {background-image: url('/flags/es.png');}
.language li.fr::before {background-image: url('/flags/fr.png');}
<div class="language">
<h2>Select Language:</h2>
<ul>
<li class="en" data-language="en">English</li>
<li class="de" data-language="de">Deutsch</li>
<li class="es" data-language="es">Español</li>
<li class="fr" data-language="fr">Français</li>
</ul>
</div>
追加情報:
私の最初のアプローチは、フラグ アイコンの角を丸くすることができなかったため、不適切でした。
.language li {
background-position:0 center;
background-size: 27px 27px;
background-repeat: no-repeat;
padding-left:36px;
}
.language li.de {background-image: url('/flags/de.png');}
.language li.en {background-image: url('/flags/en.png');}
.language li.es {background-image: url('/flags/es.png');}
.language li.fr {background-image: url('/flags/fr.png');}
<div class="language">
<h2>Select Language:</h2>
<ul>
<li class="en" data-language="en">English</li>
<li class="de" data-language="de">Deutsch</li>
<li class="es" data-language="es">Español</li>
<li class="fr" data-language="fr">Français</li>
</ul>
</div>
しかし、私が目指していることを達成する可能性がここにある場合は、丸みを帯びたコーナーを飛ばして喜んでいます.