CSS定义Radio单选项和Checkbox复选框样式有效代码

所属分类: 网页制作 / CSS 阅读数: 301
收藏 0 赞 0 分享
我们都知道一般情况利用css来定义Radio单选项和Checkbox复选框样式是无效的,下面我来给大家介绍利用CSS定义Radio单选项和Checkbox复选框样式,有需要了解的朋友可参考。

完全使用css来实例

复制代码
代码如下:

<style type=”text/css”>
form#form1 {font:12px tahoma,sans-serif}
input[type="checkbox"] {visibility:hidden;width:0;height:0;margin:0;padding:0;}
input[type="checkbox"]+label {background:url(checkstyle.gif) no-repeat;padding-left:18px;color:#ccc;}
input[type="checkbox"]+label:hover {color:#369;background-position:0 -16px;}
input[type="checkbox"]:checked+label {color:#000;background-position:0 -48px;}
input[type="checkbox"]:focus+label {color:#963;background-position:0 -32px;}
input[type="radio"] {visibility:hidden;width:0;height:0;margin:0;padding:0;}
input[type="radio"]+label {background:url(checkstyle.gif) no-repeat 0 -64px;padding-left:18px;color:#ccc;}
input[type="radio"]+label:hover {color:#369;background-position:0 -80px;}
input[type="radio"]:checked+label {color:#000;background-position:0 -112px;}
input[type="radio"]:focus+label {color:#963;background-position:0 -96px;}
</style>

利用js来实例

Html代码

复制代码
代码如下:

<!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″>
<link rel=”stylesheet” href=”css/screensmall.css” type=”text/css” media=”screen”>
</head>
<body bgcolor=#000000>
<div class=’section demo’>
<form action=” onsubmit=’void(0)’>
<h3 style=”color:#ffffff”>Checkboxes</h3>
<div>
<label><input type=”checkbox” checked=”checked”> I’m a fancy cross-browser styled checkbox</label>
<div class=’leftcol’>
<label><input type=”checkbox”> This is a checkbox</label>
<label><input type=”checkbox” checked=”checked”> This is a checkbox</label>
<label><input type=”checkbox”> This is a checkbox</label>
</div>
<div class=’rightcol’>
<label><input type=”checkbox” checked=”checked”> This is a checkbox</label>
<label><input type=”checkbox”> This is a checkbox</label>
<label><input type=”checkbox” checked=”checked”> This is a checkbox</label>
</div>
<label><input type=”checkbox” checked=”checked”> Apply any CSS styles for different states</label>
</div>
<h3 style=”color:#ffffff”>Radio buttons</h3>
<div class=’leftcol’>
<label><input type=”radio” name=’leftcol’> This is a radio button</label>
<label><input type=”radio” checked=”checked” name=’leftcol’> This is a radio button</label>
<label><input type=”radio” name=’leftcol’> This is a radio button</label>
</div>
<div class=’rightcol’>
<label><input type=”radio” name=’rightcol’> This is a radio button</label>
<label><input type=”radio” checked=”checked” name=’rightcol’> This is a radio button</label>
<label><input type=”radio” name=’rightcol’> This is a radio button</label>
</div>
<input type=”reset” value=”Reset Form” style=’margin:1em;height:2.5em;background:#222;float:right;color:#fff’>
</form>
</div>
<script type=”text/javascript” src=”js/mootools.js”></script>
<script type=”text/javascript” src=”js/moocheck.js”></script>
</body>
</html>
Js代码
var FancyForm = {
start: function(elements, options){
FancyForm.initing = 1;
if($type(elements)!=’array’) elements = $$(‘input’);
if(!options) options = [];
FancyForm.onclasses = ($type(options['onClasses']) == ’object’) ? options['onClasses'] : {
checkbox: ’checked’,
radio: ’selected’
}
FancyForm.offclasses = ($type(options['offClasses']) == ’object’) ? options['offClasses'] : {
checkbox: ’unchecked’,
radio: ’unselected’
}
if($type(options['extraClasses']) == ’object’){
FancyForm.extra = options['extraClasses'];
} else if(options['extraClasses']){
FancyForm.extra = {
checkbox: ’f_checkbox’,
radio: ’f_radio’,
on: ’f_on’,
off: ’f_off’,
all: ’fancy’
}
} else {
FancyForm.extra = {};
}
FancyForm.onSelect = $pick(options['onSelect'], function(el){});
FancyForm.onDeselect = $pick(options['onDeselect'], function(el){});
var keeps = [];
FancyForm.chks = elements.filter(function(chk){
if( $type(chk) != ’element’ ) return false;
if( chk.get(‘tag’) == ’input’ && (FancyForm.onclasses[chk.getProperty('type')]) ){
var el = chk.getParent();
if(el.getElement(‘input’)==chk){
el.type = chk.getProperty(‘type’);
el.inputElement = chk;
this.push(el);
} else {
chk.addEvent(‘click’,function(f){
if(f.event.stopPropagation) f.event.stopPropagation();
});
}
} else if( (chk.inputElement = chk.getElement(‘input’)) && (FancyForm.onclasses[(chk.type = chk.inputElement.getProperty('type'))]) ){
return true;
}
return false;
}.bind(keeps));
FancyForm.chks = FancyForm.chks.combine(keeps);
keeps = null;
FancyForm.chks.each(function(chk){
var c = chk.inputElement;
c.setStyle(‘position’, ’absolute’);
c.setStyle(‘left’, ’-9999px’);
chk.addEvent(‘selectStart’, function(f){f.stop()});
chk.name = c.getProperty(‘name’);
FancyForm.update(chk);
});
FancyForm.chks.each(function(chk){
var c = chk.inputElement;
chk.addEvent(‘click’, function(f){
f.stop(); f.type = ’prop’;
c.fireEvent(‘click’, f, 1);
});
chk.addEvent(‘mousedown’, function(f){
if($type(c.onmousedown) == ’function’)
c.onmousedown();
f.preventDefault();
});
chk.addEvent(‘mouseup’, function(f){
if($type(c.onmouseup) == ’function’)
c.onmouseup();
});
c.addEvent(‘focus’, function(f){
if(FancyForm.focus)
chk.setStyle(‘outline’, ’1px dotted’);
});
c.addEvent(‘blur’, function(f){
chk.setStyle(‘outline’, 0);
});
c.addEvent(‘click’, function(f){
if(f.event.stopPropagation) f.event.stopPropagation();
if(c.getProperty(‘disabled’)) // c.getStyle(‘position’) != ’absolute’
return;
if (!chk.hasClass(FancyForm.onclasses[chk.type]))
c.setProperty(‘checked’, ’checked’);
else if(chk.type != ’radio’)
c.setProperty(‘checked’, false);
if(f.type == ’prop’)
FancyForm.focus = 0;
FancyForm.update(chk);
FancyForm.focus = 1;
if(f.type == ’prop’ && !FancyForm.initing && $type(c.onclick) == ’function’)
c.onclick();
});
c.addEvent(‘mouseup’, function(f){
if(f.event.stopPropagation) f.event.stopPropagation();
});
c.addEvent(‘mousedown’, function(f){
if(f.event.stopPropagation) f.event.stopPropagation();
});
if(extraclass = FancyForm.extra[chk.type])
chk.addClass(extraclass);
if(extraclass = FancyForm.extra['all'])
chk.addClass(extraclass);
});
FancyForm.initing = 0;
$each($$(‘form’), function(x) {
x.addEvent(‘reset’, function(a) {
window.setTimeout(function(){FancyForm.chks.each(function(x){FancyForm.update(x);x.inputElement.blur()})}, 200);
});
});
},
update: function(chk){
if(chk.inputElement.getProperty(‘checked’)) {
chk.removeClass(FancyForm.offclasses[chk.type]);
chk.addClass(FancyForm.onclasses[chk.type]);
if (chk.type == ’radio’){
FancyForm.chks.each(function(other){
if (other.name == chk.name && other != chk) {
other.inputElement.setProperty(‘checked’, false);
FancyForm.update(other);
}
});
}
if(extraclass = FancyForm.extra['on'])
chk.addClass(extraclass);
if(extraclass = FancyForm.extra['off'])
chk.removeClass(extraclass);
if(!FancyForm.initing)
FancyForm.onSelect(chk);
} else {
chk.removeClass(FancyForm.onclasses[chk.type]);
chk.addClass(FancyForm.offclasses[chk.type]);
if(extraclass = FancyForm.extra['off'])
chk.addClass(extraclass);
if(extraclass = FancyForm.extra['on'])
chk.removeClass(extraclass);
if(!FancyForm.initing)
FancyForm.onDeselect(chk);
}
if(!FancyForm.initing)
chk.inputElement.focus();
},
all: function(){
FancyForm.chks.each(function(chk){
chk.inputElement.setProperty(‘checked’, ’checked’);
FancyForm.update(chk);
});
},
none: function(){
FancyForm.chks.each(function(chk){
chk.inputElement.setProperty(‘checked’, false);
FancyForm.update(chk);
});
}
};
window.addEvent(‘domready’, function(){
FancyForm.start();
});
更多精彩内容其他人还在看

Opera中国的WEB标准课程

网页制作Webjx文章简介:在这篇文章里,我要向大家介绍我和其他很多人花费数月时间开发的一个课程——Web标准课程,该课程旨在向大家提供Web设计和开发的坚实基础,无论读者是谁,此教程完全免费、可访问,并且不需要预备知识。当然,我主要还
收藏 0 赞 0 分享

CSS样式表渐进增强的基本概念

网页制作Webjx文章简介:如果你挠着头想弄清楚优雅降级和渐进增强的区别,我告诉你,这是视角问题。优雅降级和渐进增强都考虑网站在各种设备的各种浏览器上如何良好运转。两者区别的关键在于它们各自关注的焦点,以及这种关注对工作流程的影响
收藏 0 赞 0 分享

简单介绍Web Developer插件制作网页

网页制作Webjx文章简介:Firefox浏览器是一个良好支持W3C标准的开放源代码的浏览器,拥有Linux/Windows/Mac版本。因为Firefox浏览器良好支持W3C标准,所以使用Firefox来调试网页是非常好的。 Firefox浏览器是
收藏 0 赞 0 分享

CSS布局带来的巨大影响:CSS display属性值

网页制作Webjx文章简介:网页元素应用上那些与表格相关的display属性值后,能够模仿出与表格相同的特性。我将会在该文中给大家演示这种方法给CSS布局带来的巨大影响。 应原书编辑要求,先在文章顶部给出链接:《Everything You
收藏 0 赞 0 分享

用div css模拟表格对角线

这只是探讨一种CSS模拟表格对角线的用法,实际在工作中可能觉得这样做有点小题大作,这不是本主题讨论的重点。如果对此深以为然的朋友,请一笑过之 首先声明: 这只是探讨一种CSS模拟表格对角线的
收藏 0 赞 0 分享

IE Firefox在css中的差别 (部分)

1、单位问题 问题:任何距离的数值ie可以不加单位,ff必须要求写单位(0除外) 解决:写全单位如padding:0px; 2、水平居中 问题:div里的内容,ie默认为center,而ff默认left 解决:mairgin:0px auto; 3、高度问题
收藏 0 赞 0 分享

不用js可以实现信息提示效果

[code] <style> body { font:verdena; font-size:14px; color:#000 } h1{ font:verdena; font-size:22px; color:#000 } h2{ font:verdena;
收藏 0 赞 0 分享

CSS解决未知高度的垂直水平居中自适应问题

今天有人问起,晚上试着写出来,供参考; 以下代码兼容主流浏览器IE6、IE7、Firefox、Opera。 从最简单的开始………… 一、如何让一个DIV水平居中? 这个简单不作过多说明! [code] <st
收藏 0 赞 0 分享

CSS cursor 属性 -- 鼠标指针样式效果

取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize |
收藏 0 赞 0 分享

css 简单区别ie6,ie7,firefox的写法

同一样式里可以这样 [code] margin:17px; FF +margin:17px; IE6 IE7 _margin:17px; IE6 [/code] 按这个顺序,刚好区分开三个浏览器
收藏 0 赞 0 分享
查看更多