自写的一个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 相关文章推荐
初识javascript 文档碎片
Jul 13 Javascript
基于javascript 闭包基础分享
Jul 10 Javascript
javascript模拟实现C# String.format函数功能代码
Nov 25 Javascript
浅谈Javascript 数组与字典
Jan 29 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
vue2.0 elementUI制作面包屑导航栏
Feb 22 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
vue中的面包屑导航组件实例代码
Jul 01 Javascript
vue实现div单选多选功能
Jul 16 Javascript
Vue自定义全局弹窗组件操作
Aug 11 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
Sep 04 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
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
如何使用angularJs
2017/05/08 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
使用Kivy将python程序打包为apk文件
2017/07/29 Python
Python如何生成树形图案
2018/01/03 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
Python3数字求和的实例
2019/02/19 Python
python绘制漏斗图步骤详解
2019/03/04 Python
pycharm新建一个python工程步骤
2019/07/16 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
民主评议党员自我评价材料
2014/09/18 职场文书
钳工实训报告总结
2014/11/04 职场文书
看上去很美观后感
2015/06/10 职场文书
运动会宣传稿50字
2015/07/23 职场文书
停车场管理制度范本
2015/08/05 职场文书
年中了,该如何写好个人述职报告?
2019/07/02 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python