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 ...
随机推荐
- jaxp实现对xml文档的增,删,改,查操作(附源码)浅析
jaxp,属于javase中的一部分.是对xml进行解析的一个工具类: 既然说到这里,还是讲全一点,讲讲上面说到的xml的解析技术. xml的一个标记型文档. 在html的层级结构中,它会在内存中分配 ...
- 51nod1222 最小公倍数计数
题目来源: Project Euler 基准时间限制:6 秒 空间限制:131072 KB 分值: 640 定义F(n)表示最小公倍数为n的二元组的数量. 即:如果存在两个数(二元组)X,Y(X & ...
- BZOJ 4614[Wf2016]Oil
权限题鸭qwq 首先可以知道最优答案选出来的直线一定可以经过某条线段左端点,如果这条直线没有过左端点,可以通过平移和旋转等操作达到.所以可以枚举这条直线过了哪条线段的左端点,那么对于其他线段,能对答案 ...
- Vue.js用脚手架创建项目
安装全局脚手架 cnpm install vue-cli -g vue --version 用脚手架创建项目 创建项目 运行项目 停止项目:Ctrl+C 修改端口 config - index.js ...
- kan
http://blog.csdn.net/yahohi/article/details/7427724 http://duanhengbin.iteye.com/blog/1706635 http:/ ...
- 最小费用流(km的另一种使用思路)
题目链接:https://cn.vjudge.net/contest/242366#problem/L 大体意思就是:h代表旅馆,m代表人,人每走动一个需要一个金币,行动只有两个方向,水平或者竖直.问 ...
- jQuery中对未来的元素绑定事件用bind、live or on
对未来的元素绑定事件不能用bind, 1.可以用live代替,但是要注意jquery的版本,根据官方文档,从1.7开始就不推荐live和delegate了,1.9里就去掉live了. 2.推荐用on代 ...
- IAR各个历史版本的下载地址
http://supp.iar.com/Updates/?product=EWarm 点击进入上述链接,拉到最底部,点击old version即可见到所有的历史版本!!!
- linux 查看cpu的使用百分比
先安装 sudo apt-get install sysstat 然后: mpstat -u 2 5
- springboot系列四、配置模板引擎、配置热部署
一.配置模板引擎 在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html ...