css3的Background新属性

前言

CSS3中出现了几种关于背景图片的新属性:background-origin、background-clip、background-position等.之前大致了解了下,但是background-origin与background-clip的区别尚不清楚。就google了一篇,发现不错,翻译下来吧。

原文连接 : The New Background Position in CSS3

Say Hello to Background-Origin and Background-Clip, CSS3 new features!

ps: 原文在线代码演示已由codepen.io 搬至runjs.cn

background-position

用css给元素设置背景图片的每个人都用过background-position属性,在CSS3之前设置那个位置的值相对于元素的左上角(top,left),例如:

div {background-position: 20px 40px; /* 距左边20px & 距顶部40px */ }

有个问题就是不可能确定相对于其它点的精确位置,例如右下角(bottom, right), 只能以左上角开始。

我们可以写:background-position: right bottom;或者background-position: 70% /* from left */ 80%/* from top */,但不能写出距离右端20px和距离底端20px.

使用新的background-position

为了解决这个问题,CSS3提供了可以定义那个开始的位置和决定原点(0,0)的位置。

工作原理

相对于之前只能赋2个值的情况(相对于left和top的水平和垂直距离),现在用CSS3我们可以指定那个水平和垂直位置的原点,例如right bottom + 值。

background-position: right 20px bottom 40px

Live Example

同时你也能够给一个盒子设置多个背景图片且每个图片的原点不同。

Live Example

background-origin

在CSS2中,当我们给元素添加background-image时,图片是以元素padding的左上角开始。

默认的background-origin位置和设置background-position值为0 left, 0 top一致。我们能够看到background-image以padding开始的。

Live Example

通过background-origin我们能够设置背景图片开始的位置border、padding或content.

- border-box 相对于元素边界的左上角的(0, 0)

- padding-box(default) 相对于元素padding的左上角

- content-box 相对于元素content的左上角。

Live Example

background-clip

在background-origin例子中可以看到,background-origin的背景图片覆盖了元素的border/padding的right/bottom.

使用background-clip可以解决这个问题。使用background-clip我们可以决定裁剪背景图片的位置,值和background-origin的值相同,不过默认是border-box,不裁剪。

Live Example

从background-origin和background-clip的例子中可以看出,大多少情况下可能需要他们一起配合使用。而且使用这些属性可以编写出更nicer的东西,例如:

Live Example

ps:第一次翻译,勉强能看的懂吧。。。

时间: 2024-11-06 00:49:07

css3的Background新属性的相关文章

css的盒模型,及css3的box-sizing新属性

css的盒模型包含了content(元素自身).padding(内边距).border(边框)及margin(外边距). 如图,浏览器控制台elements的computed可以清晰显示元素盒模型,鼠标多动动就明白了:(蓝色区域表示content元素自身,这里是整个窗口的内容) 盒模型有两种:标准模式和怪异模式.在<!DOCTYPE>声明缺失时就会在ie6.ie7.ie8下触发怪异模式 标准模式下:盒子总宽度/高度 = content + padding + border + margin,c

css3的陌生新属性足迹

一.css3边框 1.border-radius border-top-right-radius:右上角的圆角边框 border-top-left-radius:左上角的圆角边框 border-bottom-left-radius:左下角的圆角边框 border-bottom-right-radius:右下角的圆角边框 2.border-image border-image属性分开写: border-image-source:用在边框的图片的路径 border-image-slice:图片边框向

两点补充——CSS3新属性以及弹性布局

CSS3 新属性 一.[ CSS3新增属性前缀 ] 1.-webkit-:chrome/safari 2.-moz-:火狐 3.-mo-:IE 4.-o-: Opera 欧朋 二 .[CSS 长度单位] 1.px:像素.长度固定,表示分辨率占几个像素点: 2.%:表示相对于默认值的百分比: 3.em:长度与元素的字号挂钩. rem:长度与根元素的字号挂钩. 即与html 的 font-size 挂钩,若不设置,默认16px . [ em与rem区别 ] em与当前元素自身的font-size挂钩

CSS3新属性注释及实例

这里把CSS3的新属性单独拿出来讲解一下: border-radius 属性用于创建圆角div{border:2px solid;border-radius:25px;-moz-border-radius:25px; /* Old Firefox */}border-shadow 用于向方框添加阴影div{width:300px;height:100px;background-color:#ff9900;-moz-box-shadow: 10px 10px 5px #888888; /* 老的

CSS3新属性:在网站中使用访客电脑里没有安装的字体

CSS的font-family属性使网页可以使用客户电脑里的字体,从而得到多姿多彩的WEB页面,但当客户端没有你想要使用的字体时怎么办呢?我们总不能让每个访问者都去安装一个字体吧?事实上,这是可以的!不过不是访客主动下载的,而是网站开发者帮访客下载安装的,具体怎么实现的,我们还要从字体文件的格式说起.字体格式类型主要有几个大分类:TrueType.Embedded Open Type .OpenType.WOFF .SVG.  TrueType Windows和Mac系统最常用的字体格式,其最大

自己用过的一些比较有用的css3新属性

css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开始慢慢的去了解并使用css3(还有html5),因为我觉得这是一种趋势,它是一种已经被制定的标准.我并不是专门在做前端的,只是有时不得不自己去写这些东西,有时喜欢研究研究这些,所有以上只是我的个人看法. 1.在之前我想在页面做出一个边框为圆角框,貌似需要写挺多css代码的(可能我没了解到更好的办法),在css3里有一个属性创建圆角是非常容易的 ,设置好角度也可以创建一个圆 border-radius:

css3新属性transform 3D的基础笔记.

研究了下css3中的 transform变换属性中的3D属性效果和看到的一篇好文章了解到了3D的学习;好文章地址:http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/ 下面只是自己能读懂自己写的代码例子: <style> #box{ -webkit-perspective:800px;//定义3D场景大小 -webkit-transform-origin:50%

基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转

基于css3新属性transform,实现3d立方体的旋转 通过原生JS,点击事件,鼠标按下.鼠标抬起和鼠标移动事件,实现3d立方体的拖动旋转,并将旋转角度实时的反应至界面上显示 实现原理:通过获取鼠标点击屏幕时的坐标和鼠标移动时的坐标,来获得鼠标在X轴.Y轴移动的距离,将距离实时赋值给transform属性 从而通过改变transform:rotate属性值来达到3d立方体旋转的效果 HTML代码块: <body> <input type="button" clas

css3的新属性background-clip认识

css3新增的background-clip属性主要是对背景图片进行裁切的作用:background-clip:border-box || padding-box || context-box 分别对边框,内边距,内容区域进行裁切,把多余的部分给裁切掉,有兼容性问题. 拿w3cplus的文章代码过来: /*Firefox3.6-*/ -moz-background-clip: border || padding; /*Webkit*/ -webkit-background-clip: borde