自写的一个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 应用类库代码
Jun 02 Javascript
js下写一个事件队列操作函数
Jul 19 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
jQuery页面加载初始化常用的三种方法
Jun 04 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
js实现适合新闻类图片的轮播效果
Feb 05 Javascript
Vue配合iView实现省市二级联动的示例代码
Jul 27 Javascript
layer.open 按钮的点击事件关闭方法
Aug 17 Javascript
JavaScript页面倒计时功能完整示例
May 15 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
如何在Vue.JS中使用图标组件
Aug 04 Javascript
在vue中使用console.log无效的解决
Aug 09 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中实现进程间通讯
2006/10/09 PHP
php代码书写习惯优化小结
2013/06/20 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
基本DOM节点操作
2017/01/17 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
python文件写入实例分析
2015/04/08 Python
深入浅析python继承问题
2016/05/29 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Django的信号机制详解
2017/05/05 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
事业单位竞聘上岗实施方案
2014/03/28 职场文书
法人授权委托书范本
2014/09/17 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
golang import自定义包方式
2021/04/29 Golang
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技