CSS3中确定背景的定位的新方法

开发 前端
CSS3中新增加了background-clip和background-origin属性,它们主要用来确定背景的定位,background-clip用来判断background是否包含border区域。

本文向大家描述一下CSS3中新增加的background-clip和background-origin属性的用法,它们主要用来确定背景的定位,其中background-clip用来判断background是否包含border区域。而background-origin用来决定background-position计算的参考位置。 

CSS3中新增加的background-clip和background-origin属性简介

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

  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边缘(”00″为padding边缘的左上角,而“100%100%”为右下角)。如果是border值,则意味着相对border边缘。而border值则相对于内容边缘。与background-clip相同,多个值也用逗号分隔。如果background-clip是padding值,background-origin是border值,并且background-position是“topleft”(默认初始值),则背景图左上角将会被截取掉部分。

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

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

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

  但IE又是特例(Itsucks)。

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

  而hasLayout的元素(加上button等)的背景则相当于:background-clip:padding;background-origin:padding;
  这一对CSS3属性已在Mozilla,Safari3和Konqueror等浏览器中实现,不过都是通过其私有属性的表达方式。

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

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

ExampleSourceCode

  1.   -moz-background-clip  
  2.   -webkit-background-clip  
  3.   -khtml-background-clip  
  4.   -moz-background-origin  
  5.   -webkit-background-origin  
  6.   -khtml-background-origin  

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

HTML代码:

ExampleSourceCode

  1.   <button>这里是按钮,是钮不是妞button> 
  2.  

CSS代码:

ExampleSourceCode

  1. button{  
  2. display:inline-block;/*触发hasLayout*/  
  3. height:26px;  
  4. padding:020px;  
  5. cursor:pointer;  
  6. *overflow:visible;/*消除IE按钮左右padding随字数长度变化的BUG*/  
  7.  
  8. border:3pxdouble#95071b;/*用3px双边来模拟设计图中的白线*/  
  9. border-right-color:#650513;  
  10. border-bottom-color:#650513;  
  11.  
  12. background-color:#95071b;  
  13.  
  14. /*设置背景裁切方式和参考线*/  
  15. -moz-background-clip:padding;  
  16. -webkit-background-clip:padding;  
  17. -khtml-background-clip:padding;  
  18.  
  19. -moz-background-origin:padding;  
  20. -webkit-background-origin:padding;  
  21. -khtml-background-origin:padding;  
  22.  
  23. /*向前兼容*/  
  24. background-clip:padding;  
  25. background-origin:padding;  
  26.  
  27. color:#fff;  
  28. font-size:12px;  
  29. line-height:20px;  
  30.  
  31. /*修正IE6下高度问题*/  
  32. _padding-top:2px;  
  33. _line-height:14px;  
  34. }  
  35.  

  不足之处:此效果在Opera下无法实现。当然这只是一种对HTML代码有洁癖的解决方法(限于对background-clip和background-origin属性的学习和理解),当然也可尝试其他方法,也许会使CSS更简洁,至于各种方法的优缺点由您自己衡量。
 

【编辑推荐】

  1. CSS3八大新功能闪亮登场
  2. CSS布局中float和position属性使用技巧
  3. 检测浏览器是否支持CSS3的方法
  4. 揭秘HTML 5和CSS3 Web实现飞跃的踏板
  5. CSS布局中display:inline-block属性用法详解

 

 

责任编辑:佚名 来源: 52css.com
相关推荐

2018-10-07 07:00:59

2022-07-07 10:47:16

IngressKubernetes

2015-08-21 09:14:40

大数据

2019-07-12 13:50:36

物联网大数据安全

2010-06-18 09:48:22

2021-09-27 10:12:42

欺骗防御rMTD网络攻击

2024-01-23 17:33:36

2015-10-09 09:43:28

CSS CSS3

2010-04-01 09:30:57

2023-11-23 15:05:02

玻璃归档存储微软

2021-11-26 10:02:22

扩展业务领导者CIO

2009-07-24 15:29:11

支持CSS3

2016-04-19 10:02:35

2015-10-23 15:49:55

程序员加薪升职

2015-10-26 09:10:38

程序员加薪新方法

2014-05-19 09:25:33

2012-06-19 13:15:58

WANSharePoint

2009-07-21 13:44:11

云计算IT数据中心

2022-09-13 15:17:59

大数据企业

2022-05-26 10:57:51

机器人人工智能
点赞
收藏

51CTO技术栈公众号