纯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 相关文章推荐
javascript同步Import,同步调用外部js的方法
Jul 08 Javascript
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
javascript通过class来获取元素实现代码
Feb 20 Javascript
ie中js创建checkbox默认选中问题探讨
Oct 21 Javascript
javascript文本框内输入文字倒计数的方法
Feb 24 Javascript
PHP守护进程实例
Mar 06 Javascript
javascript获取本机操作系统类型的方法
Aug 13 Javascript
Javascript对象字面量的理解
Jun 22 Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 Javascript
canvas绘制爱心的几种方法总结(推荐)
Oct 31 Javascript
微信小程序云开发之使用云数据库
May 17 Javascript
JS中的const命令你真懂它吗
Mar 08 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
yii框架中的Url生产问题小结
2012/01/16 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
jQuery学习笔记之 Ajax操作篇(二) - 数据传递
2014/06/23 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
浅析javascript的return语句
2015/12/15 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
python中子类继承父类的__init__方法实例
2016/12/15 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Python坐标线性插值应用实现
2019/11/13 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
Python super()函数使用及多重继承
2020/05/06 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
python模块如何查看
2020/06/16 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
介绍一下linux文件系统分配策略
2013/02/25 面试题
土木工程专业推荐信
2014/02/19 职场文书
承诺书模板
2014/08/30 职场文书
服务整改报告
2014/11/06 职场文书
python tkinter Entry控件的焦点移动操作
2021/05/22 Python