转换div而不转换图标

时间:2016-08-10 15:50:34

标签: css css3 css-transitions css-animations css-transforms

我正在尝试使用CSS转换属性转换div悬停。

我有变换做我想要的,但不幸的是它将变换(逻辑上我猜)应用于div的内容我只想应用变换div但不是基础内容(本例中为Icon)。

我在这里看到了一些方法,包括将反向过渡应用到图标,但是当我这样做时,它只是增加了效果。

以下是my code

.MsgBtnIcon {
  position: fixed;
  bottom: 0px;
  right: 7px;
  padding: 0px;
}
#transDemo2 div {
  display: block;
  position: fixed;
  bottom: 0px;
  right: 0px;
  background-color: #03A9F4;
  width: 75px;
  height: 75px;
  text-align: center;
  -webkit-transition: all 1s ease-in-out;
  -moz-transition: all 1s ease-in-out;
  -ms-transition: all 1s ease-in-out;
  transition: all 1s ease-in-out;
}
#transDemo2 div:hover,
#transDemo2 div.hover_effect {
  -webkit-transform: rotate(360deg) scale(2, 2) translateX(-19px) translateY(-19px);
  -moz-transform: rotate(360deg) scale(2, 2) translateX(-19px) translateY(-19px);
  -ms-transform: rotate(360deg) scale(2, 2) translateX(-19px) translateY(-19px);
  transform: rotate(360deg) scale(2, 2) translateX(-19px) translateY(-19px);
}
<script src="https://use.fontawesome.com/353bc64522.js"></script>
<div id="transDemo2">
  <div class="hover">
    <i class="fa fa-plus fa-4x MsgBtnIcon" aria-hidden="true"></i>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

您可以将MsgBtnIcon移动为悬停div的子项并添加pointer-events: none来完成此操作。

Updated fiddle example

.MsgBtnIcon {
  position: fixed;
  bottom: 0px;
  right:  7px;
  padding: 0px; 
  pointer-events: none;
}
#transDemo2 div {
  display: block;
  position: fixed;
  bottom: 0px;
  right: 0px; 
  background-color: #03A9F4;
  width: 75px;
  height: 75px;
  text-align:center;
  -webkit-transition: all 1s ease-in-out;
  -moz-transition: all 1s ease-in-out;
  -ms-transition: all 1s ease-in-out;
  transition: all 1s ease-in-out;

}

#transDemo2 div:hover, #transDemo2 div.hover_effect {
  -webkit-transform:rotate(360deg) scale(2,2) translateX(-19px) translateY(-19px);
  -moz-transform:rotate(360deg) scale(2,2) translateX(-19px) translateY(-19px);
  -ms-transform:rotate(360deg) scale(2,2) translateX(-19px) translateY(-19px);
  transform:rotate(360deg) scale(2,2) translateX(-19px) translateY(-19px);
}
<script src="https://use.fontawesome.com/353bc64522.js"></script>

<div id="transDemo2">
  <div class="hover"></div>
  <i class="fa fa-plus fa-4x MsgBtnIcon" aria-hidden="true"></i>
</div>

答案 1 :(得分:-1)

可能最好简单地将遭受转换的部分与保持不受影响的部分分开,而不是与变换作斗争: https://jsfiddle.net/m1hqzaqf/

<script src="https://use.fontawesome.com/353bc64522.js"></script>

<div id="transDemo2">
  <div class="hover">
  </div>
  <i class="fa fa-plus fa-4x MsgBtnIcon" aria-hidden="true">X</i>
</div>

毕竟,&#39; hover&#39;在这种情况下,无论如何,div似乎只是作为背景构成。