【问题标题】:<select> <option> element hover glitches if <select> has hover style applied如果 <select> 应用了悬停样式,则 <select> <option> 元素悬停故障
【发布时间】:2013-09-11 19:12:47
【问题描述】:

当从&lt;select&gt; 中选择某些东西时,当悬停时有不同的样式时,它会将悬停&lt;option&gt; 重置为初始状态。我该如何克服这个问题,因为如果存在 transition 属性,它会变得更糟?

编辑:

  • FF23,IE10,O12.5好像没有这个问题
  • Safari 和谷歌浏览器显然有这个问题。

要查看我在说什么,请按照以下步骤操作:

  1. 选择最后一个选项
  2. 点击选择框
  3. 将鼠标慢慢向下移动到选项上,现在您可以看到选项是如何出现故障的

示例:jsFiddle

CSS:

select {
    padding: 5px;
    border: 1px solid blue;
    -moz-transition: all 0.35s ease-out;
    -o-transition: all 0.35s ease-out;
    -webkit-transition: all 0.35s ease-out;
    transition: all 0.35s ease-out;
}
select:hover {
    border: 1px solid red;
}

HTML:

<select>
    <option value="mankind">Man kind</option>
    <option value="humankind">Human kind</option>
    <option value="animalkind">Animal kind</option>
</select>

这似乎是与 Chrome 相关的错误

【问题讨论】:

    标签: html css google-chrome select


    【解决方案1】:

    不要认为你可以做任何事情..看起来像缓动时围绕控件渲染的问题。

    如果你坚持这种行为,你可以试探。骗它——你能把 SELECT 打包到 div 里,让 div 变得轻松吗?

    <div class="whizbangselect">
      <select>
        <option value="mankind">Man kind</option>
        <option value="humankind">Human kind</option>
        <option value="animalkind">Animal kind</option>
      </select>
    </div>
    

    风格:

    select {
        border: none;
    }
    div.whizbangselect {
        display: inline-block;
        border: 1px solid blue;
    
        -moz-transition: border 1s ease-out;
        -o-transition: border 1s ease-out;
        -webkit-transition: border 1s ease-out;
        transition: border 1s ease-out;
    }
    div.whizbangselect:hover { border: 1px solid red; }
    

    注意:你必须使用填充

    【讨论】:

    • jsfiddle.net/skmasq/ezc4Z - 您可以在此处看到,鼠标移出浏览器仍会重置该值。从积极的方面来说,它在盒子里根本不会出现故障。不错的黑客。
    • Looks for webkit 不会将鼠标悬停在下拉面板上视为悬停,而 FF 会 - 一旦您将鼠标移出面板,您不会悬停,直到您将鼠标悬停在实际的下拉控件上。可能就是这样。
    • 有趣的是,看起来这不是问题,而我认为这很明显。
    【解决方案2】:

    希望我没有误解你的问题。

    试试这个Jsfiddle

    select {
        outline: 0; 
        padding: 5px;
        border: 1px solid blue;
        -moz-transition: all 0.35s ease-out;
        -o-transition: all 0.35s ease-out;
        -webkit-transition: all 0.35s ease-out;
        transition: all 0.35s ease-out;
    }
    select:hover {
        border: 1px solid red;
    }
    

    我输入了selectoutline:0

    【讨论】:

    • 虽然这减少了效果,但并没有消除它。 :(。+1 表示减少效果。
    • @skmasq - 试试这个JSfiddle - 我将transition: all 0.35s ease-out; 更改为transition: ease-out 0.3s border; - 我在最后一个Chrome、FF 和Safari 上测试过......我没有发现任何奇怪......
    • 您可以在缓慢向下移动鼠标时看到选项之间出现故障。
    猜你喜欢
    • 2011-12-05
    • 2012-01-19
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2011-10-25
    • 2020-11-10
    相关资源
    最近更新 更多