使用 css3 transform 属性来变换背景图的方法


Posted in HTML / CSS onMay 07, 2019

使用 css3 transform 属性可以轻易的旋转,倾斜,缩放任何元素。目前即使没有任何前缀也可以在绝大部分浏览器上很好的使用。

#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 属性。例子:假如伪类元素使用了一张可重复的图片做背景,那么旋转区域就必须大于父元素,这样才可以在旋转过程中覆盖整个父元素。

使用 css3 transform 属性来变换背景图的方法

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

所有主元素的变换操作都会影响到伪类元素. 假如伪类元素不想要变换操作时,我们就需要撤销这个变换, 例子:当一个父元素旋转了 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);
}

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

总结

以上所述是小编给大家介绍的使用 css3 transform 属性来变换背景图的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

HTML / CSS 相关文章推荐
Css3+Js制作漂亮时钟(附源码)
Apr 24 HTML / CSS
支持IE8的纯css3开发的响应式设计动画菜单教程
Nov 05 HTML / CSS
css3动画效果小结(推荐)
Jul 25 HTML / CSS
CSS3中的display:grid,网格布局介绍
Oct 30 HTML / CSS
教你如何一步一步用Canvas写一个贪吃蛇
Oct 22 HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
Jun 11 HTML / CSS
canvas使用注意点总结
Jul 19 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
Apr 26 HTML / CSS
手机端用rem+scss做适配的详解
Nov 15 HTML / CSS
CSS3常见动画的实现方式
Apr 14 HTML / CSS
详解CSS玩转图片Base64编码
May 25 HTML / CSS
HTML静态页面获取url参数和UserAgent的实现
Aug 05 HTML / CSS
详解CSS3 弹性布局快速入门
Jun 06 #HTML / CSS
通过css3动画和opacity透明度实现呼吸灯效果
Aug 09 #HTML / CSS
CSS3 translate导致字体模糊的实例代码
Aug 30 #HTML / CSS
CSS3实现类似翻书效果的过渡动画的示例代码
Sep 06 #HTML / CSS
CSS3动画之利用requestAnimationFrame触发重新播放功能
Sep 11 #HTML / CSS
css3 响应式媒体查询的示例代码
Sep 25 #HTML / CSS
移动端rem布局的两种实现方法
Jan 03 #HTML / CSS
You might like
PHP生成HTML静态页面实例代码
2008/08/31 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
百度留言本js 大家可以参考下
2009/10/13 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
解决VUE双向绑定失效的问题
2019/10/29 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
pandas对指定列进行填充的方法
2018/04/11 Python
pandas带有重复索引操作方法
2018/06/08 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
Keras搭建自编码器操作
2020/07/03 Python
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
任课老师推荐信范文
2013/11/24 职场文书
财经学院自荐信范文
2014/02/02 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
入党自荐书范文
2015/03/05 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
Python 制作自动化翻译工具
2021/04/25 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android