【问题标题】:How can I activate a CSS style for a label when hovering over the associated checkbox?将鼠标悬停在关联的复选框上时,如何激活标签的 CSS 样式?
【发布时间】:2017-11-23 02:18:18
【问题描述】:

每次我将鼠标悬停在复选框的标签上时,它都会变成黄色:

标记

<input type="checkbox" value="hello" id="hello" name="deletefiles[]"/>
<label for="hello">hello</label>

CSS

label:hover, label:active {
   background:yellow;
}

当我将鼠标悬停在相关复选框上时,我希望标签突出显示。如果我也将鼠标悬停在复选框上,有没有办法使用 CSS 触发相同的悬停规则?还是我必须为此使用 JavaScript...?

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    您可以使用 CSS 同级选择器,如下所示:

    label:hover, label:active, input:hover+label, input:active+label {
        background:yellow;
    }
    

    请注意,这在 IE6 中不起作用。

    【讨论】:

    • 如果 IE6 的市场份额足够小,我们可以不用再担心其中的问题了,这不是很好吗?下降到 7.2%。见w3schools.com/browsers/browsers_stats.asp
    • 5年前我就停止支持ie6了! :)
    • 第二个问题!!!如果单击/选择了复选框,是否可以突出显示标签?那会很有趣!
    • 你的意思是如果它被选中,而不是如果它没有被选中?没有 Javascript 就无法做到这一点
    • @mathiregister: 实际上,you could use the :checked pseudo-class 就像您已经在使用 :hover 和 :active... 只是它在任何当前发布的 IE 版本中都不起作用...
    【解决方案2】:

    只需将复选框放在标签内:

    <label for="hello">
      <input type="checkbox" value="hello" id="hello" name="deletefiles[]"/>
      hello
    </label>
    

    现在,当您将鼠标悬停在复选框上时,您也将鼠标悬停在标签上,您现有的规则足以突出显示它。

    【讨论】:

    • @WalterJ89:确实是……事实上,当关联的输入嵌套在其中时,您可以跳过标签上的for 属性!
    【解决方案3】:

    jQuery 解决方案:

    $(document).ready(function(){
       $('#hello, label[for="hello"]').hover(function(){$(this).addClass('.hover');},
                                             function(){$(this).removeClass('.hover');});
    
    });
    
    ...
    
    .hover
    {
       background-color: yellow;
    }
    

    这确实在 IE6 中工作。

    【讨论】:

      【解决方案4】:
      /*CSS*/
      /*-------------------------------------------------*/
      input:not(:checked) + label:hover{
        color: #d51e22;
        cursor: pointer;
        background-color: #bbb;
      }
      
      input:checked + label[for="tab1"],
      input:checked + label[for="tab2"],
      input:checked + label[for="tab3"],
      input:checked + label[for="tab4"]{
       color: #d51e22;
       text-shadow: 0 0.04em 0.04em rgba(0,0,0,0.35);
       background-color: #000;
      }
      
      label[for="tab1"],[for="tab2"],[for="tab3"],[for="tab4"] {
        width:24%;
        display: inline-block;
        margin: 0 0 -1px;
        padding: 25px 25px;
        font-weight: 600;
        font-size:24px;
        text-align: center;
        border-radius:15px;
        background-color: #d51e22;
        color: #fff;
        /*border: 1px solid transparent;*/
      }
      
      /*HTML*/
      /*-------------------------------------------------*/
      <input id="tab1" type="radio" name="tabs" checked>
        <label for="tab1">Text here</label>
      
        <input id="tab2" type="radio" name="tabs">
        <label for="tab2">Text here</label>
      
        <input id="tab3" type="radio" name="tabs">
        <label for="tab3">Text here</label>
      
        <input id="tab4" type="radio" name="tabs">
        <label for="tab4">Text here</label>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多