CSSでのドロップダウン
13633 ワード
1 - CSSのウェイ
この記事では、CSSでドロップダウンメニューを作成する方法を紹介します.そのために、我々は使用する
:focus-within
. 新しいCSSの機能は、物事をより簡単に行います.それで、我々は必要ですか?まず、私たちは
<div>
そして、divの中で、我々は必要です<button>
(それが焦点になっているので)<nav>
ドロップダウンメニュー.まずHTML構造を作成しましょう.
<div class="dropdown">
<button>Menü</button>
<nav>
<ul>
<li>
<a href="#">
Edit
</a>
</li>
<li>
<a href="#">
Delete
</a>
</li>
<li>
<a href="#">
Reply
</a>
</li>
</ul>
</nav>
</div>
まず第一に、私は私を隠す必要があります<nav>
タグ..dropdown nav {
display: none;
}
そして今、私は<button>
, 私は表示する必要があります<nav>
もう一度タグ.それをするために:focus-within
. 作りましょう..dropdown nav {
display: none;
}
.dropdown:focus-within nav {
display: block
}
これは動作します.しかし、1つの問題.をクリックします.<a>
内部タグ<nav>
タグは、利用可能になってしまいますので:focus-within
は動作しません.それで、これがあなたのための問題であるならば、あなたは加えることができます
[tabindex="0"]
あなたに<nav>
タグ.そうすると<nav>
焦点にもなる.それをしましょう.<div class="dropdown">
<button>Menü</button>
<nav tabindex="0">
<ul>
....
</ul>
</nav>
</div>
私はそれが醜いということを知っています.私は使用するSASS
, あなたはそれをスタイルに何かを使用することができます.* {
padding: 0;
margin: 0;
list-style: none;
border: 0;
text-decoration: none;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.dropdown {
position: relative;
button {
height: 2.5rem;
padding: 0 1.25rem;
background: #333;
color: #fff;
border-radius: 0.25rem;
font-size: 1rem;
cursor: pointer;
}
nav {
position: absolute;
top: 100%;
left: 0;
opacity: 0;
visibility: hidden;
transition: 300ms all;
border: 2px solid #333;
border-radius: 0.25rem;
width: 12.5rem;
ul {
padding: 0.188rem 0;
li {
a {
display: block;
padding: 0.438rem 0.625rem;
color: #333;
&:hover {
background: #f8f8f8;
}
}
}
}
}
&:focus-within nav {
opacity: 1;
visibility: visible;
transform: translateY(0.25rem);
}
}
かしこまりましたチェックアウトできますcodepen .
2 -風上の方法
CSSを使用せずに、どのように高速にすることができますか?はい、Tarwindを使用して:DはそれをTailwindと同じドロップダウンにしましょう.
<div class="p-4">
<div class="group relative">
<button class="bg-gray-800 text-white px-6 h-10 rounded">Menü</button>
<nav tabindex="0" class="border border-2 bg-white invisible border-gray-800 rounded w-60 absolute left-0 top-full transition-all opacity-0 group-focus-within:visible group-focus-within:opacity-100 group-focus-within:translate-y-1">
<ul class="py-1">
<li>
<a href="#" class="block px-4 py-2 hover:bg-gray-100">
Edit
</a>
</li>
<li>
<a href="#" class="block px-4 py-2 hover:bg-gray-100">
Delete
</a>
</li>
<li>
<a href="#" class="block px-4 py-2 hover:bg-gray-100">
Reply
</a>
</li>
</ul>
</nav>
</div>
</div>
そして、ここでdemo 注意: JITを使っています.いくつかの変形が動作しない場合(グループフォーカスなど)を設定できます
tailwind.config.js
このようにmodule.exports = {
mode: 'jit',
purge: ['./src/**/*.html'], // change it
darkMode: 'media',
theme: {
extend: {
},
},
variants: {
extend: {},
},
}
読んでくださってありがとうございます.Reference
この問題について(CSSでのドロップダウン), 我々は、より多くの情報をここで見つけました https://dev.to/tayfunerbilen/dropdown-with-css-tailwind-i7pテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol