纯JS打造网页中checkbox和radio的美化效果


Posted in Javascript onOctober 13, 2016

图片素材:

纯JS打造网页中checkbox和radio的美化效果纯JS打造网页中checkbox和radio的美化效果

效果图:

纯JS打造网页中checkbox和radio的美化效果

<head>
<style>
BODY {
FONT-FAMILY: "Segoe UI", Frutiger, Tahoma, Helvetica, "Helvetica Neue", Arial, sans-serif; FONT-SIZE:62.5%
}
LABEL {
MARGIN-RIGHT: 1.2em
}
.custom-checkbox {
POSITION: relative
}
.custom-radio {
POSITION: relative
}
.custom-checkbox INPUT {
POSITION: absolute; MARGIN: 0px; TOP: 2px; LEFT: 2px
}
.custom-checkbox LABEL {
POSITION: relative; PADDING-BOTTOM: 0.5em; LINE-HEIGHT: 1; MARGIN: 0px 0px 0.3em; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 1.3em; CURSOR: pointer; PADDING-TOP: 0.5em
}
.custom-checkbox LABEL {
BACKGROUND: url(./checkbox.gif) no-repeat
}
.custom-radio LABEL {
BACKGROUND: url(./radiobutton.gif) no-repeat
}
.custom-checkbox LABEL {
BACKGROUND-POSITION: -10px -14px
}
.custom-radio LABEL {
BACKGROUND-POSITION: -10px -14px
}
.custom-checkbox LABEL.hover {
BACKGROUND-POSITION: -10px -114px
}
.custom-checkbox LABEL.focus {
BACKGROUND-POSITION: -10px -114px
}
.custom-radio LABEL.hover {
BACKGROUND-POSITION: -10px -114px
}
.custom-radio LABEL.focus {
BACKGROUND-POSITION: -10px -114px
}
.custom-checkbox LABEL.checked {
BACKGROUND-POSITION: -10px -214px
}
.custom-radio LABEL.checked {
BACKGROUND-POSITION: -10px -214px
}
.custom-checkbox LABEL.checkedHover {
BACKGROUND-POSITION: -10px -314px
}
.custom-checkbox LABEL.checkedFocus {
BACKGROUND-POSITION: -10px -314px
}
.custom-checkbox LABEL.focus {
OUTLINE-STYLE: dotted; OUTLINE-COLOR: #ccc; OUTLINE-WIDTH: 1px
}
.custom-radio LABEL.focus {
OUTLINE-STYLE: dotted; OUTLINE-COLOR: #ccc; OUTLINE-WIDTH: 1px
}
.custom-radio INPUT {
POSITION: absolute; MARGIN: 0px; TOP: 2px; LEFT: 2px
}
.custom-radio LABEL {
POSITION: relative; PADDING-BOTTOM: 0.5em; LINE-HEIGHT: 1; MARGIN: 0px 0px 0.3em; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 1.3em; CURSOR: pointer; PADDING-TOP: 0.5em
}
</style>
</head>
<body>
<form action="#" method="post">
<input type="checkbox" name="genre" id="action" value="action" style="margin-left:100pt;"/>
<label for="action">答案一</label>
<input type="checkbox" name="genre" id="comedy" value="comedy" style="margin-left:100pt;" />
<label for="comedy">答案二</label>
<input type="checkbox" name="genre" id="check-3" value="epic" style="margin-left:100pt;"/>
<label for="check-3">答案三</label>
<legend>小小球童是有史以来最伟大的电影,对不对?</legend>
<br>
<input type="radio" name="opinions" id="totally" value="totally" style="margin-left:100pt;"/>
<label for="totally">完全</label>
<input type="radio" name="opinions" id="no-way" value="no-way" style="margin-left:100pt;"/>
<label for="no-way">您一定是在开玩笑</label>
<input type="radio" name="opinions" id="whats-caddyshack" value="whats-caddyshack" style="margin-left:100pt;"/>
<label for="whats-caddyshack">小小球童是什么?</label>
</form>
<script>
function addClass(b,a){RegExp("(\\s|^)"+a+"(\\s|$)").test(b.className)||(b.className+=" "+a)}
function removeClass(b,a){b.className=b.className.replace(RegExp("(\\s|^)"+a+"(\\s|$)")," ")}
var wrapOuter = function(target,target2,html){ 
var wrap = html 
if(Object.prototype.toString.call(html) === "[object String]")
{ 
if(document.createRange)
{ 
var frag = document.createDocumentFragment();
var div = document.createElement("div");
frag.appendChild(div);
div.innerHTML = html;
wrap=frag.firstChild.firstChild;
}else { //IE8
wrap = document.createElement(html); 
} 
} 
target.parentNode.replaceChild(wrap,target); 
wrap.appendChild(target);
wrap.appendChild(target2);
}
var lblArray=[];
var inputArray=[];
var checkBoxs=document.getElementsByTagName("input");
for(var i=0;i<checkBoxs.length;i++)
{
if("INPUT"==checkBoxs[i].tagName)
{
parents=checkBoxs[i].parentNode;//form
if (parents) 
{ 
for(var j=0;j<parents.children.length;j++) 
{
if(parents.children[j]==checkBoxs[i])
{
if(parents.children[j+1])
{
var olabel=parents.children[j+1];
var oinput=parents[i];
lblArray.push(olabel);
inputArray.push(oinput);
//在olabel和oinput外面包一层<div>
wrapOuter(oinput,olabel,'<div class="custom-'+ oinput.getAttribute('type') +'"></div>');
//绑定事件
olabel.onmouseover=function(){
addClass(this,"hover");
}
olabel.onmouseout=function(){
removeClass(this,"hover");
}
olabel.onclick=function(){
for(var i=0;i<lblArray.length;i++)
{ 
if (this==lblArray[i])
{
if(!inputArray[i].checked)
{ 
inputArray[i].checked=false;
addClass(this,"checked");
if(inputArray[i].type=="radio")
{
for(var k=0;k<inputArray.length;k++)
{
if (i!=k) {
inputArray[k].checked=false;
removeClass(lblArray[k],'checked');
}
}
}
}
else
{ 
if(inputArray[i].type=="checkbox")
{ 
removeClass(this,'checked');
inputArray[i].checked=true;
} 
}
break;
}
} //for i end 
} 
}
break;
}
} 
} 
}
}
</script>
</body>
</html>

