CSS3 transforms应用于背景图像的解决方法


Posted in HTML / CSS onApril 16, 2019

CSS transformations虽然很酷,但还没有应用于背景图像。这篇文章提供了一个很好的解决方法,当您确实想要旋转背景图像时,或者在容器元素旋转时保持背景图像不变。

使用css3转换属性可以缩放、倾斜和旋转任何元素。它在所有没有厂商前缀的现代浏览器中都得到支持。(我已经添加了-webkit-以防您希望支持一些较旧的浏览器。)

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

很棒的东西。但是,这会旋转整个元素-其内容、边框和背景图像。如果你只想旋转背景图像怎么办?或者如果希望在元素旋转时背景保持不变

目前,还没有W3C对背景图像转换的建议。这将是非常有用的,所以我怀疑最终会出现一个,但这对今天想要使用类似效果的开发人员没有帮助。

幸运的是,有一个解决方案。本质上,这是一种将背景图像应用于伪元素之前或之后的黑客行为,而不是父容器。然后可以独立地转换伪元素。

仅转换背景

容器元素可以应用任何样式,但必须将其设置为position:relative,因为我们的伪元素将定位在该元素中。您还应该设置溢出:隐藏,除非您愿意让背景溢出容器之外。

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

注意,您可能需要调整伪元素的宽度、高度和位置。例如,如果使用的是重复图像,则旋转区域必须大于其容器才能完全覆盖背景:

CSS3 transforms应用于背景图像的解决方法

在转换元素上固定背景

修复已转换元素的背景。父容器上的所有转换都应用于伪元素。因此,我们需要撤消该转换,例如,如果容器旋转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和Internet Explorer中都可以恢复到版本9。IE8不会显示任何转换,但仍会显示背景。

总结

以上所述是小编给大家介绍的CSS3 transforms应用于背景图像的解决方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

HTML / CSS 相关文章推荐
CSS3实现简易版的刮刮乐效果
Sep 27 HTML / CSS
CSS改变网页中鼠标选中文字背景颜色例子
Apr 23 HTML / CSS
CSS3中利用animation属性创建雪花飘落特效
May 14 HTML / CSS
实例教程 一款纯css3实现的数字统计游戏
Nov 10 HTML / CSS
关于box-sizing的全面理解
Jul 28 HTML / CSS
CSS3实现同时执行倾斜和旋转的动画效果
Oct 27 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
Nov 17 HTML / CSS
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
Apr 24 HTML / CSS
html5 worker 实例(二) 图片变换效果
Jun 24 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
May 07 HTML / CSS
详解px单位html5响应式方案
Mar 08 HTML / CSS
详解CSS中的特指度和层叠问题
Jul 15 HTML / CSS
CSS3实现王者荣耀匹配人员加载页面的方法
Apr 16 #HTML / CSS
CSS3实现王者匹配时的粒子动画效果
Apr 12 #HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 #HTML / CSS
浅谈CSS3 box-sizing 属性 有趣的盒模型
Apr 02 #HTML / CSS
CSS3 3D酷炫立方体变换动画的实现
Mar 26 #HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 #HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
Jan 23 #HTML / CSS
You might like
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
python九九乘法表的实例
2017/09/26 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
工程专业求职自荐书范文
2014/02/08 职场文书
给老婆的保证书范文
2014/04/28 职场文书
农行心得体会
2014/09/02 职场文书
2014年教务处工作总结
2014/12/03 职场文书
军训后的感想
2015/08/07 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android