实现效果:

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

替换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. composer换源,composer切换国内源

    首先要分清楚是局部换源还是全局换源 1.局部换源(仅对当前项目有效) 在当前项目下的composer.json中添加 { "repositories": [ { "typ ...

  2. Win 10 C 盘突然爆满,怎么清理?

    Win 10 C 盘突然爆满,怎么清理? 使用windows的小伙伴们都知道,C盘是安装系统的,有时候不知道为啥突然就爆满了,查看我的电脑,C盘显示红色的.是不是感觉狠揪心,想删除一些东西有不敢删除, ...

  3. Nuxt内导航栏的两种实现方式

    方式一 | 通过嵌套路由实现 在pages页面根据nuxt的路由规则,建立页面 1. 创建文件目录及文件 根据规则,如果要创建子路由,子路由的文件夹名字,必须和父路由名字相同 所以,我们的文件夹也为i ...

  4. Array(数组)对象-->lastIndexOf() 方法

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

  5. python3(九) Section

    # list或tuple的部分元素 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] # -----------------传统方法 print([L[ ...

  6. Django 表单处理流程

    Django 的表单处理:视图获取请求,执行所需的任何操作,包括从模型中读取数据,然后生成并返回HTML页面(从模板中),我们传递一个包含要显示的数据的上下文.使事情变得更复杂的是,服务器还需要能够处 ...

  7. Android Them+SharedPreferences 修改程序所有view字体颜色、大小和页面背景

    有这么一个需求,可以对页面的样式进行选择,然后根据选择改变程序所有字体颜色和页面背景.同时下一次启动程序,当前设置依然有效. 根据需求,我们需要一种快速,方便,有效的方式来实现需求,然后可以通过And ...

  8. C. Beautiful Regional Contest

    用前缀和写一直wa.. 思路:让金牌和银牌最少,通多增加铜牌的方式来扩大总奖牌的个数. #include<bits/stdc++.h> using namespace std; map&l ...

  9. Python之疑难杂症包安装

    ansible 直接用pip install 安装一直失败 1.下载ansible压缩包 https://files.pythonhosted.org/packages/ec/ee/1494474b5 ...

  10. poi导出word文档,doc和docx

    maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <gro ...