这里提供切换开关的一个方案,效果如图:
这个效果的实质是checkbox。切换效果完美兼容IE8 / 9 / 10 / FF / Chrome / Safari...
代码很简单:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="css/switch.css"/>
</head>
<body>
<div class="switch">
<form><input type="checkbox"/></form>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="js/switch.js"></script>
</body>
</html>
所需文件:
两个JS / 一个CSS / 一个Image。
Image:
CSS:
.switch{ font:12px/16px Verdana;}
.switch .tzCheckBox{
background:url('../images/background.png') no-repeat right bottom;
display:inline-block;
min-width:60px;
height:33px;
white-space:nowrap;
position:relative;
cursor:pointer;
margin-left:14px;
}
.switch .tzCheckBox.checked{
background-position:top left;
margin:0 14px 0 0;
}
.switch .tzCheckBox .tzCBContent{
color: white;
line-height: 31px;
padding-right: 38px;
text-align: right;
}
.switch .tzCheckBox.checked .tzCBContent{
text-align:left;
padding:0 0 0 38px;
}
.switch .tzCBPart{
background:url('../images/background.png') no-repeat left bottom;
width:14px;
position:absolute;
top:0;
left:-14px;
height:33px;
overflow: hidden;
}
.switch .tzCheckBox.checked .tzCBPart{
background-position:top right;
left:auto;
right:-14px;
}
JS:
$(document).ready(function(){
$('input[type=checkbox]').tzCheckbox({labels:['Enable','Disable']});
});
(function($){
$.fn.tzCheckbox = function(options){
//默认是ON和OFF:
options = $.extend({
labels : ['ON','OFF']
},options);
return this.each(function(){
var originalCheckBox = $(this),
labels = [];
// 检查data-on和data-off属性:
if(originalCheckBox.data('on')){
labels[0] = originalCheckBox.data('on');
labels[1] = originalCheckBox.data('off');
}
else labels = options.labels;
// 生成开关HTML代码
var checkBox = $('<span>',{
className : 'tzCheckBox '+(this.checked?'checked':''),
html: '<span class="tzCBContent">'+labels[this.checked?0:1]+
'</span><span class="tzCBPart"></span>'
});
//插入开关代码,并隐藏原始的checkbox
checkBox.insertAfter(originalCheckBox.hide());
checkBox.click(function(){
checkBox.toggleClass('checked');
var isChecked = checkBox.hasClass('checked');
// 记录开关变化至原始的checkbox中
originalCheckBox.attr('checked',isChecked);
checkBox.find('.tzCBContent').html(labels[isChecked?0:1]);
});
// 监听原始checkbox的改变,做开关模拟点击
originalCheckBox.bind('change',function(){
checkBox.click();
});
});
};
})(jQuery);
兄弟姐妹们,别忘js和css及image的路径配置。
供你们和我自己参考,哈哈。