rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » html/css

web前端开发中的圆角解决方案(css,javascript)

一、圆角解决方案汇总

1.纯css圆角(参见 )

(1)用很多1像素高的div容器,利用背景色和边框色来模拟出圆角框的轮廓线;

(2)利用•字符的特性

2.图片圆角

一图片\两图片\三图片\四图片\一图片

3.使用浏览器私有圆角属性如:

    -webkit-border-radius: 20px;

  -moz-border-radius: 20px;

4.Browser Drawing

IE下使用vml;firefox,safira,chrome浏览器使用canvas

web前端开发中的圆角解决方案(css,javascript)

二、相关知识: Browser Drawing


1. Canvas

              canvas(https://developer.mozilla.org/cn/Canvas_tutorial). <canvas>是一个新的HTML元素,这个元素可以被Script语言(通常是JavaScript)用来绘制图形。例如可以用它来画图、合成图象、或做简单的(和不那么简单的)动画。 (可参阅Mozila官方文档)

       <canvas id="tutorial" width="150" height="150"></canvas>

<canvas> 初始化是空白的,要在上面用脚本画图首先需要其渲染上下文(rendering context),它可以通过 canvas 元素对象的 getContext 方法来获取,同时得到的还有一些画图用的函数。getContext() 接受一个用于描述其类型的值作为参数。

var canvas = document.getElementById('tutorial');

var ctx = canvas.getContext('2d');

<script type="application/x-javascript">

    function draw() {

      var canvas = document.getElementById("canvas");

      if (canvas.getContext) {

        var ctx = canvas.getContext("2d");

        ctx.fillStyle = "rgb(200,0,0)";

        ctx.fillRect (10, 10, 55, 50);

        ctx.fillStyle = "rgba(0, 0, 200, 0.5)";

        ctx.fillRect (30, 30, 55, 50);

      }

    }

  </script>

 </head>

 <body onload="draw();">

   <canvas id="canvas" width="150" height="150">

</canvas>

     
2. Vml
(Vector Markup Language

              Vml(http://www.itlearner.com/code/vml/index.html) 是The Vector Markup Language(矢量可标记语言)的缩写。VML用于将图形数据矢量化的标记语言。这是一种基于 XML 语法的语言,由 AutoDesk 、 Macromedia 和 Microsoft 和 HP 公司向 W3C提出的方案。(可参阅百科此条”VML”)

              请参阅vml教程Vml(http://www.itlearner.com/code/vml/index.html)


3. Canvas in IE
(使用VML模拟)

              在IE里面使用canvas的js插件

excanvas_r3(http://code.google.com/p/explorercanvas/  )

Canvas in IE(http://me.eae.net/archive/2005/12/29/canvas-in-ie/  )


4. SVG
(SVG(Scalable Vector Graphics

              W3C标准,Firefox, Opera 支持,在IE下需要插件(Adobe SVG Viewer)。实现同样的功能,svg和canvas的对比:

var rect = document.createElementNS(SVG_NS, "rect");

rect.setAttribute("x", "5");

rect.setAttribute("y", "5");

rect.setAttribute("width", "20");

rect.setAttribute("height", "20");

rect.setAttribute("fill", "red");

parent.appendChild(rect);

Canvas

with (ctx)

{

fillStyle = "red";

fillRect(5, 5, 20, 20);

 }

 
web前端开发中的圆角解决方案(css,javascript)

三、成熟的javascript frame圆角方案

*     Corners大全 http://www.open-open.com/ajax/Corners.htm

*     js DD_roundies

*     js 为图片增加corner ---- cvi_corners_lib

*     js 圆角框curvycorners-2.0.3

*     js 圆角框用vml和Canvas结合起来的

四、最优圆角方案

       首先对js圆角代码进行封装(可以借助上面提到的成熟的Js corner框架)

       最佳div圆角调用方式:()

       .corner{

       -webkit-border-radius: 20px;

       -moz-border-radius: 20px;

       }

       <div class=“box corner”></div>

最佳图片园角调用方式:

       <img src=“” class=“img-corner” />

顶一下
(0)
踩一下
(0)