使用 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实现背景颜色渐变让图片不再是唯一的实现方式
Dec 18 HTML / CSS
IE支持HTML5的解决方法
Oct 20 HTML / CSS
Javascript 高级手势使用介绍
Apr 21 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
May 11 HTML / CSS
HTML5新增的8类INPUT输入类型介绍
Jul 06 HTML / CSS
Html5 audio标签样式的修改
Jan 28 HTML / CSS
使用phonegap查找联系人的实现方法
Mar 31 HTML / CSS
用canvas做一个DVD待机动画的实现代码
Apr 12 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
Jun 09 HTML / CSS
html5启动原生APP总结
Jul 03 HTML / CSS
AmazeUI图片轮播效果的示例代码
Aug 20 HTML / CSS
CSS中calc(100%-100px)不加空格不生效
May 07 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
jquery随机展示头像代码
2011/12/21 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
Bootstrap插件全集
2016/07/18 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
用Django写天气预报查询网站
2018/10/21 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
python与mysql数据库交互的实现
2020/01/06 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
Linux如何压缩可执行文件
2013/10/21 面试题
优秀教师获奖感言
2014/01/31 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
法人代表授权委托书
2014/04/08 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
大学生创业事迹材料
2014/12/30 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python