`

如何用css实现圆角_CSS实现圆角解决方案(转)

阅读更多


导言:

本文探讨的是圆角框的终极解决方案,其核心关键词是“圆滑、完美、兼容、重用性、语义”,这些技术都是收集目前网络上最流行的做法。纵观种种方法,各有其优势,请针对不同的环境分别使用。

圆角框,因为其样式比直角框漂亮,所以成为设计师心中偏爱的设计元素。现在的web标准 下大量的网页、博客都采用圆角框设计,成为一道亮丽的风景线。
然而,就是这个圆角,却成为了网页前端人员心中永远抹之不去的阴影,对它,可以说是又痛又爱。爱的是它的漂亮,痛的是要让它兼容通行于各种不同的浏览器却成为一个永远的神话。
让我们来回顾一下目前网络流行的都有哪些解决方案。

第一种:无图片纯css 圆角框

收录理由:兼容性强,不用图形

图一

特点:

  1. 不用任何图形,使用很多个div容器模拟出圆角效果。
  2. 兼容性:通杀所有浏览器

缺点:

  1. 构造这个圆角需要加入太多的无语义的标签,结构比较冗余。
  2. 重用性不强:如果一个页面有多个圆角,并且要实现不同的半径大小,则其灵活性不够。
  3. 边框颜色虽然可以调节,但会对页面中的结构产生致命的影响,适用于色彩单一并且一个页面中圆角应用不多的页面。
  4. 不容易实现圆弧内有渐变色的图形背景。
  5. 圆角框不够圆滑,有锯齿现象,适合于背景色和当前色色差不大并且圆弧较小的网页。

实现原理:
用很多1像素高的div容器,利用背景色和边框色来模拟出圆角框的轮廓线。

实例演示: http://www.cssplay.co.uk/boxes/snazzy.html

第二种:无图片纯css圆角框,用特殊字符(&bull)

收录理由:圆滑,不用图形

图二

特点:

  1. 不用任何图形,使用特殊字符•(圆点)模拟出圆角。
  2. 兼容性:通杀所有浏览器
  3. 圆角平滑

缺点:

  1. 构造这个圆角一样需要加入无语义的标签,结构冗余,同第一种一样。
  2. 重用性不强:如果一个页面有多个圆角,并且要实现不同的半径大小,需要调整四个角图片的定位,并且字符大小对其有影响,灵活性不够。
  3. 颜色虽可调节,但要求里面的背景色和字符的颜色相同,不能做成边框线条。适用于色彩单一并且一个页面中圆角不是太多的页面。
  4. 一样不容易实现圆弧内有渐变色的图形背景。

实现原理:
用特殊字符(&bull),利用定位,截取四分之一圆模拟出圆角框的一个角图片。

实例演示:http://www.cssplay.co.uk/boxes/curves.html

第三种:图片圆角框

收录理由:兼容性强,可以表现很复杂的圆角效果。

图三

特点:

  1. 使用四个圆角图形(或一个圆图片)。
  2. 兼容性:通杀所有浏览器。
  3. 这是最常用的圆角框做法。
  4. 因为采用图片来表现,所以其圆角是超级平滑,无任何锯齿现象。
  5. 表现丰富,适用于各种对图片表现要求较高的圆角框。

缺点:

  1. 构造这个圆角也需要加入四个标签来装四张角图片,结构也有冗余。
  2. 重用性不强:如果一个页面有多个圆角,并且要实现不同的半径大小,则要重新制作一套圆角图片。
  3. 如果对结构的冗余没有特别的需求,这就是超级圆滑圆角框的解决方案了。
    实现原理:

利用九宫格原理,在一个容器的四个角加入绝对定位(或相对定位)的四张圆角图片。

实例演示:http://www.cssplay.co.uk/boxes/three_cornered.html

第四种:利用VML绘制圆角(ie only)

收录理由:无图片,平滑,可加阴影边框

图四

特点:

  1. 不用任何图形。
  2. 兼容性:只能在IE中使用
  3. 圆角半径随意调整
  4. 重用性强:多个圆角任意调用。
  5. 圆角颜色随意设置。
  6. 结构无冗余。
  7. 圆角平滑无锯齿。

缺点:

  1. 除了兼容性 有问题外,其它方面的表现都不错。
  2. 不能在圆弧中表现丰富的有渐变的图片,因为圆弧外框是透明的。

实现原理:使用IE专用的VML来画出圆角。

<v:roundrect
id="roundbox"
class="circle"
strokecolor="red"
strokeweight="2px"
arcsize="0.08">
</ v:roundrect >

注意加入引用空间:

<html xmlns:v xmlns="http://www.w3.org/1999/xhtml">

这是兼容的用法,

xmlns:v一不能少,否则。。。
样式表中加入这一句话:
v":*{behavior:url(#default#VML);display:inline-block;}
Arcsize为半径
Strokeweight为边框线宽度
Strokecolor为边框线的颜色

实例演示:(请在IE系列浏览器下查看本实例)

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:v xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>VML画平滑圆角框</title>
<style>
v\:*{behavior:url(#default#VML);display:inline-block;}
body{ background-color:#99FFFF;font-size:12px;}
.circle{
height:130px;
width:300px;
padding-top:8px;
margin:0px auto;
z-index:2;
margin-left:340px;
}
h1{border-bottom:2px red solid;font-size:12px;margin:4px;text-indent:1em;height:20px;}
div{font-size:12px;padding:10px;}
</style>
</head>
<body>
<v:roundrect id="roundbox" class="circle" strokecolor="red" strokeweight="2px" arcsize="0.08">
<h1>VML画平滑圆角</h1>
<div class="t1">
使用IE专用的VML来画平滑圆角框,还可以画出阴影效果。就其图形表现来说,是非常完美的。
</div>
<v:shadow on="t" color="#777" opacity="52428f" offset="1.5pt,1.5pt"/>
</v:roundrect>
</body>
</html>

第五种:利用私有属性绘制圆角(FF3 only)

收录理由:平滑无锯齿

图五

特点:

  1. 不用任何图形。
  2. 兼容性:只能在FF3中使用,其它浏览器不受支持。
  3. 圆角半径随意调整
  4. 重用性强:多个圆角任意调用,只需要样式表设置就可以。
  5. 圆角颜色随意设置。
  6. 结构无冗余。
  7. 圆角平滑无锯齿。

缺点:

  1. 除了兼容性 有问题外,其它方面的表现都不错,这种方式应该是最完美的方式,可惜目前只有FF3能支持这个属性,以后CSS3后会支持这个属性,不过这不知道要等到多少年以后。
  2. 同第五种圆角一样,在处理圆弧内的图片背景时显得有些有心无力。

实现原理:

使用FF3专用的私有属性来画出圆角。
只用两种属性就能体现圆滑的圆角框
-moz-border-radius:10px;/*圆角半径*/
Border:5px red solid;/*边框大小*/

实例演示:(请在FF3浏览器下观看,其它浏览器不支持)

代码如下:

<!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/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>FF3下的圆角框</title>
<style type="text/css">
body{background:#CCCCCC;}
.round{
-moz-border-radius:20px;/*半径*/
border:4px solid #333;/*边框宽度*/
margin:50px auto;width:30%;height:150px;font-size:12px;
}
h1{border-bottom:4px #333 solid;font-size:12px;width:100%;padding:5px 0;text-indent:1em;}
.context{font-size:12px;padding:10px;}
</style>
</head>
<body>
<div class="round">
<h1>FF3私有属性画的圆角框</h1>
<div class="context">
<p>FF3下的圆角框两个属性就可以解决:</p>
<p>-moz-border-radius:半径</p>
<p>border:边框 </p>
</div>
</div>
</body>
</html>  

第六种:无图片脚本圆角框(js半完美解决方案)

这种方案目前应该是比较完美的方案了。

图六

特点:

  1. 不用任何图形。
  2. 兼容性:通杀所有浏览器
  3. 圆角半径随意调整
  4. 重用性强:多个圆角任意调用。
  5. 颜色随意设置,并且可以使用复杂的图片做为背景,表现丰富。
  6. 结构无冗余,只需要在容器上定义一个class或ID就可以将这个div变成圆角。
  7. 圆角平滑。

缺点:

  1. 客户端禁用JS时就无圆角,不过在目前情势下,这种情况应该不会成为太大的问题。

实例演示:http://www.curvycorners.net/examples.php (有三个演示例子)

结语:

目前的css 因 为不能为一个容器中定义多张背景图片,造成了为了这种圆角效果而加入冗余标签。听说CSS3会引入这一属性,可能到哪时,就是圆角框统一的时候了。另外也 听说在CSS3中有意向加入像FF3私有属性(-moz-border-radius)的方法,这也可以完美地解决这个问题。但在目前的情势下,可能也只 有用上面的这些方法来过渡了,强烈期待CSS3的到来。

总而言之:要实现绝对的完美圆角框在目前的形势下基本上是不可能的,所以取名为“半完美解决方案”。

分享到:
评论

相关推荐

    用CSS实现圆角框框

    ##### CSS圆角框基础知识 在网页设计中,为元素添加圆角边框是一种常见的美化手段,它可以让界面看起来更加友好和现代。早期的CSS版本(如CSS2)并不支持直接创建圆角效果,因此开发者通常会借助背景图片或者复杂的...

    css_圆角矩形_CSS

    接下来,我们将深入探讨如何使用CSS创建圆角矩形,以及相关的知识点。 首先,`border-radius`属性是CSS3引入的一个新特性,用于设置元素边框的四个角落的圆角半径。它可以接受一个到四个值,分别对应上、右、下和左...

    div css圆角代码各种圆角表格_圆角边框css圆角

    本篇文章将深入探讨如何使用 `div` 和 `CSS` 实现各种圆角表格和圆角边框。 首先,我们了解 `div` 元素。`div` 是一个通用的容器元素,用于组合网页上的其他元素。通过应用样式,我们可以让 `div` 元素呈现不同的...

    div+css实现圆角导航菜单的效果

    本文将深入探讨如何使用`div+css`来实现具有圆角效果的导航菜单。 首先,`div`是HTML中的一个块级元素,它可以被用作容器,用于组织页面内容。在创建导航菜单时,`div`可以用来包裹整个菜单或者单独的菜单项。例如...

    css 圆角实现例子

    css 圆角实现例子,无图实现CSS圆角

    纯css实现圆角矩形

    在某些情况下,为了实现更复杂的圆角效果,例如不同的圆角大小或带有阴影的圆角,可以使用CSS伪元素如`:before`和`:after`。这些伪元素可以在不改变HTML结构的情况下,为元素添加额外的样式层,使得设计更加灵活且...

    用js实现css3效果的圆角方法

    在CSS3之前,我们通常需要使用图片或者复杂的CSS hack来实现圆角,但这些方法往往效率低下且维护困难。随着CSS3的普及,我们可以直接通过CSS的`border-radius`属性轻松实现圆角效果。然而,有些浏览器可能不支持CSS3...

    纯css半圆角tab标签切换代码

    通过这个项目,开发者不仅可以学习到如何用纯CSS实现Tab标签切换,还能深入了解CSS的布局、样式控制、动态效果以及响应式设计等多个方面。这对于提升网页设计和开发技能,尤其是对于初学者来说,是非常宝贵的学习...

    CSS实现圆角矩形(非图片)

    1. **响应式**:CSS圆角可以轻松适应不同屏幕尺寸,而无需为每个尺寸创建单独的图片资源。 2. **性能**:相比于加载图片,CSS圆角减少了HTTP请求,提高了页面加载速度。 3. **易维护**:更改样式时,只需修改CSS代码...

    css+圆角总结

    一、CSS圆角基础 CSS3引入了`border-radius`属性,它允许我们为元素的四个角设定不同的圆角半径,从而实现圆角效果。基本语法如下: ```css element { border-radius: top-left-radius top-right-radius bottom-...

    css圆角代码_blog.huhunet.com

    在本教程中,我们将重点讨论如何使用CSS实现圆角效果,特别是针对"css圆角代码_blog.huhunet.com"这个主题。 圆角是CSS3中的一项重要特性,它允许我们创建具有平滑边角的元素,而不是传统的直角。这在现代网页设计...

    用css实现圆角效果

    当我们谈论"用CSS实现圆角效果"时,我们指的是如何使用CSS来让元素的边角变得圆润,而不是传统的尖锐90度角。这个功能对于创建现代、友好的用户界面至关重要。 CSS3是CSS的一个重要版本,引入了许多新的特性和功能...

    老外用css实现圆角边框

    老外用css实现圆角边框,纯css,简单易懂,看了就明白

    ie6 7 支持css3 圆角

    描述中提到的是一种解决方案,即使用插件来实现这一目标。这种插件通常是一个JavaScript或HTC(HTML组件)文件,能够模拟CSS3的圆角效果,使得IE6/7等老版本浏览器也能呈现出圆润的边角。在提供的文件列表中,我们...

    用CSS实现无图片圆角效果

    在网页设计中,圆角效果可以为用户界面增添柔和与现代感,但早期的Web设计中,实现圆角通常依赖于图像。随着CSS技术的发展,...现在,你已经具备了用CSS实现无图片圆角效果的知识,可以开始尝试在实际项目中应用了。

    商务企业网站CSS模板56_商务 企业 蓝色 导航 圆角_html网站模板_网页源码移动端前端_H5模板_自适应响应式.rar

    7. **圆角设计**:在CSS3中,可以使用border-radius属性轻松实现元素的圆角效果。这种设计在本模板中可能体现在导航栏、按钮和其他元素上,为界面增添现代感和友好性。 综上所述,这个压缩包提供了全面的商务网站...

    css3兼容圆角

    虽然`css3.htc`提供了一种在IE8上实现圆角边框的解决方案,但它也有一些局限性。首先,它依赖于JavaScript,如果用户禁用了JS,那么这个方法就无法生效。其次,`.htc`文件会增加页面加载时间,影响性能。最后,这种...

    HTML加CSS实现圆角效果

    本示例将详细介绍如何使用纯 CSS 实现一个简单的圆角表格效果。 首先,我们需要理解 CSS 的边框半径属性(border-radius),这是实现圆角效果最直接的方法。`border-radius` 属性允许我们指定元素四个角落的圆角...

Global site tag (gtag.js) - Google Analytics