使用 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动画过渡实现鼠标跟随导航效果
Feb 08 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
Apr 04 HTML / CSS
CSS3制作轮播图的一种方法
Nov 11 HTML / CSS
CSS3动画和HTML5新特性详解
Aug 31 HTML / CSS
HTML5标签小集
Aug 02 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
Jan 31 HTML / CSS
HTML5 Canvas的事件处理介绍
Apr 24 HTML / CSS
HTML5中indexedDB 数据库的使用实例
May 11 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
Jul 16 HTML / CSS
AmazeUI 列表的实现示例
Aug 17 HTML / CSS
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
Mar 31 HTML / CSS
bootstrapv4轮播图去除两侧阴影及线框的方法
Feb 15 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之require/include顺序 推荐
2011/01/02 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
JS Input里添加小图标的两种方法
2017/11/11 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
详解vue中移动端自适应方案
2019/05/05 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python实战之制作天气查询软件
2019/05/14 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
基于python实现可视化生成二维码工具
2020/07/08 Python
openCV提取图像中的矩形区域
2020/07/21 Python
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
大学生年度自我鉴定
2013/10/31 职场文书
办公文员的工作岗位职责
2013/11/12 职场文书
上课不认真检讨书
2014/09/17 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
导游欢送词
2015/01/31 职场文书
学校捐书活动总结
2015/05/08 职场文书
可怜妈妈观后感
2015/06/09 职场文书