利用css3修改input[type=radio]样式
做项目的时候需要使用单选按钮input[type=radio],但是默认的样式与UI设计不一致,所以需要修改默认的样式,如下图。搜索的时候发现有一些实现是利用背景图实现。不想使用图片,所以利用css3的重新实现了一遍。在ie8下无效。
原理
利用标签与对应的关联,给设置透明,使用position(定位)让用户看到的是标签的样式,点击时会选择到对应的,使用的:checked伪类选择器来改变选中的样式.
实现代码
HTML如下 <form> <div> <input id="item1" type="radio" name="item" value="选项一" checked> <label for="item1"></label> <span>选项一</span> </div> <div> <input id="item2" type="radio" name="item" value="选项二"> <label for="item2"></label> <span>选项二</span> </div> </form>12345678910111213
CSS如下 div { position: relative; line-height: 30px; } input[type="radio"] { width: 20px; height: 20px; opacity: 0; } label { position: absolute; left: 5px; top: 3px; width: 20px; height: 20px; border-radius: 50%; border: 1px solid #999; } /*设置选中的input的样式*/ /* + 是兄弟选择器,获取选中后的label元素*/ input:checked+label { background-color: #fe6d32; border: 1px solid #fe6d32; } input:checked+label::after { position: absolute; content: ""; width: 5px; height: 10px; top: 3px; left: 6px; border: 2px solid #fff; border-top: none; border-left: none; transform: rotate(45deg) }
1234567891011121314151617181920212223242526272829303132333435363738394041dome
链接:http://runjs.cn/code/hmevb9gs
感谢分享https://segmentfault.com/a/1190000009451568