如何给背景图像使用CSS3变形

CSS3的transform属性可以缩放、倾斜和旋转任何元素。在没有任何浏览器前缀的前提下,这个属性已经被所有的现代浏览器所支持。如果想支持黑莓浏览器和安卓版的UC浏览器,你就需要添加-webkit-前缀了。

#myelement{
  -webkit-transform: rotate(30deg);
  transform: rotate(30deg);

}

完美!然而,当你使用上述代码时,你会发现元素的内容、边框、背景图片都会发生旋转。那么,怎样才能只旋转背景图片呢?怎样才能只让元素本身旋转,而让其背景图片位置固定呢?

目前,W3C还没有专门变形背景图片的属性。我相信在不久的将来肯定会出现这个非常实用的属性。但是对于现在想实现相同效果的开发者们来说毫无帮助。

万幸,这里有个解决方法。其实,就是一个给父级容器元素before伪元素或者after伪元素添加背景图片的hack。这时,我们就可以独立控制带有背景图片伪元素的变形。

只变形背景

为了控制伪元素在其父级容器内定位,其父级容器元素必须设置相对定位(position:relative)。为了防止背景溢出,你也需要给容器元素设置overflow:hidden;

#myelement{
  position: relative;
  overflow: hidden;

}

现在,我们来创建一个具有可以变形背景的绝对定位的伪元素。将伪元素的层级设置为-1(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);

}

注意,你需要调整伪元素的宽度、高度和定位。比如,当你使用重复图片做背景时,旋转的区域必须比其所在容器面积大,以此保证全部覆盖容器背景。

固定一个变形元素的背景

父级容器上的所有变形样式都会继承到其伪元素。因此,我们需要撤销其伪元素的变形样式。例如,如果容器旋转30deg,其伪元素背景必须旋转-30deg,这样背景才能固定到某个位置。

#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);

}

当然,你仍然需要调整伪元素背景的尺寸和位置,使其完全覆盖父级容器。

下面是CodePen上的相关实例:

https://codepen.io/SitePoint/pen/Ngpvwx

这种方法支持所有标准浏览器、edge、IE9~IE11。在IE8中不会有任何变形样式,但是背景图仍然显示。

IE6和IE7不支持伪元素,因此背景图不会显示。然而,为了支持那些古老的浏览器,你可以直接给容器设置背景图而不是用先进的选择器或者一定条件的CSS将容器的背景设置为空。

大量创造性的应用都用到了CSS3的变形属性。您有相关分享吗?

本文为翻译作品,原文来自sitepoint,作者Craig Buckler。原文地址:https://www.sitepoint.com/css3-transform-background-image/

查看公众号文章

欢迎关注个人公众号,查看更多好文。

时间: 2024-09-23 16:36:47

如何给背景图像使用CSS3变形的相关文章

CSS3变形属性:CSS3 3D Transform

文章简介:作为一个网页设计师,你可能熟悉在二维空间工作,但是在三维空间上工作并不太熟悉.使用二维变形我们能够改变元素在水平和垂直轴线,然而还有一个轴沿着它,我们可以改变元素.使用三维变形,我们可以改变元素在Z轴位置. 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换的功能相当类似.CSS3中的3D变换主要包括以下几种功能函数: 3D位移:CSS3中的3D位移主要包括translateZ()和translate3d()两个功能函数: 3D旋转:CSS3中的3

css文本输入框:CSS给文本输入框添加背景图像

  <title>给文本输入框添加背景 - www.cxybl.com</title> <STYLE TYPE="TEXT/CSS"> .bg { background-image:url(bgdemo2.jpg); /*如果想添加你的网站Logo,可将这两行注释启用 background-repeat: no-repeat; background-position: center center; */ } </STYLE> </h

css如何在垂直方向重复背景图像 css实例

css如何在垂直方向重复背景图像 css实例

css如何使用像素来定位背景图像 css实例

css如何使用像素来定位背景图像 css实例

CSS的背景图像属性background

CSS的背景属性"background"提供了众多属性值,如颜色.图像.定位等,为网页背景图像的定义提供了极大的便利.看看background提供的属性值: background : background-color background-image background-repeat background-attachment background-position 从属性值的名字就可以很明白的看出来,分别是:颜色.图像.铺排.滚动.定位,其中background-repeat.ba

HTML表格背景图像属性BACKGROUND

  为表格设置背景图像,可以使用任何的GIF或者JPEG图片文件. 基本语法 <TABLEBACKGROUND=FILE_name> 语法解释 定义背景图象时,写下图片文件的完整路径或者相对路径. 文件范例:10-8.htm 设定表格的背景图像. 01<!----------------------------------> 02<!--文件范例:10-8.htm--> 03<!--文件说明:设定表格的背景图像--> 04<!-------------

CSS给文本输入框添加背景图像

  title给文本输入框添加背景 - www.cxybl.com/title STYLE TYPE=TEXT/CSS .bg { background-image:url(bgdemo2.jpg); /*如果想添加你的网站Logo,可将这两行注释启用 background-repeat: no-repeat; background-position: center center; */ } /STYLE /head b   <title>给文本输入框添加背景 - www.cxybl.com&

CSS控制背景图像平铺实现边框阴影效果

一款用CSS控制背景图像平铺,从而实现区域边框阴影的效果,虽然用到了图片,但可贵之处是本代码不管你需要阴影的区域是多大,它都能自动适应,因些还是很值得收藏一下的,兼容所有的IE浏览器.   复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> &

学习CSS的背景图像属性background

CSS的背景属性"background"提供了众多属性值,如颜色.图像.定位等,为网页背景图像的定义提供了极大的便利.看看background提供的属性值: background : background-color  | background-image  | background-repeat  | background-attachment  | background-position 从属性值的名字就可以很明白的看出来,分别是:颜色.图像.铺排.滚动.定位,其中backgrou