zoukankan      html  css  js  c++  java
  • 替换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的值就能判断是微信还是支付宝
    })

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

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

  • 相关阅读:
    POJ 3669 Meteor Shower(bfs)
    MongoDB 分片的原理、搭建、应用
    Linux下Mongodb安装和启动配置
    目录操作
    一阶段第四次整理(关于滚动条监听的进一步解释)
    HTML DOM 节点介绍(nodeName,nodeValue,nodeType)
    ASP.NET 开发人员应该知道的8个网站
    Java 里快如闪电的线程间通讯
    php-多态
    Winform控件学习-TreeView
  • 原文地址:https://www.cnblogs.com/twodog/p/12137253.html
Copyright © 2011-2022 走看看