使用 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中用animation的steps属性制作帧动画
Apr 25 HTML / CSS
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
Jan 23 HTML / CSS
css3 伪类选择器快速复习小结
Sep 10 HTML / CSS
HTML5新增元素如何兼容旧浏览器有哪些方法
May 09 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
Dec 15 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
Oct 23 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
Mar 13 HTML / CSS
使用SVG实现提示框功能的示例代码
Jun 05 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
Jul 03 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
Jul 28 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
Jan 19 HTML / CSS
使用HBuilder制作一个简单的HTML5网页
Jul 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
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
PHP模块memcached使用指南
2014/12/08 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Python的pycurl包用法简介
2015/11/13 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python中常用的内置方法
2019/01/28 Python
利用Python计算KS的实例详解
2020/03/03 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
料理师求职信
2014/01/30 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
打架检讨书范文
2015/01/27 职场文书
项目经理岗位职责
2015/01/31 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
2016年社区文体活动总结
2016/04/06 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
Python爬虫网络请求之代理服务器和动态Cookies
2022/04/12 Python