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;
}
时间: 2024-08-06 10:00:00

js自定义修改复选框单选框样式,清除复选框单选框默认样式的相关文章

ExtJs实现复选框组Checkboxgroup单勾选及复选框组对多个复选框组跨控件全选

ExtJs实现复选框Checkboxgroup单勾选及跨控件全选 由于项目的需要,我们要将EXT的控件Checkboxgroup复选框组改造成但勾选,并且实现一个复选框组控制其他多个复选框组的全选,以下是关于如何实现的代码片段. 1.创建CheckboxGroup对象 1,新建空的EOS6.5的工程,新建com.towngas.tcis. gridlock构件包: 2,在com.towngas.tcis.gridlock构件包的"展现"节点下的"页面资源"节点中创建

jQuery实现复选框的全选、反选、并且根据复选框的&lt;checked属性&gt;控制多个对应div的显示/隐藏

<!doctype html><html> <head> <meta charset="utf-8"> <title>jQuery实现复选框的全选.反选.并且根据复选框的(checked属性)控制多个对应div的显示/隐藏</title> <script type="text/javascript" src="jquery-1.11.3.min.js"></

【jQuery】复选框的批量处理:全选、非全选

最近工作都在写jQuery,事实上我并没有系统学过js,今天跟大家分享一下最近写的一个有关复选框的批量处理. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>测试</title> </head> <body> <input type="button" class="button&quo

html,javaScript中怎么控制复选框checkbox的全选,全不选,以及全选中,全选按钮选中,其中一个或者多个没选,则全选按钮不被选中

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ include file="/commons/jsp/htmtag.jsp"%> <html><head> <meta http-equiv="Content-Type"

【jQuery】复选框的全选、反选,判断哪些复选框被选中

本文与<[JavaScript]复选框的全选.反选,判断哪些复选框被选中>(点击打开链接)为姊妹篇,把里面内容再与jQuery框架中实现一次,同样做到如下的效果: 布局还是同样的布局,只是由于在jQuery框架中,无须再为按钮,指定特定的onclick事件处理函数,直接使用jQuery指定即可: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri

js自定义弹出框

js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="text/css" > .layout { width:2000px; height:400px; border:solid 1px red; text-align:center; } </style> <script type="text/javascript&quo

组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)

组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得.然好的控件永远敢不上应用的步伐,有时常规控件并不能满足应用的需要,经常需要在现有的控件上做扩展.有些应用需要在组合框的列表框的每一项前加复选框,以便可以控制列表框每一项的状态(选中还是未选中),显然现有的组合框(列表框+文本框的组合)不能满足应用要求.那么怎么得到一个超强组合框(列表框+文本框+复选

html5与js关于input[type=&#39;text&#39;]文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick=&quot;select();&quot;。做购物车页面时会要用到。

关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="select();".做购物车页面时会要用到. input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange: 1.onchange事件与onpropertychange事件的区别:onchange事件在内容改变(两次

【JavaScript】复选框的全选、反选,判断哪些复选框被选中

复选框的全选.反选,判断哪些复选框被选中,这个功能不难做, 利用document.getElementsByName("xxx");能够轻易实现,注意其返回值是一个节点数组便是了. 不过这功能对于用户来说是非常贴心的.下面举一个例子还说明这个问题. 首先是以下的布局: HTML代码如下,非常简单,三个按钮,分别设置其onclick事件所对应处理的javascript函数. 之后有四个复选框,注意设置其统一的name值,形成一个节点数组.以便被后续的document.getElement