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美化表单控件全集
Jun 29 HTML / CSS
让IE可以变相支持CSS3选择器
Jan 21 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
Dec 03 HTML / CSS
详解CSS3选择器:nth-child和:nth-of-type之间的差异
Sep 18 HTML / CSS
CSS3实现时间轴特效
Nov 02 HTML / CSS
详解HTML5中的标签
Jun 19 HTML / CSS
使用HTML5技术开发一个属于自己的超酷颜色选择器
Sep 22 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
Mar 20 HTML / CSS
Html5 canvas画图白板踩坑
Jun 01 HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
Sep 15 HTML / CSS
CSS filter 有什么神奇用途
May 25 HTML / CSS
CSS实现两列布局的N种方法
Aug 02 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
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
Javascript 继承机制实例
2009/08/12 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
js给selected添加options的方法
2015/05/06 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
解析Python中的异常处理
2015/04/28 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
Python实现word2Vec model过程解析
2019/12/16 Python
python with (as)语句实例详解
2020/02/04 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
使用K.function()调试keras操作
2020/06/17 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
服务员自我评价
2014/01/25 职场文书
公证委托书标准格式
2014/09/11 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
python小程序之飘落的银杏
2021/04/17 Python
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL
JVM之方法返回地址详解
2022/02/28 Java/Android