使用 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 相关文章推荐
css sprite简单实例
May 23 HTML / CSS
结合CSS3的新特性来总结垂直居中的实现方法
May 30 HTML / CSS
Css3新特性应用之形状总结
Dec 08 HTML / CSS
HTML5地理定位与第三方工具百度地图的应用
Nov 17 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
Sep 01 HTML / CSS
用HTML5制作一个简单的弹力球游戏
May 12 HTML / CSS
深入解析HTML5中的Blob对象的使用
Sep 08 HTML / CSS
字中字效果的实现【html5实例】
May 03 HTML / CSS
Html5新增标签有哪些
Apr 13 HTML / CSS
HTML5 input新增type属性color颜色拾取器的实例代码
Aug 27 HTML / CSS
CSS3实现三角形不断放大效果
Apr 13 HTML / CSS
css中:last-child不生效的解决方法
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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
python抓取网页图片并放到指定文件夹
2014/04/24 Python
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
python版学生管理系统
2018/01/10 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
Django权限控制的使用
2021/01/07 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
《日月潭》教学反思
2014/02/28 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
内乡县衙导游词
2015/02/05 职场文书
实习介绍信范文
2015/05/05 职场文书
活着观后感
2015/06/03 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书