如何使用 css3 transform 属性来变换背景图?

本文和大家分享的主要是使用 css3 transform 属性来变换背景图相关内容,一起来看看吧,希望对大家学习css3有所帮助。

使用 css3 transform 属性可以轻易的旋转,倾斜,缩放任何元素。目前即使没有任何前缀也可以在绝大部分浏览器上很好的使用 。 如果你要在黑莓浏览器或者 UC 浏览器使用这个属性, 你需要加 -webkit- 前缀。

#myelement {

-webkit-transform: rotate(30deg);

transform: rotate(30deg);

}

这个听起来很赞。然而,这个属性旋转了整个元素,包括他的内容、边框、背景图。如果你只是想旋转它的背景图而不选旋转内容的话,应该怎么做呢?或者你只想旋转内容,而不旋转背景图,这个又该怎么做呢?

目前 W3C 没有关于如何旋转背景图的提案。我觉得这个是非常常见使用场景,我深信最终也会出来相相关提案,但这对当前就想要实现这个效果的开发者没有什么意义。

幸运的是,我们找到一个解决方式。这个方式本质上,是将背景图应用到某个元素的 before或者after 这种伪类元素上而不是应用到元素本身。然后在伪类元素独立的使用 transform 属性.

仅仅变换背景

这个元素可以使用任何样式,但一定要设置 position 属性,因为其伪类元素会基于它来定位。如果不想背景撑到元素外,那就要设置 overflow: hidden .

#myelement {

position: relative;

overflow: hidden;

}

现在我们可以创建一个绝对定位的伪类元素来实现变换背景. 为了确保他会低于元素内容显示,需要设置 z-index: -1 .

#myelement:before {

content: "";

position: absolute;

width: 200%;

height: 200%;

top: -50%;

left: -50%;

z-index: -1;

background: url(background.png) 0 0 repeat;

-webkit-transform: rotate(30deg);

transform: rotate(30deg);

}

需要注意的是,在变换的过程中,你需要去调整伪类元素的 width height position 属性. 例子:假如伪类元素使用了一张可重复的图片做背景, 那么旋转区域就必须大于父元素,这样才可以在旋转过程中覆盖整个父元素.

在变换的元素上实现固定背景

所有主元素的变换操作都会影响到伪类元素. 假如伪类元素不想要变换操作时,我们就需要撤销这个变换, 例子:当一个父元素旋转了 30 度,那么伪类元素需要相反方向旋转 30 度,来使伪类元素回退到固定位置.

#myelement {

position: relative;

overflow: hidden;

-webkit-transform: rotate(30deg);

transform: rotate(30deg);

}

#myelement:before {

content: "";

position: absolute;

width: 200%;

height: 200%;

top: -50%;

left: -50%;

z-index: -1;

background: url(background.png) 0 0 repeat;

-webkit-transform: rotate(-30deg);

transform: rotate(-30deg);

}

再次强调,你需要对伪类元素的宽高及定位属性进行调整来确保它可以完全覆盖主元素.

大部分主流浏览器可以实现这个效果, 包括 Edge, 最低支持到 IE9. IE8 只会显示背景但是不会有任何变换效果.

来源:众成翻译

时间: 2024-10-14 00:23:37

如何使用 css3 transform 属性来变换背景图?的相关文章

CSS3 transform属性

在介绍有关transform相关的知识之前,先来讲一下transform-origin的用法以及关于<angle>角度的几种取值单位.另外,在使用时,为了兼容各个浏览器,可加上浏览器的私有前缀[-moz- -webkit -ms-]. transform-origin 设置对象变换的原点,通常和rotate旋转.scale缩放.skew斜切等一起使用,IE9+ 2D情况下:默认值 50% 50%,即center center 3D情况下:默认值 50% 50% 0 取值介绍: X轴:left|

CSS3 Transform属性详解

今天我们一起来学习有关于CSS3制作动画的几个属性:变形(transform).转换(transition)和动画(animation)等更高级的CSS3技术.本文主要介绍的是这三个属性之中的第一个──变形transform. Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix.下面我们一起来看看CSS3中transform的旋转rotate.扭曲skew.缩

CSS3 transform属性 附上demo

参考http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/ 用法 实例 刚开始使用这个属性是因为工作的需要,制作H5动画页面,通过查具体用法也可以制作出各种小动画,比如平移,缩放,翻动,刚开始看到这些动画都很惊奇,居然短短写一小段东西就就可以完成js写一堆代码的动画了,然后看到别人家的CSS3动画,再次被教育做人了. 下面说说怎么使用 transform 定义 :t

【CSS3 transform属性和过渡属性详解】

CSS3transform属性详解 transform字面上就是变形,改变的意思. 在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix. 2D Transform 方法 translate() 根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动. rotate() 在一个给定度数顺时针旋转的元素.负值是允许的,这样是元素逆时针旋转. scale() 该元素增加或减少的大小,取决于宽度(X轴)和

CSS3 transform 属性

div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* Firefox */ -webkit-transform:rotate(7deg); /* Safari 和 Chrome */ -o-transform:rotate(7deg); /* Opera */ } 该属性允许我们对元素进行旋转.缩放.移动或倾斜. CSS3 transform是什么?

认识CSS3 transform 属性

定义和属性 transform 属性向元素应用 2D 或 3D 转换.该属性允许我们对元素进行旋转.缩放.移动或倾斜. 注:opela不支持3D转换    IE9以上浏览器支持支持 translate3d(x,y,z)  3d平移变化       x y  z  是指平移的像素 rotate3d(x,y,z,angle)    3d 旋转    X Y Z取值是在0-1之间  angle=45deg  实际旋转的角度 scale3d(x,y,z,) 3d缩放     x y z取值也是0-1之间

css3 transform属性多值的顺序问题

对于transform属性的多值的顺序问题,我自己就被困扰过.后来知道了跟顺序有关,但是不知道为什么.我想应该很多人跟我以前一样,知其然不知其所以然.如果不知道的,也许这篇文章会对大家有所帮助. 先来看一个例子. html代码: <div id="red1"></div> <div id="red2"></div> css代码: body { margin: 0; } div { width:100px; height

CSS3 transform 属性详解(skew, rotate, translate, scale)

写这篇文章是因为在一个前端QQ群里,网友 "小豆豆" (应他要求要出现他的网名......) ,问skew的角度怎么算,因为他看了很多文章还是不能理解skew的原理.于是,我觉得有必要写个博文,帮助那些不懂的人,让他们看了此文就懂. 进入正题: 先说明下,电脑屏幕的XY轴跟我们平时所说的直角坐标系是不一样的.如下图: 图上的盒子就是代表我们的电脑屏幕,原点就是屏幕的左上角,竖直向下为X轴正方向,水平向右为Y轴正方向. 1.倾斜skew 先看图 每个图下方都有skew的参数.粗的红色的线

CSS3 transform 属性 旋转 div 元素

div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* Firefox */ -webkit-transform:rotate(7deg); /* Safari 和 Chrome */ -o-transform:rotate(7deg); /* Opera */ } 下面为实例 <!DOCTYPE html PUBLIC "-//W3C//DTD