tes*_*ssa 5 css jquery jquery-plugins
我想了解jquery插件,所以我决定尝试制作一个简单的圆角盒.我知道那里已经有一些圆角插件,但这对我来说比工作要求更像是一种学习练习.
我从这里采取圆角.我喜欢这个样本,因为它不使用图像,很容易改变盒子的颜色.
我想我无法绕着最好的方式缠绕我的大脑.我有一个非常粗略的样本,它有点工作,但它感觉不对.让我兴奋的部分是在内容区域周围构建圆角.现在它需要"内容"框并附加它周围的角落.有什么更好的方法呢?
这是打电话的方式 - $('#content').roundbox();
如果这还不够,请告诉我.
//
(function($)
{
jQuery.fn.roundbox = function(options)
{
var opts = $.extend({}, $.fn.roundbox.defaults, options);
var outer = $("<div>");
var topBorder = $("<b class='xtop'><b class='xb1'></b><b class='xb2'></b><b class='xb3'></b><b class='xb4'></b></b>");
var bottomBorder = $("<b class='xbottom'><b class='xb4'></b><b class='xb3'></b><b class='xb2'></b><b class='xb1'></b></b>");
var title = $("<h1>Select Funding</h1>");
var separator = $("<div></div>");
$(this).append(title);
$(this).append(separator);
var firstElement = $(this).children()[0];
if (firstElement != null)
{
title.insertBefore(firstElement);
separator.insertBefore(firstElement);
}
outer.append(topBorder);
outer.append($(this));
outer.append(bottomBorder);
$("#fundingAdminContainer").append(outer);
//Add classes
outer.addClass(opts.outerClass); //outer container
$(this).addClass(opts.contentClass); //inner content
title.addClass(opts.titleClass); //roundbox title
separator.addClass(opts.lineClass); //line below title
};
$.fn.roundbox.defaults =
{
outerClass: 'roundbox',
contentClass: 'roundboxContent',
titleClass: 'roundboxTitle',
lineClass: 'roundboxLine'
};
})(jQuery);
//CSS
.roundbox
{
float:left;
width:400px;
margin-right:20px;
}
.roundboxContent
{
display:block;
background:#ffffff;
border:0 solid #D4E2FE;
border-width:0 1px;
height:180px;
padding:10px;
}
.roundboxLine
{
background: url(../images/fundingAdmin_line.gif);
background-repeat:no-repeat;
height:5px;
}
.roundboxTitle
{
font-size:1.3em; color:#17A2D3;
}
.xtop, .xbottom {display:block; background:transparent; font-size:1px;}
.xb1, .xb2, .xb3, .xb4 {display:block; overflow:hidden;}
.xb1, .xb2, .xb3 {height:1px;}
.xb2, .xb3, .xb4 {background:#ffffff; border-left:1px solid #D4E2FE; border-right:1px solid #D4E2FE;}
.xb1 {margin:0 5px; background:#D4E2FE;}
.xb2 {margin:0 3px; border-width:0 2px;}
.xb3 {margin:0 2px;}
.xb4 {height:2px; margin:0 1px;}
Run Code Online (Sandbox Code Playgroud)
盒子的最终结构应该是:
<div id="fundingAdminContainer"><!-- Not part of rounded box, just serves as a container. -->
<div class="roundbox">
<b class="xtop"><b class="xb1"></b><b class="xb2"></b><b class="xb3"></b><b class="xb4"></b></b>
<div id="content" class="roundboxContent">
<h1 class="roundboxTitle">Title</h1>
<div class="roundboxLine"></div>
//CONTENT
</div>
<b class="xbottom"><b class="xb4"></b><b class="xb3"></b><b class="xb2"></b><b class="xb1"></b></b>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
你这样做的方式对我来说似乎很好。不过,我不会对资金的内容进行硬编码。
您可以将标题和分隔符作为函数的选项,而不是附加到#fundingAdminContainer,您可以这样做
outer.insertBefore($(this));
Run Code Online (Sandbox Code Playgroud)
在将 $(this) 附加到外部之前。
编辑:这个答案现在已经很旧了,我想说已经过时了。大多数浏览器现在通过 CSS border-radius 属性或至少是特定于浏览器的替代方案支持圆角。我还想说,在大多数情况下,对于不支持 CSS 的旧浏览器,甚至不值得使用额外的 js 来填充圆角(当然这是观点)。因此,如果我要给出完整的答案,我会说只需使用它并按照它告诉你的去做:)。
但是如果你真的想要在 <IE9 中使用圆角,我建议这样,这样你仍然可以在大多数浏览器中单独使用 CSS,并且只有 IE 需要做任何额外的工作(在 htc 文件中)来圆角。
唯一的问题是 htc 文件也已过时,应该修改以使用类似这样的内容检查 border-radius 是否存在。htc只是JS。这将使 IE9 不必进行 JS DOM 操作。