自写的一个jQuery圆角插件


Posted in Javascript onOctober 26, 2010

原理是利用1px的div,具体实现看代码。
使用方法:

$('.test').rounder();

这样会根据默认的设置产生一个圆角框,效果如图:自写的一个jQuery圆角插件

圆角处会有点锯齿:(
如果仅此而已,那肯定是不够的。我们会想加上自己的一个样式该怎么办?使用方法:

$('.test').rounder({borderColor:'red',backgroundColor:'#EEE',color:'blue'});

效果如图:自写的一个jQuery圆角插件

接下来我就来讲讲实现过程了,先附上jQuery代码如下:

(function($){ 
$.fn.rounder=function(options){ 
var setting=$.extend({backgroundColor:'#FFF',borderColor:'#AAA',color:'#000'},options||{}); 
this.each(function(){ 
var source=$(this); 
var container=source.parents(".mapping_rounder"); 
if(container.size()<=0){ 
container=$('<div class="mapping_rounder"></div>'); 
source.before(container); 
//添加1pxDIV 
container.append('<div class="rounder_px3"></div><div class="rounder_px2"></div><div class="rounder_px1"></div><div class="rounder_px0"></div><div class="rounder_content"></div><div class="rounder_px0"></div><div class="rounder_px1"></div><div class="rounder_px2"></div><div class="rounder_px3"></div>'); 
container.find('.rounder_content').append(source); 
//保持原有的形态,如:高度、宽度等 
container.width(source.width()); 
source.width(source.width()-12); 
container.height(source.height()); 
source.height(source.height()-8); 
source.css('lineHeight',source.height()+'px'); 
container.css('marginTop',source.css('marginTop')); 
source.css('marginTop',0); 
container.css('marginBottom',source.css('marginBottom')); 
source.css('marginBottom',0); 
container.css('marginLeft',source.css('marginLeft')); 
source.css('marginLeft',0); 
container.css('marginRight',source.css('marginRight')); 
source.css('marginRight',0); 
} 
//给1pxDIV添加样式以产生圆角边框的效果 
container.find('.rounder_px3').css('backgroundColor',setting.borderColor); 
container.find('.rounder_px2').css({borderColor:setting.borderColor,backgroundColor:setting.backgroundColor}); 
container.find('.rounder_px1').css({borderColor:setting.borderColor,backgroundColor:setting.backgroundColor}); 
container.find('.rounder_px0').css({borderColor:setting.borderColor,backgroundColor:setting.backgroundColor}); 
container.find('.rounder_content').css({borderColor:setting.borderColor,backgroundColor:setting.backgroundColor}); 
//去除原有的样式 
source.css('borderStyle','none'); 
source.css('backgroundColor',setting.backgroundColor); 
source.css('color',setting.color); 
}); 
} 
})(jQuery);

CSS文件代码:
.rounder_content{padding:0 5px;border-left:1px solid;border-right:1px solid;} 
.rounder_px0{margin:0;height:2px;border-left:2px solid;border-right:2px solid;overflow:hidden;} 
.rounder_px1{margin:0 1px;height:1px;border-left:2px solid;border-right:2px solid;overflow:hidden;} 
.rounder_px2{margin:0 2px;height:1px;border-left:3px solid;border-right:3px solid;overflow: hidden;} 
.rounder_px3{margin:0 3px;height:1px;background:#AAA;overflow:hidden;}

本来这个CSS文件的样式都可以用jQuery加上去,但那样会多很多代码,且让我在此偷下懒- -|||。样式里面加上overflow:hidden;的目的是为了兼容IE6,因为在IE6里面DIV会有个默认的最小高度,好像是13px。
功能非常简单,但可以应用到我们常见的应用中,如下:
<script type="text/javascript"> 
$(document).ready(function(){ 
$('.test').rounder({borderColor:'#AAA',color:'#000'}); 
$('.test').focus(function(event){$(event.target).rounder({borderColor:'red',backgroundColor:'#EEE',color:'blue'});}); 
$('.test').blur(function(event){$(event.target).rounder({borderColor:'#AAA',color:'#000'});}); 
}); 
</script>

即文本框加上圆角,获取焦点时呈现一种样式,失去焦点时再呈现另一种样式。

当然,我们可以通过和jQuery本身强大的功能结合来满足不同的需求。

优点:

体积小,两个文件经过压缩后只有2.23kb
简单易用
不足:

边框弧度和线条的粗细不能调节(如果需要请参考jquery.corner插件)
高度和字符大小配合的不是很好,有时字符会被遮住一半
测试通过IE6、FF、Opera、Safari、Chrome

Javascript 相关文章推荐
JQUERY 浏览器判断实现函数
Aug 20 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
Aug 19 Javascript
jQuery+ajax实现动态执行脚本的方法
Jan 27 Javascript
简介JavaScript中search()方法的使用
Jun 06 Javascript
使用JavaScript实现连续滚动字幕效果的方法
Jul 07 Javascript
学习Javascript面向对象编程之封装
Feb 23 Javascript
jquery ztree实现模糊搜索功能
Feb 25 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
Aug 25 Javascript
angular分页指令操作
Jan 09 Javascript
VUE中v-model和v-for指令详解
Jun 23 Javascript
微信禁止下拉查看URL的处理方法
Sep 28 Javascript
JS实现计算小于非负数n的素数的数量算法示例
Feb 26 Javascript
jQuery获取地址栏参数插件(模仿C#)
Oct 26 #Javascript
自制轻量级仿jQuery.boxy对话框插件代码
Oct 26 #Javascript
jquery ui resizable bug解决方法
Oct 26 #Javascript
HTML Dom与Css控制方法
Oct 25 #Javascript
Dom在ajax技术中的作用说明
Oct 25 #Javascript
Dom与浏览器兼容性说明
Oct 25 #Javascript
Dom 是什么的详细说明
Oct 25 #Javascript
You might like
PHP实现多条件查询实例代码
2010/07/17 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
淘宝搜索框效果实现分析
2011/03/05 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
js实现网页收藏功能
2015/12/17 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
angular多语言配置详解
2019/05/16 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
python对list中的每个元素进行某种操作的方法
2018/06/29 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
大学生学习生活的自我评价
2013/11/01 职场文书
人力资源管理专业学生自我评价
2013/11/20 职场文书
查环查孕证明
2014/01/10 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
中秋客户感谢信
2015/01/22 职场文书
违规违纪检讨书范文
2015/05/06 职场文书