`
yiminghe
  • 浏览: 1436799 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

圆形绘制

    博客分类:
  • ui
阅读更多

根据 css3 中的 border-radius 属性,将 border-radius 的值设置为和元素的高宽一样,那么这个元素就渲染成了圆形。目前 ie9 以及各大标准浏览器都支持,但是用户份额最多的 ie6,7,8 并不支持,不过 ie6,7,8 支持微软提出的 vml 标准 ( wiki , msdn ),而从 ie9 开始放弃了 vml,转而支持 w3c 推荐的同类型的矢量语言 svg


demo :

 

那么对于 ie6,7,8 就可以使用 vml 代替 css3 对应属性来绘制圆形:


demo : using vml to draw round


实现注意:


1.vml 支持从 ie6 到 ie8,越来越弱,问题越来越多,性能越来越差,特别是 ie8 在兼容性上和前两个版本有些区别


2.roundrect 的 arcsize 对应 css 的 border-radius 属性,不需要边框可设置 stroked(规范为stroke,规范与实现不符) 为 false ,但是当设置透明度时边框会有黑色线条残余( ie9 的兼容模式已修复)。透明度要设置 vml 元素的style,而不是设置 opacity 属性(规范与实现不符)。


3.添加 vml 元素后注意 将容器元素的背景色设置为透明,防止干扰绘制的圆形区域。


4.容器元素要设置定位,并且绝对定位的 vml 元素的 z-index 要设置为 -1,使得 vml 元素位于容器其他子元素的下方,达到等同于设置元素背景色的效果。

 

update : 发现一个更复杂全面的库 DD_roundies


重属巧合~~


PS :  渲染延迟


最后一个添加到dom的 vml 元素总是会被延迟渲染,所以如果要求所有vml元素一起渲染显示的话,需要在最后一个vml元素后再次添加一个元素并设置为隐藏。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics