让一个单选按钮及其标签在选中时自动更改
我觉得这个解决方案很简单,但我无法在互联网上找到它。如果选择单选按钮,我需要在单选按钮及其标签上显示边框。单选按钮代码为例如:让一个单选按钮及其标签在选中时自动更改
<input type="radio" name="sex" class="sex" value="0">Male</input>
<input type="radio" name="sex" class="sex" value="1">Female</input>
如果选择了男性选项,则整个单选按钮和男性标签将被矩形包围。如果选择了女性单选按钮,则男性单选按钮上的矩形将消失并更改为女性单选按钮。但是这只需要在CSS中完成。根本没有JavaScript。这可能吗?我认为答案可能与假选择器有关,如:
.sex {border: 0}
.sex:checked {border: 1 solid red;}
但是这不起作用。有什么我做错了吗?谢谢。
输入不起作用,他们没有内容,也没有结束标签。因此,在您的示例中,“男性”和“女性”这两个词不是输入本身的一部分。
解决的办法是使用<label>
元素放置单词,并将这些标签指向具有for
属性的相应输入。
<input type="radio" name="sex" class="sex" value="0" id="sex0"><label for="sex0">Male</label>
<input type="radio" name="sex" class="sex" value="1" id="sex1"><label for="sex1">Female</label>
然后你的CSS会是这个样子:
label {border: 0; padding-left:20px; margin-left:-20px;}
.sex:checked+label {outline: 1px solid red;}
我用了一个轮廓,而不是一个边界,以防止回流的正在单击时的元素。
请注意标签上的左填充和负左边距,以使其显示单选按钮位于标签中。这是必要的,因为单选按钮本身对outline
属性没有很好的响应。
请参阅JSFiddle。
谢谢!它完美无缺地工作!即使我知道那个标签,我其实从来没有使用过标签。我曾经认为我把标签放在输入标签内。但是,谢谢你让我知道我错了!真棒回答! – 2015-04-04 09:17:13
如果你不介意使用jQuery,这里是一个解决方案:https://jsfiddle.net/1h5abbnm/
确保1后添加“PX”,为{border: 1px solid red;}
。直到我做到了,它才适用于我。
类似的问题,你可能会进一步帮助:
- jquery applying css class on select on radio buttons
- How can I check whether a radio button is selected with JavaScript?
是的,输入例子时我很鲁莽,几小时后才意识到它。感谢您的jQuery替代品! :) – 2015-04-04 09:16:45
检查这个http://code.stephenmorley.org/html-and-css/styling-checkboxes-and-radio-按钮/#下载 – user00000341 2015-04-04 07:01:18
chech这一个帮助http://www.tutorialrepublic.com/faq/how-to-create-custom-radio-buttons-using-css-and-jquery.php – 2015-04-04 07:02:13