当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS3教程:background-clip和background-origin

CSS样式表
用css实现图片垂直居中的使用技巧
CSS List Grid Layout 图片垂直居中
IE6网页神奇BUG
Marquee高级用法实例代码
web标准知识——从p开始,循序渐进
web标准知识——用途相似的标签
html链接与文本标签们
当标题不能显示完整的解决方法
详解链接的rel与target区别
使css兼容IE8的小技巧
CSS 首字母大写代码
CSSvista可同时在IE和Fifrefox调试的CSS编辑提供下载
css font缩写总结附实例
css下margin、padding、border、background和font缩写示例
用CSS来控制图片显示大小的代码
css下划线颜色一句话代码
css常见问题解决方法小结
relative absolute无法冲破的等级问题解决
div总是被select遮挡的解决方法
CSS文字截取功能实现代码

CSS样式表 中的 CSS3教程:background-clip和background-origin


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-09   浏览: 148 ::
收藏到网摘: n/a

原文:http://www.planabc.net/2008/04/14/background-clip_background-origin/

background-clip 和 background-origin 是 CSS3 中新加的 background module 属性,用来确定背景的定位。

background-clip 用来判断 background 是否包含 border 区域。而 background-origin 用来决定 background-position 计算的参考位置。

语法为:

  • background-clip: [border | padding] [, [border | padding]]*
  • background-origin: [border | padding | content] [, [border | padding | content]]*

对于 background-clip
如果是 padding 值,则 background 忽略 padding边缘,border 是透明的。如果是 border 值,则background 包括 border 区域。如果 background-image 图片有多个,对应的 background-clip 值之间用逗号分隔。

对于 background-origin
如果是 padding 值,则 position 相对于 padding 边缘("0 0" 为 padding 边缘的左上角,而 "100% 100%" 为右下角)。如果是 border 值,则意味着相对 border 边缘。而 border 值则相对于内容边缘。与 background-clip 相同,多个值也用逗号分隔。如果 background-clip 是 padding 值,background-origin 是 border 值,并且 background-position 是 "top left"(默认初始值),则背景图左上角将会被截取掉部分。

这两个属性仅从 CSS3 才出现,在未使用该属性 background module 中的默认表现又如何呢?

background-clip 默认类似于 background-clip:border。
background-origin 默认类似于 background-origin:padding。

但 IE 又是特例 (It sucks)。

在 IE6 、IE7 中,一般元素(button 等除外)的背景相当于:background-clip:border; background-origin:border;
而 hasLayout 的元素(加上 button 等)的背景则相当于:background-clip:padding; background-origin:padding;

这一对 CSS3 属性已在 Mozilla, Safari 3 和 Konqueror 等浏览器中实现,不过都是通过其私有属性的表达方式。

引用:

基本非 IE 的浏览器的私有属性一般都会以 -xxx- 这样开始,-o-就是以 Presto 为引擎的 Opera 私有的、-icab- 是 iCab 私有的,-khtml- 是以 KHTML 为引擎的浏览器(如 Konqueror Safari)、-moz- 就是以 Mozilla 的 Gecko 为引擎的浏览器(如Firefox,Mozilla)、-webkit- 就是以 Webkit 渲染引擎(是 KHTML 的衍生产品)的浏览器(如 Safari、Swift)。

即支持的私有属性分别为:

下面举个运用 background-origin 属性的简单例子,效果如下图:

运行代码框

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

HTML 部分:

<button>这里是按钮,是钮不是妞</button>

CSS 部分(详细见注释):

button {
    display:inline-block;/*触发hasLayout*/
    height:26px;
    padding:0 20px;
    cursor:pointer;
    *overflow:visible;/*消除IE按钮左右padding随字数长度变化的BUG*/
   
    border:3px double #95071b;/*用3px 双边来模拟设计图中的白线*/
    border-right-color:#650513;
    border-bottom-color:#650513;
   
    background-color:#95071b;
   
    /*设置背景裁切方式和参考线*/
    -moz-background-clip:padding;
    -webkit-background-clip:padding;
    -khtml-background-clip:padding;
   
    -moz-background-origin:padding;
    -webkit-background-origin:padding;
    -khtml-background-origin:padding;
   
    /*向前兼容*/
    background-clip:padding;
    background-origin:padding;
   
    color:#fff;
    font-size:12px;
    line-height:20px;
   
    /*修正IE6下高度问题*/
    _padding-top:2px;
    _line-height:14px;
}

不足之处:此效果在 Opera 下无法实现。

当然这只是一种对 HTML 代码有洁癖的解决方法(限于对 background-clip 和 background-origin 属性的学习和理解),当然也可尝试其他方法,也许会使 CSS 更简洁,至于各种方法的优缺点自己衡量。

扩展阅读:
《Background and Border》

点击这里返回 网页制作 栏目