使用 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实现任意图片lowpoly动画效果实例
May 11 HTML / CSS
CSS3教程:background-clip和background-origin
Oct 17 HTML / CSS
css3背景图片透明叠加属性cross-fade简介及用法实例
Jan 08 HTML / CSS
使用css3实现超炫的loading加载动画效果
May 07 HTML / CSS
CSS中的字体大小设置属性总结
May 24 HTML / CSS
HTML5中的Article和Section元素认识及使用
Mar 22 HTML / CSS
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
Jul 19 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
Aug 28 HTML / CSS
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
Jan 18 HTML / CSS
Canvas环形饼图与手势控制的实现代码
Nov 08 HTML / CSS
canvas简单连线动画的实现代码
Feb 04 HTML / CSS
能用CSS实现的就不要麻烦JavaScript了
Oct 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
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
基于Python和Scikit-Learn的机器学习探索
2017/10/16 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
python使用正则筛选信用卡
2019/01/27 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
开业庆典邀请函
2014/01/08 职场文书
委托证明的格式
2014/01/10 职场文书
公司董事长岗位职责
2014/06/08 职场文书
音乐节策划方案
2014/06/09 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
四年级学生期末评语
2014/12/26 职场文书
公司聚餐通知
2015/04/22 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
SQL Server删除表中的重复数据
2022/05/25 SQL Server
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL