纯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 相关文章推荐
json数据处理技巧(字段带空格、增加字段、排序等等)
Jun 14 Javascript
JQuery EasyUI 数字格式化处理示例
May 05 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
Jan 26 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
Nov 10 Javascript
深入理解Vue.js源码之事件机制
Sep 27 Javascript
原生js调用json方法总结
Feb 22 Javascript
Angular服务Request异步请求的实例讲解
Aug 13 Javascript
解决vuecli3.0热更新失效的问题
Sep 19 Javascript
详解ES6中的 Set Map 数据结构学习总结
Nov 06 Javascript
vue组件通信传值操作示例
Jan 08 Javascript
个人小程序接入支付解决方案
May 23 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
解析thinkphp基本配置 convention.php
2013/06/18 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
原生JavaScript制作微博发布面板效果
2016/03/11 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
Angular4 ElementRef的应用
2018/02/26 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
Cython 三分钟入门教程
2009/09/17 Python
详细解析Python当中的数据类型和变量
2015/04/25 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
WxPython实现无边框界面
2019/11/18 Python
中专三年学习的个人自我评价
2013/12/12 职场文书
关于赌博的检讨书
2014/01/24 职场文书
争论的故事教学反思
2014/02/06 职场文书
宣传工作经验材料
2014/06/02 职场文书
被告答辩状范文
2015/05/22 职场文书
企业宣传稿范文
2015/07/23 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
python实现进度条的多种实现
2021/04/29 Python
Python词云的正确实现方法实例
2021/05/08 Python
python​格式化字符串
2022/04/20 Python