自写的一个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 相关文章推荐
一个获取第n个元素节点的js函数
Sep 02 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
复杂的javascript窗口分帧解析
Feb 19 Javascript
jQuery实现点击水纹波动动画
Apr 10 Javascript
开启BootStrap学习之旅
May 04 Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 Javascript
JS基于面向对象实现的选项卡效果示例
Dec 20 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
微信小程序实现点击返回顶层的方法
Jul 12 Javascript
微信小程序swiper实现滑动放大缩小效果
Nov 15 Javascript
关于vue.js中实现方法内某些代码延时执行
Nov 14 Javascript
TypeScript高级用法的知识点汇总
Dec 17 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
javascript代码加载优化方法
2011/01/30 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
Vue路由跳转问题记录详解
2017/06/15 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中的异常处理学习笔记
2015/01/28 Python
详解Python中的装饰器、闭包和functools的教程
2015/04/02 Python
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
大学毕业登记表自我鉴定
2013/10/09 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
软件售后服务承诺书
2014/05/21 职场文书
欢迎新生标语
2014/10/06 职场文书
表扬稿范文
2015/01/17 职场文书
人事行政助理岗位职责
2015/04/11 职场文书