自写的一个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结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
Feb 18 Javascript
js获取ajax返回值代码
Apr 30 Javascript
js操作iframe父子窗体示例
May 22 Javascript
jQuery实用函数用法总结
Aug 29 Javascript
JavaScript自定义数组排序方法
Feb 12 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
May 09 Javascript
使用nvm管理不同版本的node与npm的方法
Oct 31 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
Jan 09 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
Vue实现开心消消乐游戏算法
Oct 22 Javascript
微信小程序登陆注册功能的实现代码
Dec 10 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 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自定义大小验证码的方法详解
2013/06/07 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
php统计文章排行示例
2014/03/04 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
Dom操作之兼容技巧分享
2011/09/20 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
详解django中使用定时任务的方法
2018/09/27 Python
python生成n个元素的全组合方法
2018/11/13 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
python中取绝对值简单方法总结
2020/07/24 Python
python中的django是做什么的
2020/07/31 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
海外淘书首选:AbeBooks
2017/07/31 全球购物
毕业生机械建模求职信
2013/10/14 职场文书
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
教师培训简讯
2015/07/20 职场文书