jQuery单选框/复选框美化特效

2025-11-05 04:57:25

1、新建html文档。

jQuery单选框/复选框美化特效

2、书写hmtl代码。

<h1>jQuery单选框/复选框美化特效</h1>

<h3>(单选框)</h3>

<ul class="dowebok">

<li><input type="radio" name="radio" data-labelauty="百度经验"></li>

<li><input type="radio" name="radio" data-labelauty="百度经验"></li>

<li><input type="radio" name="radio" data-labelauty="百度经验"></li>

<li><input type="radio" name="radio" data-labelauty="百度经验"></li>

<li><input type="radio" name="radio" disabled data-labelauty="百度经验"></li>

</ul>

<hr>

<h3>(复选框)</h3>

<ul class="dowebok">

<li><input type="checkbox" name="checkbox" disabled checked data-labelauty="百度经验"></li>

<li><input type="checkbox" name="checkbox" data-labelauty="百度经验"></li>

<li><input type="checkbox" name="checkbox" data-labelauty="百度经验"></li>

<li><input type="checkbox" name="checkbox" data-labelauty="百度经验"></li>

<li><input type="checkbox" name="checkbox" data-labelauty="百度经验"></li>

<li><input type="checkbox" name="checkbox" data-labelauty="百度经验"></li>

<li><input type="checkbox" name="checkbox" data-labelauty="百度经验"></li>

</ul>

<script>

$(function(){

$(':input').labelauty();

});

</script>

jQuery单选框/复选框美化特效

3、书写css代码。

ul { list-style-type: none; }

li { display: inline-block; }

li { margin: 10px 0; }

input.labelauty + label { font: 12px "Microsoft Yahei"; }

input.labelauty + label ::selection { background-color: rgba(255, 255, 255, 0); }

input.labelauty + label ::-moz-selection {background-color: rgba(255, 255, 255, 0);}

input.labelauty { display: none !important; }

