我在webkit-appearance属性设置为none后,在选择框中设置了一个背景图片(向下箭头)。当选项列表打开时,我想显示另一个背景图片(向上箭头)。是否有一个伪类或其他东西?我在搜索过程中找不到任何东西...
l3zydbqr1#
你可以使用:focus伪类。但是这将指示“打开”状态,当通过tab选择<select>或刚刚选择一个项目时也是如此。为了避免这种情况,您可以使用类似select:hover:focus的东西,但这是相当丑陋的,不是一个可靠的解决方案。
:focus
<select>
select:hover:focus
select:focus { background-color: blue; color: white; }
<select> <option>Click me</option> <option>A</option> <option>B</option> <option>C</option> </select>
camsedfj2#
无法检测HTML select元素是否是使用CSS或JavaScript打开的。如果你想定制一个下拉菜单的箭头符号,你最好的选择是使用一个Map到隐藏的select元素的下拉菜单组件。
select
9o685dep3#
这个职位是旧的,但今天;::before和::after伪类仍然不能处理select元素。这里是使用:focus-within伪类的好机会,我制作了这个简单的codepen来演示它的使用。codepen代码片段:
::before
::after
:focus-within
@charset "UTF-8"; .wrapper { position: relative; display: inline-block; } .wrapper::after { content: ""; font-family: "Font Awesome 5 Free"; font-weight: 900; position: absolute; right: 16px; top: 22px; font-size: 18px; pointer-events: none; transition: 0.2s ease; } .wrapper:focus-within::after { transform: rotateX(0.5turn) translateY(-2px); } .wrapper select { background: linear-gradient(180deg, #F8F9FB 0%, #F1F2F4 100%); border: 1px solid var(--grayscale-400); box-sizing: border-box; border-radius: 3px; width: 200px; left: 2px; cursor: pointer; padding: 24px 12px; font-size: 16px; appearance: none; } .wrapper select:focus { outline: unset; } .wrapper select > option:first-child { display: none; }
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet"/> <div class="wrapper"> <select> <option>Choice Label First</option> <option value="Choice 1">Choice 1</option> <option value="Choice 2">Choice 2</option> <option value="Choice 3">Choice 3</option> <option value="Choice 4">Choice 4</option> </select> </div>
kse8i1jr4#
你可以用途:聚焦和不聚焦它的变化
select:focus { background-color: blue; color: white; } <select onchange="this.blur()"> <option>Click me</option> <option>A</option> <option>B</option> <option>C</option> </select>
4条答案
按热度按时间l3zydbqr1#
你可以使用
:focus
伪类。但是这将指示“打开”状态,当通过tab选择
<select>
或刚刚选择一个项目时也是如此。为了避免这种情况,您可以使用类似select:hover:focus
的东西,但这是相当丑陋的,不是一个可靠的解决方案。camsedfj2#
无法检测HTML
select
元素是否是使用CSS或JavaScript打开的。如果你想定制一个下拉菜单的箭头符号,你最好的选择是使用一个Map到隐藏的
select
元素的下拉菜单组件。9o685dep3#
这个职位是旧的,但今天;
::before
和::after
伪类仍然不能处理select元素。这里是使用
:focus-within
伪类的好机会,我制作了这个简单的codepen来演示它的使用。codepen
代码片段:
kse8i1jr4#
你可以用途:聚焦和不聚焦它的变化