使用 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发光搜索表单分享
Apr 11 HTML / CSS
可以随进度显示不同颜色的css3进度条分享
Apr 11 HTML / CSS
CSS改变网页中鼠标选中文字背景颜色例子
Apr 23 HTML / CSS
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
Sep 02 HTML / CSS
CSS3点击按钮实现背景渐变动画效果
Oct 19 HTML / CSS
CSS3为背景图设置遮罩并解决遮罩样式继承问题
Jun 22 HTML / CSS
CSS3实现彩色进度条动画的示例
Oct 29 HTML / CSS
让IE支持HTML5的方法
Dec 11 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
Jul 22 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
Jul 25 HTML / CSS
详解通过HTML5 Canvas实现图片的平移及旋转变化的方法
Mar 22 HTML / CSS
AmazeUI 单选框和多选框的实现示例
Aug 18 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
基于python3实现倒叙字符串
2020/02/18 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
python之随机数函数的实现示例
2020/12/30 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
连锁经营管理专业大学生求职信
2013/10/30 职场文书
计算机毕业生求职信
2014/06/10 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL