js自定义修改复选框单选框样式,清除复选框单选框默认样式
之前做项目的时候,也遇到过需要按照设计稿把<input type="checkbox">和<input type="radio">的默认样式进行修改,但发现,并没有可以重置效果的方法,之前用过-webkit-appearance的方法,但是这个只在webkit内核的浏览器里面生效,火狐不生效。
所以自己写了个js,用li来模拟复选框和单选框的效果,很简单,7行就行。
效果图:
涉及到的知识点:自定义属性来存储点击状态和原来的class名
html内容:
<div id="box">
<p>你最喜欢的运动</p>
<ul>
<li>爬山</li>
<li>骑车</li>
<li>游泳</li>
<li class='hong'>篮球</li>
<li class='hong'>足球</li>
<li>羽毛球</li>
<li>跳绳</li>
<li>跑步</li>
</ul>
</div>
js内容:
注释比较多,是为了说明清楚,可能有点乱,能看懂的可以把注释删掉
var aLi = document.querySelectorAll('#box ul li'); /*获取所有的li,如果要用class获取,可写成document.querySelectorAll('.class')*/
for (var i=0;i<aLi.length;i++ )
{
aLi[i].ifCheck = false; /*自定义属性用来表示有没有被选中,初始化设置成false,未选中*/
aLi[i].nowClass = aLi[i].className; /*自定义属性用来存储最初的className,例如html内容里的class名,hong,这样在后面添加on的class名之后,不会导致原来的class名直接被覆盖*/
aLi[i].onclick = function(){
if(this.ifCheck){ /*当点击当前li时,如果ifCheck是已经被选中状态*/
this.className = this.nowClass /*则让当前点击的li的class名等于最初的名字,也就是说把选中的on的class名去掉*/
}else{
this.className += ' on' /*如果是未选中状态,则加上on,表示被选中*/
} /*可写成三目样式 this.className = this.ifCheck?this.nowClass:this.className+' on';*/
this.ifCheck = !this.ifCheck; /*一开始未选中,点击之后变成选中,不然相反,所以要给ifCheck的属性取反*/
};
};
css样式:
#box{
width:600px;
margin:50px auto;
}
#box p{
font-size:14px;
font-weight:bold;
border-bottom:1px dashed #000;
line-height:30px;
}
#box ul{
margin-top:10px;
overflow:hidden;
}
#box ul li{
width:67px;
height:20px;
float:left;
background-image:url(images/ck.png); /*未选中时候的背景图*/
background-repeat:no-repeat;
font-size:12px;
line-height:20px;
text-indent:30px;
margin-right:8px;
cursor:pointer;
}
#box ul li.on{
background-image:url(images/cked.jpg); /*选中时候的背景图*/
}
#box ul li.hong{
color:red;
}
js自定义修改复选框单选框样式,清除复选框单选框默认样式的更多相关文章
- CSS3过渡结束监听事件,清除/修改表单元素的一些默认样式
document.querySelector('div').addEventListener('transitionEnd',function(){ console.log('过度结束') }) 如果 ...
- Android UI 统一修改Button控件的样式,以及其它系统控件的默认样式
先介绍下修改原理:首先打开位于android.widget包下面的Button.java文件,这里有一句关键的代码如下: public Button(Context context, Attribut ...
- Vue——解决使用第三方组件库时无法修改默认样式的问题(使用 /deep/ )
最近在开发一个基于Vue的后台管理系统,其中使用了element-ui第三方ui组件库.使用过组件库的人都知道,第三方组件往往会有一些默认的样式,而有些又是我们想要改变的. 一.基础(了解 <s ...
- HTML复选框checkbox默认样式修改
此方法可以将复选框的默认样式替换成任意样式.如图: 未选择: 选择时: 思路:将复选框隐藏,利用lebal元素的焦点传递特性,用lebal的样式替代复选框. 代码如下: <!DOCTYPE ht ...
- js自定义弹出框
js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...
- 【jQuery】复选框的全选、反选,推断哪些复选框被选中
本文与<[JavaScript]复选框的全选.反选.推断哪些复选框被选中>(点击打开链接)为姊妹篇,把里面内容再与jQuery框架中实现一次,相同做到例如以下的效果: 布局还是相同的布局, ...
- springMvc接收ajax数组参数,以及jquery复选框选中、反选、全选、全不选
一.复选框选中.反选.全选.全不选 html代码: <input type='checkbox' name='menuCheckBox' value='10' >苹果 <input ...
- 复选框(checkbox)、多选框
1.需求分析 可同时选中多个选项,实现全选.全不选.反选等功能. 2.技术分析 基础的HTML.CSS.JavaScript. 3.详细分析 3.1 HTML部分 图示是一个列表加底部一段文字说明,列 ...
- jQuery实现复选框的全选、反选、并且根据复选框的<checked属性>控制多个对应div的显示/隐藏
<!doctype html><html> <head> <meta charset="utf-8"> <title>j ...
随机推荐
- Java图片比对
在自动化测试中,除了普通的值验证,经常还有一些图片验证,比如图片的匹配率,输出图片的差异图片等.本文主要用到了BufferedImage类来操作图片比对和输出差异图片,大体的思路如下: 1. 通过Im ...
- caffe 中 python 数据层
caffe中大多数层用C++写成. 但是对于自己数据的输入要写对应的输入层,比如你要去图像中的一部分,不能用LMDB,或者你的label 需要特殊的标记. 这时候就需要用python 写一个输入层. ...
- .NET Framework 系统版本支持表
.tg {border-collapse:collapse;border-spacing:0;border-color:#aabcfe;} .tg td{font-family:Arial, sans ...
- mongoDB - 日常操作三
MongoDB 进程控制 进程控制 db.currentOp() # 查看活动进程 db.$cmd.sys.inprog.findOne() # 查看活动进程 与上面一样 opid # 操作进程号 o ...
- php 设置中文 cookie, js获取
参考链接:http://www.nowamagic.net/librarys/veda/detail/1271 http://www.ruanyifeng.com/blog/2008/06/base6 ...
- D - Maximizing Advertising
题目链接:https://cn.vjudge.net/contest/250168#problem/D 题目大意:给你一些点的坐标,这些点属于两个帮派,让你将这些点分进两个不能重叠的矩形中,问你最多两 ...
- [转]find命令之exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是comm ...
- SpringBoot整合定时任务和异步任务处理 3节课
1.SpringBoot定时任务schedule讲解 定时任务应用场景: 简介:讲解什么是定时任务和常见定时任务区别 1.常见定时任务 Java自带的java.util.Timer类 ...
- Software development skills for data scientists
Software development skills for data scientists Data scientists often come from diverse backgrounds ...
- argv[1] 路径问题
在看<学习opencv>一书时遇到一个小问题:函数只是通过argv传递参数来读取图片并显示,但是却一直弹出画布,没有图像. 如下:test.c # include<stdio.h&g ...