css3 border-img的疑惑

  1. 列表项目

这是w3cschools的例子,30指切割背景图片的四条线距离上右下左的距离

div
{
border:15px solid transparent;
width:300px;
padding:10px 20px;
}

#round
{
-moz-border-image:url(/i/border.png) 80 80 round;    /* Old Firefox */
-webkit-border-image:url(/i/border.png) 30 30 round;    /* Safari and Chrome */
-o-border-image:url(/i/border.png) 30 30 round;        /* Opera */
border-image:url(/i/border.png) 30 30 round;
}

但当我设置更大的slice距离的时候结果很奇怪,求解释, 根据图二图片原始大小为(273)(27*3),
所以需要设置slice距离为27吗,谢谢

div
{
border:15px solid transparent;
width:300px;
padding:10px 20px;
}

#round
{
-moz-border-image:url(/i/border.png) 80 80 round;    /* Old Firefox */
-webkit-border-image:url(/i/border.png) 30 30 round;    /* Safari and Chrome */
-o-border-image:url(/i/border.png) 30 30 round;        /* Opera */
border-image:url(/i/border.png) 50 30 round;
}


clipboard.png

clipboard.png

阅读 2.3k
1 个回答

border-image绘制原理简述
我是这样理解的:共存在两个九宫格,一个是边框图片,还有一个就是边框本身,九个方位关系一一对应。边框本身的特性让其变成了一个九宫格,四条边框交错,加上其围住的区域,正好形成一个九宫格。边框图片则是通过图片剪裁实现了九宫格。这是理解绘制原理的基础。

1、调用边框图片
border-image的url属性,通过相对或绝对路径链接图片。

2、边框图片的剪裁
border-image的数值参数剪裁边框图片,形成九宫格。

3、剪裁图片填充边框
边框图片被切割成9部分,以一一对应的关系放到div边框的九宫格中,然后再压缩(或拉伸)至边框(border-width或border-image-width)的宽度大小。

4、执行重复属性
被填充至边框九宫格四个角落的的边框图片是不执行重复属性的。上下的九宫格执行水平方向的重复属性(拉伸或平铺),左右的格子执行垂直方向的重复属性,而中间的那个格子则水平重复和垂直方向的重复都要执行。

5、完成绘制,实现效果

http://www.zhangxinxu.com/wor...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题