Firefox 和 Safari 上的下拉箭头样式错误

Posted

技术标签:

【中文标题】Firefox 和 Safari 上的下拉箭头样式错误【英文标题】:Bad dropdown arrow styling on firefox and safari 【发布时间】:2021-06-08 17:35:59 【问题描述】:

我的下拉菜单在 Chrome 上看起来像左侧,但在 FirefoxSafari

上看起来像右侧

如何设置下拉菜单的样式,使其看起来像 safari 和 Firefox 上的 chrome 版本? 我不喜欢 Firefox 上显示的插入符号的灰色背景 (我也想将插入符号向左移动一点)


这是我的csshtml 用于下拉菜单。你可以在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 上的下拉箭头样式错误的主要内容,如果未能解决你的问题,请参考以下文章

css清除select的下拉箭头样式

数据列表箭头未进入 ie 和 firefox

清除Css中select的下拉箭头样式

移动设备上的 Safari - 计算样式与给定不同

无法让原始选择下拉箭头在 Mozilla 中消失

如何改变select下拉框的样式