如何为替代单选按钮的选中图片添加持久边框?
实现选中图片的持久边框效果
当然可行,只需要修正你代码里的几个问题,再添加选中状态的CSS规则就能实现:
第一步:修正HTML的错误
你的代码里有两个关键问题,会导致单选按钮和图片的关联失效:
- 所有单选按钮的
id重复(都是radio),HTML要求id必须唯一 label的for属性和对应单选按钮的id不匹配,点击图片无法触发单选按钮选中
修正后的HTML代码:
<div class="mydiv" style="padding-left: 80px"> <input type="radio" name="keuze" value="1" id="male-radio1"> <label for="male-radio1"><img src="img/getal1.jpg"></label> <input type="radio" name="keuze" value="2" id="male-radio2"> <label for="male-radio2"><img src="img/getal2.jpg"></label> <input type="radio" name="keuze" value="3" id="male-radio3"> <label for="male-radio3"><img src="img/getal3.jpg"></label> <input type="radio" name="keuze" value="4" id="male-radio4"> <label for="male-radio4"><img src="img/getal4.jpg"></label> <input type="radio" name="keuze" value="5" id="male-radio5"> <label for="male-radio5"><img src="img/getal5.jpg"></label> </div>
第二步:添加选中状态的CSS规则
利用CSS的:checked伪类和相邻兄弟选择器+,可以在单选按钮被选中时,给对应的图片添加持久边框,同时优化原有样式避免冲突:
input[type="radio"]{ position: absolute; opacity: 0; width: 0; height: 0; } /* 鼠标悬停图片的效果 */ .mydiv label:hover img{ opacity: 0.7; cursor: pointer; } /* 图片点击瞬间的效果 */ .mydiv label:active img { opacity: 0.5; cursor: crosshair; } /* 单选按钮选中时,对应图片显示持久边框 */ .mydiv input[type="radio"]:checked + label img { border: 2px solid red; box-sizing: border-box; /* 避免边框撑开布局导致图片移位 */ }
效果说明
- 选中任意图片后,该图片会一直显示红色边框,直到选中其他图片
box-sizing: border-box可以让边框包含在图片的尺寸内,不会改变页面布局
内容的提问来源于stack exchange,提问作者Con
相关产品推荐
相关产品推荐

