【问题标题】:Radio Button Checked Effect Single Outside Element单选按钮检查效果单个外部元素
【发布时间】:2014-03-22 09:11:20
【问题描述】:

一个简单的问题,一个 CSS 单选按钮可以在它所在的元素之外产生效果。

例如:

<div class="radio">
      <input id="radio-green" type="radio" name="radio-b"/>
      <label for="radio-green">Green</label>

      <input id="radio-blue" type="radio" name="radio-b" checked />
      <label for="radio-blue">Blue</label>

      <input id="radio-yellow" type="radio" name="radio-b"/>
      <label for="radio-yellow">Yellow</label>

      <input id="radio-red" type="radio" name="radio-b"/>
      <label for="radio-red">Red</label>

      <input id="radio-white" type="radio" name="radio-b"/>
      <label for="radio-white">White</label>
</div>

<div class="square"></div>

CSS 是这样的吗?

.square {
width:300px;
height:300px;
margin:0 auto;
background:red;
}
input#radio-green:checked .square {background:green;}

或者我需要使用 JS 吗?

这是一个 JS 小提琴http://jsfiddle.net/m8fxw/

谢谢

【问题讨论】:

    标签: css button radio


    【解决方案1】:

    如果他们不在他们的父母&lt;div&gt; 内,你可以这样做,因为他们是兄弟姐妹。不幸的是,CSS 规则不允许您遍历树。

    如果您将它们从&lt;div class="radio"&gt; 中取出,那么您可以使用~ 兄弟组合器:

    #radio-green:checked ~ .square {background:green;}
    

    Demo

    否则,我可能会在单击每个收音机时使用 JS 向 &lt;div class="radio&gt; 添加一个类,然后相应地设置正方形的样式。

    【讨论】:

      【解决方案2】:

      如果你知道 jQuery,你可以使用:

      $('input[type=radio]').click(function() {
          var $this = $(this);
          $('.square').css('background', $(this).next().text());
      })
      

      Updated Fiddle

      【讨论】:

      • 例如,当绿色未被选中时,我会怎么做?
      • 只有勾选了才会生效,如何判断收音机是否未勾选?这是一个小提琴(不工作)jsfiddle.net/m8fxw/5
      • 您需要$('input[type=radio]') 而不是input[type=radio]:eq(0),最好使用change 而不是click 事件作为您的输入jsfiddle.net/m8fxw/6
      • 嘿抱歉,最后一件事。添加一个类而不是css怎么样?它似乎不起作用? jsfiddle.net/m8fxw/7
      • 您的 CSS 中缺少 outline。你想要这个:jsfiddle.net/m8fxw/10
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 2016-08-17
      • 2013-10-28
      相关资源
      最近更新 更多