一张图片实现圆角
日期:2008-12-12 分类:CSS
一张图片就能实现圆角?是什么样的图片?怎样实现?
其实这张图片是一个小圆圈,如下面的例子将要使用的图片为 10 * 10 大小的图片:
,太小了是吧,不过已经够了。
基本思路
准备四个小容器,分别放小圆圈图片的左上、右上、左下、右下四个部分,然后再分别定位到父容器的四个角上。
图片示意:

代码实现
XHTML代码:
<div id="container">
<h1>一张图片实现圆角</h1>
<b class="lt"></b>
<b class="rt"></b>
<b class="lb"></b>
<b class="rb"></b>
</div>
<h1>一张图片实现圆角</h1>
<b class="lt"></b>
<b class="rt"></b>
<b class="lb"></b>
<b class="rb"></b>
</div>
四个 b 为小容器,不要管它们,放上去就是了。
CSS代码:
*{
margin:0;
padding:0;
}
#container{
position:relative;
margin:20px auto;
padding:20px;
width:400px;
height:50px;
border:1px solid #000;
}
b{
position:absolute;
width:5px;
height:5px;
font-size:0;
background-image:url(images/yuan8.jpg);
background-repeat:no-repeat;
}
.lt{
left:-1px;
top:-1px;
background-position:left top;
}
.rt{
right:-1px;
top:-1px;
background-position:right top;
}
.lb{
left:-1px;
bottom:-1px;
background-position:left bottom;
}
.rb{
right:-1px;
bottom:-1px;
background-position:bottom right;
}
h1{
text-align:center;
font-size:24px;
}
margin:0;
padding:0;
}
#container{
position:relative;
margin:20px auto;
padding:20px;
width:400px;
height:50px;
border:1px solid #000;
}
b{
position:absolute;
width:5px;
height:5px;
font-size:0;
background-image:url(images/yuan8.jpg);
background-repeat:no-repeat;
}
.lt{
left:-1px;
top:-1px;
background-position:left top;
}
.rt{
right:-1px;
top:-1px;
background-position:right top;
}
.lb{
left:-1px;
bottom:-1px;
background-position:left bottom;
}
.rb{
right:-1px;
bottom:-1px;
background-position:bottom right;
}
h1{
text-align:center;
font-size:24px;
}
这种方法似乎很完美,但遗憾的是:如果父容器(本例为 #container)的高度为基数时,在 IE6 里下方会出现一条横线,如下图:

所以,如果使用这种方法,就要控制好父容器,使它的高度为偶数。
另外:由于 IE 默认行高,b{height:5px} 会没有效果,所以加上了 font-size:0 消除了这个 bug ,虽然 overflow:hidden 也可以消除这个 bug ,但本例中不适合用这种方法,否则在 IE 中下半部分的圆角会没有效果或效果不完美(IE bug 真多 -_-!)。
以前看到这么一个例子,当时没理解,今天得到青色兄的指点豁然开朗啊,以前都是用一图片的方法,遇见复杂的圆角就用老温的5图片圆角。
不过这个圆角虽然好,但是有一个缺点 外面的父元素不能添加背景颜色。- -#
也可以啊,只不过图片要做处理:圈内透明,圈外白色或根据实际情况填充颜色,保存成 png 或 gif 格式,不过 gif 格式可能会有锯齿,毕竟 gif 格式图片只支持 1 位透明度。
[...] 上面例子中会用到四张图片,在淘宝圆角框中只对它做了改进而且只需要一张图片就能实现效果。我大概说一下主要思想,如果想彻底了解可以去 青色同学的博客,里面有详细的讲解包你一看就懂。 [...]
这都能想出来,你太有才啦!
看到标题我还以为是将四个角做在一张图上,用背景定位呢。
很是佩服青色对css的理解啊。。。什么时候才可以像你一样运用自如啊。。