关于CSS3中transform变换的小坑
2017年6月30日15:05:46
今天在写一个demo的时候,发现CSS3中transform变换的一个特性。
首先,我先描述一下我发现的情况(问题再现):
<div class="box box-mission">
<span class="icon"></span>
<div class="button">
<span class="line line-top"></span>
<span class="line line-right"></span>
<span class="line line-bottom"></span>
<span class="line line-left"></span>
GHOST
</div>
</div>
如上代码块,在一个div盒子中有两个组成部分,一个是span,一个是div。
// span样式
.box .icon {
display: inline-block;
width: 100%;
height: 190px;
// 解决方法1
// margin-bottom: 20px;
transition: .2s linear;
-ms-transition: .2s linear;
-o-transition: .2s linear;
-webkit-transiton: .2s linear;
-moz-transition: .2s linear;
}
.box-mission .icon {
background: url("mission.png") no-repeat center center;
}
.box-mission .icon:hover {
transform: rotate(360deg) scale(1.2);
-webkit-transform: rotate(360deg) scale(1.2);
-o-transform: rotate(360deg) scale(1.2);
-ms-transform: rotate(360deg) scale(1.2);
-moz-transform: rotate(360deg) scale(1.2);
}
// class为button的div的样式
box .button {
// 解决方法2
// position: relative;
width: 180px;
height: 50px;
padding-left: 10px;
line-height: 50px;
color: #2DCB70;
font-weight: bold;
border: 2px solid rgba(255,255,255,0.8);
background: url("allow.png") no-repeat 130px center;
transition: .2s ease;
-ms-transition: .2s ease;
-webkit-transition: .2s ease;
-o-transition: .2s ease;
-moz-transition: .2s ease;
}
.box .button:hover {
border: 2px solid rgba(255,255,255,0.8);
background-position: 160px center;
}
如上代码块,分别为上面提到的两个组成部分.icon和.button的样式,.icon和.button都有一个hover(鼠标悬浮)的效果,.icon被hover时进行了一个transform变换。显示效果如下:

接下来就是重点:当我在.icon上hover后,.icon应用了transform的样式,下一步我让鼠标慢慢向下移动到.button的区域,.button的hover效果并未立即出现,等到我移动鼠标过半的时候,hover样式生效了!!!
我脑海中有个奇怪的问题:难道元素的hover事件会被阻塞吗?
解决方法:
因为我是看完教学视频,感觉效果不错,想凭自己的记忆还原出原来的效果。所以我找到原始代码,一对照,原来是少了一个position:relative,就是上面的解决方法2。
后来我注意到.icon的hover样式中有transform:scale(1.2),放大1.2倍的效果。我想是不是因为.icon的放大,把下面.button区域遮住了,于是想出了解决方法1,就是增加.icon的底部外边距。
解决方法可能不止这两种吧。
进一步,我在想这个hover效果为什么和平时不一样,不就是多了个CSS3的transform吗?
Google了一下,在http://www.html-js.com/article/2518 《transform你不知道的那些事》中,我看到下面的一些文字:
任何非none的transform值都会导致一个堆叠上下文(stacking context)和包含块(containing block)的创建。
这个CSS3中transform导致了一个堆叠上下文的创建,导致.icon所在的上下文环境在.buttion的上面,遮挡了.button的区域,因此出现了上面的问题。解决方法1,是将.icon经过transform变换的区域预留出来,这样就不会影响会别的元素了。解决方法2,是通过position:relative产生一个新的堆叠上下文,让.button在.icon经过transform后的区域的上面。产生一个新的堆叠上下文的方法,也是同一个博主的文章http://www.html-js.com/article/2523 《W3C奇技淫巧之堆叠上下文》。
到现在,我基本解决了这个小坑。
关于CSS3中transform变换的小坑的更多相关文章
- 第98天:CSS3中transform变换详解
transform变换详解 本文主要介绍变形transform. Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放sc ...
- 自己总结的CSS3中transform变换、transition过渡、animation动画的基本用法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 好吧,CSS3 3D transform变换,不过如此!
一.写在前面的秋裤 早在去年的去年,我就大肆介绍了2D transform相关内容.看过海贼王的都知道,带D的家伙都不是好惹的,2D我辈尚可以应付,3D的话,呵呵,估计我等早就在千里之外被其霸气震晕了 ...
- 好吧,CSS3 3D transform变换,不过如此!——张鑫旭
一.写在前面的秋裤 早在去年的去年,我就大肆介绍了2D transform相关内容.看过海贼王的都知道,带D的家伙都不是好惹的,2D我辈尚可以应付,3D的话,呵呵,估计我等早就在千里之外被其霸气震晕了 ...
- css3中的制作动画小总结
系列教程 CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation: Transform 在CSS3中transform主要包括以下几种:旋转rotate. ...
- css3的transform变换scale和translate等影响jQuery的position().top和offset().top
css3的transform变换scale和translate等影响jQuery的position().top和offset().top
- 关于css3中transform的理解(只是改变状态未改变其真正的属性)
众所周知,在css3中可以用animation实现动画效果,在这里用一个transform:translateX举例. <div class="div1"></d ...
- CSS3中transform几个属性值的注意点
transform(变形)是CSS3中的元素的属性,transform的属性值主要包括旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix 基本用法可以参考文 ...
- python-django中使用事务以及小坑
django中使用事务 一.导入事务模块 from django.db import transaction 二.对相应的业务进行事务操作 方式一:为整个函数进行事务操作 @transaction.a ...
随机推荐
- Spring框架学习1
AnonymouL 兴之所至,心之所安;尽其在我,顺其自然 新随笔 管理 Spring框架学习(一) 阅读目录 一. spring概述 核心容器: Spring 上下文: Spring AOP ...
- WPF 杂谈——自定义控件
如果只是使用现有的WPF控件的话,是很难满足当前社会多复杂的业务.所以用户自己订制一系列控件也是一种不可避免的情势.WPF在控制方面分为俩种:用户控件和自定义控件.相信看过前面章节的就明白他们俩者之间 ...
- Day4-迭代器
for循环的数据类型: 1.集合数据类型,如list列表,tuple元组,dict字典,set集合,str字符串等: 2.generator生成器,包括生成器和带yield的generator fun ...
- Log4j2 — Log4j2导入、LogEvent、配置文件编写及路径
1. Log4j2的导入 首先到http://logging.apache.org/log4j/2.x/download.html 上下载最新的log4j2的jar包,然后再eclipse中加入log ...
- Java高效计数器
本文转载地址: http://blog.csdn.net/renfufei/article/details/14120775 我们经常使用 HashMap作为计数器(coun ...
- Circuit Breaker Features
Better to use a circuit breaker which supports the following set of features: Automatically time-out ...
- Java反射机制剖析(二)-功能以及举例
从<java反射机制剖析(一)>的API我们看到了许多接口和类,我们能够通过这些接口做些什么呢? 从上篇API中我们能看到它能够完成下面的这些功能: 1) 获得类 A. 运 ...
- python3 爬 妹子图
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式 Beautiful Soup 4 通过PyP ...
- 默认路由、RIPv2、OSPF、EIGRP配置(全网全通)
1:默认路由 遇到问题:给r2配置向右的单项默认路由,通过PC1去ping主机PC2,一直显示Request timed out, 解决方法:r2配置如下: r2(config)#ip route 0 ...
- 2017·iOS学习资料
我的两个想法更新了,欢迎新老司机出来槽点一下 star →[iOS·UIKit & Foundation框架-Annotations & Category注解工具类