实现效果:

css的input单选框的样式很丑,有时候不想使用原生的样式,如上照片,可以使用下面的方法。

思路是,给inpu加visibility:hidden隐藏,然后使用不同的图片绝对定位覆盖在input上面,之后将不同的图片和input状态绑定一下。设置visibility而不用display的好处是,前者在视觉隐藏的情况下还会占据原来的空间,这样可以调整下面的input和上面的图片大小一致。

  1. <div>
  2. 提现方式
  3. <span><img src="img/xuanzhong.png"/><input name="radio" type="radio" checked="true" value="0">微信</span>
  4. <span><img src="img/weixuanzhong.png"/><input name="radio" type="radio" value="1">支付宝</span>
  5. </div>
  1. div span {
  2. position: relative;
  3. margin-left: 20px;
  4. }
  5. div span input{
  6.   visibility:hidden;
  7.   height:20px;
  8.   width:20px;
  9. }
  10. div span img{
  11.   position:absolute;
  12.   top:0;
  13.   left:0;
  14.   height:20px;
  15.   width:20px;
  16.   border-radius:50%;
  17. }
  1. var spans = document.querySelectorAll("span");
  2. var radios = document.querySelectorAll("input[type='radio']");
  3. var imgs = document.querySelectorAll("img");
  4. spans.forEach(function(v, i) {
  5. v.onclick = function() {
  6. if(i == 0) {
  7. imgs[0].src = "xuanzhong.png";
  8. imgs[1].src = "weixuanzhong.png";
  9. radios[1].checked = "false";
  10. radios[0].checked = "checked";
  11. } else {
  12. imgs[0].src = "img/weixuanzhong.png";
  13. imgs[1].src = "img/xuanzhong.png";
  14. radios[0].checked = "false";
  15. radios[1].checked = "checked";
  16. }
  17. }
  18. })

这样当获取的value值等于0是表示选中的是微信,1表示选中的是支付宝。多选框也可以同理设置。

这种方法比较麻烦,虽然可以用jquery简化代码,但是思路并不好。其实不使用单选框也可以。方法二:

  1. <div>
  2. 提现方式
  3. <span data-type="0"><img src="img/xuanzhong.png" class="display-block"/>微信</span>
  4. <span data-type="1"><img src="img/xuanzhong.png" class="display-none"/>支付宝</span>
  5. </div>
  1. .display-none{
  2. display:none;
  3. }
  4. .display-block{
  5. display:block;
  6. }
    //使用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的值就能判断是微信还是支付宝
    })

个人总结笔记,有误请指出,谢谢。

转载于:https://www.cnblogs.com/yk-68/p/8653987.html

替换input单选框的样式的更多相关文章

  1. 自定义单选框radio样式

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. input单选框全选与反选

    input单选框全选与反选 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. js自定义修改复选框单选框样式,清除复选框单选框默认样式

    之前做项目的时候,也遇到过需要按照设计稿把<input type="checkbox">和<input type="radio">的默认 ...

  4. h5 编辑单选框的样式

    radio单选框样式设置 input[type=radio] { display: inline-block; vertical-align: middle; width: 20px; height: ...

  5. input选择框默认样式修改

    input选择框是无法直接修改样式,我们只能间接来改变它样式. 原理:用图片来代替原来的input选择框,原来的input选择框定位到图片上方并让它opacity为0,鼠标点击时用js来改变图片,这样 ...

  6. 关于input单选框的radio属性

    最近在做前端页面的时候遇到一个问题(后端php猴子前端不怎么写) 我写了一段代码: <form action="">        <label for=&quo ...

  7. 获取 input 单选框和多选框的值

    引用  jQuery的js <script> $(function(){ var arr = new Array(); $('#checkbox').click(function(){ a ...

  8. input单选框多选框时可用的事件

    change(): 当元素的值发生改变时,会发生 change 事件. 该事件仅适用于文本域(text field),以及 textarea 和 select 元素. change() 函数触发 ch ...

  9. 用css实现html中单选框样式改变

     我们都知道,input的单选框是一个小圆框,不能直接更改样式.但是我们在很多网页中看到的单选框样式可不仅限于默认的那个样式(看上去没啥新意,也比较丑).那么,接下来我将介绍下如何实现该功能. 首先, ...

随机推荐

  1. HDU1087:Super Jumping! Jumping! Jumping!(DP水题)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. MTK Android 计算器Calculator输入暗码!77!+,启动工厂测试apk

    Android8.0 计算器Calculator输入暗码!77!+,启动工厂测试apk 路径: packages/apps/ExactCalculator/src/com/android/calcul ...

  3. MTK Android Driver :Memory

    型号配置: 1.CUSTOM_MEMORY_HDR(需要确认是否是MTK认证的flash ic) mediatek\custom\$(PROJECT)\preloader\inc\custom_Mem ...

  4. 大O表示法是什么?

    1.什么是大O表示法: 1.在算法描述中,我们用这种方式来描述计算机算法的效率. 2.在计算机中,这种粗略的量度叫做 "大O" 表示法. 3.在具体的情境中,利用大O表示法来描述具 ...

  5. Java第十三天,内部类

    内部类 一.①成员内部类.②局部内部类(包含③匿名内部类) 1.内部类用外部类属性和方法的时候,可以随意进行访问. 2.外部类用内部类属性和方法的时候,需要通过内部类对象访问. 3.在编译成class ...

  6. String 对象-->lastIndexOf() 方法

    1.定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索. 语法: string.lastInde ...

  7. k8s中token过期重新生成

    k8s中token过期重新生成 通过kubeadm初始化之后,都会提供node加入的token 默认的token的有效期是24小时,当过期了,如何新生成呢 重新生成token: [root@k8s-m ...

  8. 【原创】关于java对象需要重写equals方法,hashcode方法,toString方法 ,compareto()方法的说明

    在项目开发中,我们都有这样的经历,就是在新增表时,会相应的增加java类,在java类中都存在常见的几个方法,包括:equals(),hashcode(),toString() ,compareto( ...

  9. VulnHub靶场学习_HA: ARMOUR

    HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...

  10. GeiGebra指令