Firefox 和 Safari 上的下拉箭头样式错误
Posted
技术标签:
【中文标题】Firefox 和 Safari 上的下拉箭头样式错误【英文标题】:Bad dropdown arrow styling on firefox and safari 【发布时间】:2021-06-08 17:35:59 【问题描述】:我的下拉菜单在 Chrome 上看起来像左侧,但在 Firefox 和 Safari
上看起来像右侧如何设置下拉菜单的样式,使其看起来像 safari 和 Firefox 上的 chrome 版本? 我不喜欢 Firefox 上显示的插入符号的灰色背景 (我也想将插入符号向左移动一点)
这是我的css
和html
用于下拉菜单。你可以在firefox上点击“运行代码sn-p”,看看是不是和右边的一样。
select
box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.7);
border-radius: 1rem;
padding: 0.25rem 0.5rem;
border: 0;
select:active, select:focus
outline: none;
<select type="dropdown">
<option>Option 1</option>
<option>Option 2</option>
</select>
【问题讨论】:
元素是什么?一个选择? @epascarello 抱歉,我更新了我的css
。还有一个jsfiddle here
developer.mozilla.org/en-US/docs/Web/CSS/appearance
使用CSS padding: 0.25rem 0.5rem;
而不是定义所有边以节省空间
【参考方案1】:
您应该重置默认样式并添加跨浏览器统一的自定义样式。这下面的 sn-p 应该会有所帮助
select
box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.7);
border-radius: 1rem;
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-right: 1rem;
padding-left: 0.5rem;
border: 0;
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E');
background-repeat: no-repeat, repeat;
background-position: right .7em top 50%;
background-size: .65em auto;
<select type="dropdown">
<option>Option 1</option>
<option>Option 2</option>
</select>
阅读这篇博文的更多内容:https://css-tricks.com/styling-a-select-like-its-2019/
【讨论】:
【参考方案2】:select
box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.7);
border-radius: 1rem;
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-right: 1.5rem; /* increased to make space for arrow*/
padding-left: 0.5rem;
border: 0;
appearance: none; /* remove default arrow */
outline: none; /* looks better without outline */
.custom-select
position: relative; /* container for pseudo element */
display: inline-block; /* make width to fit content */
.custom-select::after
content: '⌄';
position: absolute;
background: transparent;
right: 10%;
top: -10%;
pointer-events: none; /* let clicks go through */
<div class="custom-select">
<select type="dropdown">
<option>Option 1</option>
<option>Option 2</option>
</select>
</div>
这是一种非常简单有效的方法,在每个浏览器上都是一致的。
HTML:
在选择元素上添加包装器CSS:
在选择元素上设置appearance:none
并相应增加padding-right
。
设置包装器position: relative;
和display: inline-block;
使其成为绝对定位伪元素的容器。
wrapper::after
元素的样式和位置随您的喜好而定,使用 pointer-events:none
以便您的点击将通过它,打开选择。
【讨论】:
以上是关于Firefox 和 Safari 上的下拉箭头样式错误的主要内容,如果未能解决你的问题,请参考以下文章