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

  • 相关阅读:
    drf规范——请求与响应
    序列化器——Serializer
    drf 安装与配置
    CBV源码——View,APIView
    django restful framework —— Drf 规范一
    Vue——五
    Vue——四
    今日复习
    冒泡排序
    考试总结
  • 原文地址:https://www.cnblogs.com/twodog/p/12137256.html
Copyright © 2011-2022 走看看