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 相关文章推荐
深入理解css属性的选择对动画性能的影响
Apr 20 HTML / CSS
CSS3 3D旋转rotate效果实例介绍
May 03 HTML / CSS
详解CSS3:overflow属性
Nov 17 HTML / CSS
HTML5 本地存储 LocalStorage详解
Jun 24 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
Jan 02 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
Jan 06 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
Jul 02 HTML / CSS
深入浅析HTML5中的article和section的区别
May 15 HTML / CSS
VSCode 自定义html5模板的实现
Dec 05 HTML / CSS
AmazeUI底部导航栏与分享按钮的示例代码
Aug 18 HTML / CSS
聊聊CSS粘性定位sticky案例解析
Jun 01 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
Python删除n行后的其他行方法
2019/01/28 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
建筑工程实习自我鉴定
2013/09/19 职场文书
求职简历中个人的自我评价
2013/12/01 职场文书
施工安全汇报材料
2014/08/17 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
Python自动化测试PO模型封装过程详解
2021/06/22 Python