input.labelauty + label { display: table; font-size: 11px; padding: 10px; background-color: #efefef; color: #b3b3b3; cursor: pointer; border-radius: 3px 3px 3px 3px; -moz-border-radius: 3px 3px 3px 3px; -webkit-border-radius: 3px 3px 3px 3px; transition: background-color 0.25s; -moz-transition: background-color 0.25s; -webkit-transition: background-color 0.25s; -o-transition: background-color 0.25s; -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; }

input.labelauty + label > span.labelauty-unchecked, input.labelauty + label > span.labelauty-checked { display: inline-block; line-height: 16px; vertical-align: bottom; }

input.labelauty + label > span.labelauty-unchecked-image, input.labelauty + label > span.labelauty-checked-image { display: inline-block; width: 16px; height: 16px; vertical-align: bottom; background-repeat: no-repeat; background-position: left center; transition: background-image 0.5s linear; -moz-transition: background-image 0.5s linear; -webkit-transition: background-image 0.5s linear; -o-transition: background-image 0.5s linear; }

input.labelauty + label > span.labelauty-unchecked-image + span.labelauty-unchecked, input.labelauty + label > span.labelauty-checked-image + span.labelauty-checked { margin-left: 7px; }

input.labelauty:not(:checked):not([disabled]) + label:hover { background-color: #eaeaea; color: #a7a7a7; }

input.labelauty:not(:checked) + label > span.labelauty-checked-image { display: none; }

input.labelauty:not(:checked) + label > span.labelauty-checked { display: none; }

input.labelauty:checked + label { background-color: #3498db; color: #ffffff; }

input.labelauty:checked:not([disabled]) + label:hover { background-color: #72c5fd; }

input.labelauty:checked + label > span.labelauty-unchecked-image { display: none; }

input.labelauty:checked + label > span.labelauty-unchecked { display: none; }

input.labelauty:checked + label > span.labelauty-checked { display: inline-block; }

input.labelauty.no-label:checked + label > span.labelauty-checked { display: block; }

input.labelauty[disabled] + label { opacity: 0.5; }

input.labelauty + label > span.labelauty-unchecked-image { background-image: url( ../images/input-unchecked.png ); }

input.labelauty + label > span.labelauty-checked-image { background-image: url( ../images/input-checked.png ); }

jQuery单选框/复选框美化特效

4、书写并添加js代码。

<script src="js/jquery-1.8.3.min.js"></script>

<script>

(function( $ ){

$.fn.labelauty = function( options )

{

var settings = $.extend(

{

development: false,

class: "labelauty",

label: true,

separator: "|",

checked_label: "Checked",

unchecked_label: "Unchecked",

minimum_width: false,

same_width: true

}, options);

return this.each(function()

{

var $object = $( this );

var use_labels = true;

var labels;

var labels_object;

var input_id;

if( $object.is( ":checkbox" ) === false && $object.is( ":radio" ) === false )

return this;

$object.addClass( settings.class );

labels = $object.attr( "data-labelauty" );

use_labels = settings.label;

if( use_labels === true )

{

if( labels == null || labels.length === 0 )

{

labels_object = new Array();

labels_object[0] = settings.unchecked_label;

labels_object[1] = settings.checked_label;

}

else

{

labels_object = labels.split( settings.separator );

if( labels_object.length > 2 )

{

use_labels = false;

debug( settings.development, "There's more than two labels. LABELAUTY will not use labels." );

}

else

{

if( labels_object.length === 1 )

debug( settings.development, "There's just one label. LABELAUTY will use this one for both cases." );

}

}

}

$object.css({ display : "none" });

$object.removeAttr( "data-labelauty" );

input_id = $object.attr( "id" );

if( input_id == null )

{

var input_id_number = 1 + Math.floor( Math.random() * 1024000 );

input_id = "labelauty-" + input_id_number;

while( $( input_id ).length !== 0 )

{

input_id_number++;

input_id = "labelauty-" + input_id_number;

debug( settings.development, "Holy crap, between 1024 thousand numbers, one raised a conflict. Trying again." );

}

$object.attr( "id", input_id );

}

$object.after( create( input_id, labels_object, use_labels ) );

if( settings.minimum_width !== false )

$object.next( "label[for=" + input_id + "]" ).css({ "min-width": settings.minimum_width });

if( settings.same_width != false && settings.label == true )

{

var label_object = $object.next( "label[for=" + input_id + "]" );

var unchecked_width = getRealWidth(label_object.find( "span.labelauty-unchecked" ));

var checked_width = getRealWidth(label_object.find( "span.labelauty-checked" ));

if( unchecked_width > checked_width )

label_object.find( "span.labelauty-checked" ).width( unchecked_width );

else

label_object.find( "span.labelauty-unchecked" ).width( checked_width );

}

});

};

function getRealWidth( element )

{

var width = 0;

var $target = element;

var style = 'position: absolute !important; top: -1000 !important; ';

$target = $target.clone().attr('style', style).appendTo('body');

width = $target.width(true);

$target.remove();

return width;

}

function debug( debug, message )

{

if( debug && window.console && window.console.log )

window.console.log( "jQuery-LABELAUTY: " + message );

};

function create( input_id, messages_object, label )

{

var block;

var unchecked_message;

var checked_message;

if( messages_object == null )

unchecked_message = checked_message = "";

else

{

unchecked_message = messages_object[0];

if( messages_object[1] == null )

checked_message = unchecked_message;

else

checked_message = messages_object[1];

}

if( label == true )

{

block = '<label for="' + input_id + '">' +

'<span class="labelauty-unchecked-image"></span>' +

'<span class="labelauty-unchecked">' + unchecked_message + '</span>' +

'<span class="labelauty-checked-image"></span>' +

'<span class="labelauty-checked">' + checked_message + '</span>' +

'</label>';

}

else

{

block = '<label for="' + input_id + '">' +

'<span class="labelauty-unchecked-image"></span>' +

'<span class="labelauty-checked-image"></span>' +

'</label>';

}

return block;

};

}( jQuery ));

</script>

jQuery单选框/复选框美化特效

5、代码整体结构。

jQuery单选框/复选框美化特效

6、查看效果。

jQuery单选框/复选框美化特效

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