自写的一个jQuery圆角插件

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


代码如下:

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

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

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


代码如下:

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

效果如图:

接下来我就来讲讲实现过程了,先附上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

(0)

相关推荐

  • 基于jQuery实现仿淘宝套餐选择插件

    首先是页面HTML代码 复制代码 代码如下: <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript&qu

  • 超级好用的jQuery圆角插件 Corner速成

    jQuery Corner是一款jQuery的插件,最初由Dave Methvin开发,但后在Malsup同志的协助下,进行了一些重要的改进.现在项目放在github上,当然为了方便,本文会以附件的形式提供该插件,但要想得到最新版,请到项目的github上拿. 之所以会像变魔术一样地展现圆角及其他样式,是由于该插件为目标元素增加了一些小条块,这些小条块为背景色,所以人眼看上去出现了圆角而已,其实就是小东西遮盖了本来的直角. 看来我真不是干魔术师的料,一上来就先把老底给揭了出来.不急,我再补充一下

  • CSS+Jquery实现页面圆角框方法大全

    所以我就想用一个既方便调用又方便更新的方法来实现,结果如愿以偿.先将此技术点总结如下: 在此之前我也寻找过目前网络上最流行的做法的实现方案,大体共总结出7种方法,但是发现他们的方法多多少少都存在缺陷,后来我自己做出了我自己觉得满意的方法. 先看目前网络上最流行的7种做法: 1,无图片纯css圆角框 收录理由:兼容性强,不用图形 图一 特点: 1.不用任何图形,使用很多个div容器模拟出圆角效果. 2.兼容性:通杀所有浏览器 缺点: 1.构造这个圆角需要加入太多的无语义的标签,结构比较冗余. 2.

  • 基于jQuery实现网页进度显示插件

    相信大家都见过类似的网站功能,这种形式的进度显示可以很方便的让用户去理解和操作, 以下是插件的测试截图 ,提供了两个皮肤 使用js编写 可以灵活的生成进度条 方便进对一些工作进度进行图形显示 1.简单的调用 //所有步骤的数据 var stepListJson=[{StepNum:1,StepText:"第一步"}, {StepNum:2,StepText:"第二步"}, {StepNum:3,StepText:"第三步"}, {StepNum:

  • jQuery插件开发的五种形态小结

    关于jQuery插件的开发自己也做了少许研究,自己也写过多个插件,在自己的团队了也分享过一次关于插件的课.开始的时候整觉的很复杂的代码,现在再次看的时候就清晰了许多.这里我把我自己总结出来的东西分享出来,帮助那些和我一样曾经遇到过同样问题的人. 我要做什么 我想要得到的javascript 插件应该会有以下几个特征 代码相对独立 链式操作 插件可配置 有可操作的方法,插件的生命周期可控制 配置可被缓存 可扩展 无冲突处理 事件代理,动态初始化 * 以下的代码均假设存在 jQuery 插件的第一形

  • jquery 圆角遮罩图片实现图片圆角

    运行后请刷新一次. 圆角遮罩图片实现图片圆角 by ahuinan 2009-5-15 $(function(){ $(".kuang").after(" "); }) li{ list-style:none; float:left; margin-right:20px; margin-top:20px; position:relative; } img{ border:0; width:94px; height:94px; } .kuang_div{ positi

  • jquery 插件实现多行文本框[textarea]自动高度

    实现功能: 1/当textarea换行时自动增加一行高度 2/当textarea删除一行时 自动减少一行的高度 依赖:jquery.xxx.js 工作中需要使用类似功能但是觉得使用插件需要导入其他文件很不方便所以就写了一个 textarea jquery插件 复制代码 代码如下: <div class="form-group">     <label class="col-sm-3 control-label no-padding-right" f

  • jquery插件corner实现圆角边框的方法

    本文实例讲述了jquery插件corner实现圆角边框的方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm

  • jquery手风琴特效插件

    手风琴效果是项目中使用频率较高的一种效果,原来项目一直都在用easyui的,临近年末,试着自己写了一个 css样式 复制代码 代码如下: /* CSS Document */ body {     margin: 0 auto;     padding: 0 auto;     font-size: 9pt;     font-family: 微软雅黑, 宋体, Arial, Helvetica, Verdana, sans-serif; } .accordion {     padding-l

  • 自写的一个jQuery圆角插件

    原理是利用1px的div,具体实现看代码. 使用方法: 复制代码 代码如下: $('.test').rounder(); 这样会根据默认的设置产生一个圆角框,效果如图: 圆角处会有点锯齿:(如果仅此而已,那肯定是不够的.我们会想加上自己的一个样式该怎么办?使用方法: 复制代码 代码如下: $('.test').rounder({borderColor:'red',backgroundColor:'#EEE',color:'blue'}); 效果如图: 接下来我就来讲讲实现过程了,先附上jQuer

  • 一步一步教你写一个jQuery的插件教程(Plugin)

    jQuery 的plugin开发需要注意的事情,1.       明确jQuery的命名空间只有一个.2.       明白options参数用来控制plugin的行为.3.       为默认的plugin设定提供公共的访问权限.4.       为子函数提供公共的访问权限.5.       私有的函数绝对是私有访问6.       支持metadata plugin.我将会在下面的例子中一个一个的说明上面这几个条件,做完这些事情后我们就会创建一个高亮显示text的简单插件. 1. 明确jQu

  • jqPlot jQuery绘图插件的使用

    jqPlot是一个jQuery绘图插件,可以利用它制作漂亮的线状图和柱状图.jqPlot支持为图表设置各种不同的样式.提供Tooltips,数据点高亮显示等功能. 官网:http://www.jqplot.com/ 这里贡献上中文教程,基本上所有的api都很齐全,供有需要的童鞋们瞧瞧,更重要的是作为自己滴收藏~~哦耶耶~ jqPlot整的来说有三个地方需要配置.格式如: $.jqplot('target', data, options);target:要显示的位置.data:显示的数据.opti

  • 分享十五个最佳jQuery 幻灯插件和教程

    幻灯(通常也被称为"内容滑动".内容切换效果.焦点图等)是在网站或博客的较小区域展示大量内容的很好的方法.动态的自动滑动内容在很多网站上都是很流行的.你是否也对在自己的网站上实现类似的效果感兴趣?那就看一下本文列出的jQuery插件吧!1. jFlow 官方网站 | 演示 一个漂亮而整洁的图片幻灯,被nettut推荐,如果你想自己做一个图片幻灯效果,就去看看吧. 2. 使用jQuery UI实现推荐内容的幻灯展示 官方网站 这是一个教你如何"使用一种很有冲击力的方法展示你的网

  • 推荐10个超棒的jQuery工具提示插件

    1. Pop! 使用 Pop!可以创建简单的下拉菜单!这是一个并不引人注目的 jQuery 插件. 2. BetterTip 允许你创建定制的 Tool tips 的 jQuery 插件. 3. EZPZ Tooltip 非常简单的使用边框的 tooltip,同样也可以跟随鼠标. 4. BsTip 各种简单的 tooltips,使用淡入和淡出效果,并且也有边框环绕. 5. clueTip 当鼠标悬浮的时候允许显示一个漂亮的 tooltip 在指定的元素上. 6. inline HTML tool

  • 使用jQuery ajaxupload插件实现无刷新上传文件

    项目中会经常用到AJAX无刷新上传图片,但是iframe上传和flash插件都是比较复杂的,所以就找了一个jquery的插件. 代码如下 使用方法如下 <script type="text/javascript"> $(function () { var button = $('#upload'); new AjaxUpload(button, { action: '/upload/imagesAjaxUpload', name: 'upload', onSubmit: f

  • 推荐25个超炫的jQuery网格插件

    jQuery 网格插件可以让你创建各种各样的表格布局,网格布局是报纸和杂志中最常见的布局,现在的网站中也很常见,在这篇文章中,我向大家推荐25个jQuery的网格插件,你可以任意控制网格的行和列,用文本和图片进行填充.我用了顶级的来形容这个些插件,我可以肯定你了解它们之后会觉得很酷. 1. Gridify Gridify是轻量级的 jQuery 插件,用来创建一个类似 Pinterest 图片加载网格插件.支持图像加载事件,支持窗口缩放事件,支持非常长的高度项,支持动态项宽度,支持动画 (CSS

  • 广泛收集的jQuery拖放插件集合

    今天分享给大家一些非常棒的的jQuery插件拖放功能. 有了这些插件,你会允许你的访问者个性化的网站和它的工具,根据自己的需要,并以这种方式,你提供定制选项的负载展现方式 jQuery mb.containerPlus (演示 | 下载) 在建立功能齐全,完全可换肤的容器,这是一个有用的插件.容器可以设置拖动,调整大小,可折叠和可最小化. jQuery的卷轴插件 (演示 | 下载) 卷轴是一个jQuery插件,它需要一个图片标签,使现场的"投影"的预建动画帧序列.其目的是要提供360°

  • 分享一个自己动手写的jQuery分页插件

    工作需要一个JS分页插件,心想自己动手写一个吧,一来上网找一个不清楚代码结构的,出了问题难以解决,而且网上的插件所包含的功能太多,有些根本用不到,就没必要加载那段JS,二来想起没写过jQuery插件,就当练一下手了,好了,先看结果: http://demo.jb51.net/js/2014/EasyPage/ 简单说一下这个插件所要实现的功能 后台将查询出来的内容全部显示到页面上,这个插件要控制这些内容,使其一页一页显示.有上一页,下一页,首页,尾页的功能.在第一页时,上一页,首页要隐藏.在最后

随机推荐