以上所述是小编给大家介绍的纯JS打造网页中checkbox和radio的美化效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
formvalidator验证插件中有关ajax验证问题
Jan 04 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
Javascript中的apply()方法浅析
Mar 15 Javascript
JS制作简单的三级联动
Mar 18 Javascript
浅谈javascript的分号的使用
May 12 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
Oct 29 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
js中利用tagname和id获取元素的方法
Jan 03 Javascript
JavaScript与jQuery实现的闪烁输入效果
Feb 18 Javascript
JS本地刷新返回上一页代码
Jul 25 Javascript
JS实现简单短信验证码界面
Aug 07 Javascript
vue-cli脚手架-bulid下的配置文件
Mar 27 Javascript
angularjs 中$apply,$digest,$watch详解
Oct 13 #Javascript
jQuery鼠标事件总结
Oct 13 #Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
Oct 13 #Javascript
jQuery中delegate()方法的用法详解
Oct 13 #Javascript
炫酷的js手风琴效果
Oct 13 #Javascript
轻松搞定js表单验证
Oct 13 #Javascript
Seajs是什么及sea.js 由来,特点以及优势
Oct 13 #Javascript
You might like
世界第一个无线广播电台 KDKA
2021/03/01 无线电
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
javascript常用的设计模式
2017/02/09 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python 的 Socket 编程
2015/03/24 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
Python开发的十个小贴士和技巧及长常犯错误
2018/09/27 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python实现处理mysql结果输出方式
2020/04/09 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
初婚未育未抱养证明
2014/01/12 职场文书
测绘工程专业求职信
2014/07/15 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
优秀班主任材料
2014/12/16 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
Minikube搭建Kubernetes集群
2022/03/31 Servers