【问题标题】:Styling <select> tag when option has been selected [CSS3]选择选项时设置 <select> 标记的样式 [CSS3]
【发布时间】:2016-12-14 21:00:34
【问题描述】:

我有一个选择标签,像这样:

<select>
  <option>Blah</option>
  <option>Blah</option>
  <option>Blah</option>
  <option>Blah</option>
</select>

我使用 MaterializeCSS 作为我的 CSS 框架,并且已经成功地覆盖并将选择性样式应用于其他输入元素,如 textareas 等 (http://materializecss.com/forms.html)

我只是想在选择一个选项后调整标签的border-bottomcolor

我尝试了以下伪类:[:active, :focus, :checked, :enabled, :valid, ::before, and ::after] 试图找到适合我应用 CSS 规则的状态。与往常一样,我已经挖掘了具体化源代码并在 MDN 上搜索了正确的答案,但到目前为止还没有这样的运气。

我希望有人能指点我正确的文档,或者在这个文档上给我一根骨头。感谢您的帮助。

【问题讨论】:

    标签: html css select styling materialize


    【解决方案1】:

    很遗憾,这在使用 CSS 时是不可能的。一些可能的解决方法:

    1. 使用javascript
    2. 将 html5 必需属性与 CSS 的 :required 伪类一起使用。比如:

    <select required>
        <option value="">None</option>
        <option>Blah</option>
        <option>Blah</option>
        <option>Blah</option>
        <option>Blah</option>
    </select>
    

    select {
        border: 5px solid #ccc;
    }
    
    select:valid {
        border-color: green;
    }
    

    不是一个完美的解决方案,但它可能对你正在做的事情有所帮助。

    JSFiddle

    Browser support

    【讨论】:

    • 感谢您的反馈。我想我会写一点 JS 来完成这个。您是否会知道在未来的 HTML/CSS 规范中是否有计划允许这种事情发生?
    • 我没有听说过类似的东西,我不认为这是他们会添加的东西,但我很可能是错的。
    • @WillCarron 顺便说一句,如果它回答了您的问题,请不要忘记将其标记为已回答,以便其他用户可以看到它已被回答。要将其标记为已回答,请单击上/下箭头旁边的复选框。
    • 谢谢提醒!以后会记得的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2011-01-25
    • 2017-12-30
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多