替换input单选框的样式
Posted yy_68
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了替换input单选框的样式相关的知识,希望对你有一定的参考价值。
实现效果:。
css的input单选框的样式很丑,有时候不想使用原生的样式,如上照片,可以使用下面的方法。
思路是,给inpu加visibility:hidden隐藏,然后使用不同的图片绝对定位覆盖在input上面,之后将不同的图片和input状态绑定一下。设置visibility而不用display的好处是,前者在视觉隐藏的情况下还会占据原来的空间,这样可以调整下面的input和上面的图片大小一致。
<div> 提现方式 <span><img src="img/xuanzhong.png"/><input name="radio" type="radio" checked="true" value="0">微信</span> <span><img src="img/weixuanzhong.png"/><input name="radio" type="radio" value="1">支付宝</span> </div>
div span { position: relative; margin-left: 20px; } div span input{ visibility:hidden; height:20px; width:20px; } div span img{ position:absolute; top:0; left:0; height:20px; width:20px; border-radius:50%; }
var spans = document.querySelectorAll("span"); var radios = document.querySelectorAll("input[type=\'radio\']"); var imgs = document.querySelectorAll("img"); spans.forEach(function(v, i) { v.onclick = function() { if(i == 0) { imgs[0].src = "xuanzhong.png"; imgs[1].src = "weixuanzhong.png"; radios[1].checked = "false"; radios[0].checked = "checked"; } else { imgs[0].src = "img/weixuanzhong.png"; imgs[1].src = "img/xuanzhong.png"; radios[0].checked = "false"; radios[1].checked = "checked"; } } })
这样当获取的value值等于0是表示选中的是微信,1表示选中的是支付宝。多选框也可以同理设置。
这种方法比较麻烦,虽然可以用jquery简化代码,但是思路并不好。其实不使用单选框也可以。方法二:
<div>
提现方式
<span data-type="0"><img src="img/xuanzhong.png" class="display-block"/>微信</span>
<span data-type="1"><img src="img/xuanzhong.png" class="display-none"/>支付宝</span>
</div>
.display-none{ display:none; } .display-block{ display:block; }
//使用jquery操作逻辑
var $spans = $("div span");
$spans.click(function(){
$spans.children("img").removeClass("display-block").addClass("display-none");
$spans.children("img").removeClass("display-none").addClass("display-block");
console.log($spans.children("img.display-block").attr("data-type");)
//获取span下的含有display-block类名的img元素,取出它的data-type的值就能判断是微信还是支付宝
})
个人总结笔记,有误请指出,谢谢。
以上是关于替换input单选框的样式的主要内容,如果未能解决你的问题,请参考以下文章
thinkphp中怎样获取radio单选框的值(单选框较多)