CSS变换旋转回来

Posted

技术标签:

【中文标题】CSS变换旋转回来【英文标题】:CSS transform rotate back 【发布时间】:2017-01-20 23:15:00 【问题描述】:

我找到了这个 sn-p:codepen.io/gianmichelle/pen/xpwEh/ 给一个机会,当我用鼠标离开时,图标会旋转回来? 在悬停时我旋转 360°。但是我没有找到一种方法可以在鼠标左侧旋转回来。

a 
  color: #fff;
  text-decoration: none;

.me 
  width: 400px;
  margin: 90px auto;

.me p,
.me h1 
  text-transform: uppercase;
  letter-spacing: 3px;
  text-align: center;

.me p 
  font-weight: 200;

.me span 
  font-weight: bold;

.social 
  position: fixed;
  top: 20px;

.social ul 
  padding: 0px;
  -webkit-transform: translate(-270px, 0);
  -moz-transform: translate(-270px, 0);
  -ms-transform: translate(-270px, 0);
  -o-transform: translate(-270px, 0);
  transform: translate(-270px, 0);

.social ul li 
  display: block;
  margin: 5px;
  background: rgba(0, 0, 0, 0.36);
  width: 300px;
  text-align: right;
  padding: 10px;
  -webkit-border-radius: 0 30px 30px 0;
  -moz-border-radius: 0 30px 30px 0;
  border-radius: 0 30px 30px 0;
  -webkit-transition: all 1s;
  -moz-transition: all 1s;
  -ms-transition: all 1s;
  -o-transition: all 1s;
  transition: all 1s;

.social ul li:hover 
  -webkit-transform: translate(110px, 0);
  -moz-transform: translate(110px, 0);
  -ms-transform: translate(110px, 0);
  -o-transform: translate(110px, 0);
  transform: translate(110px, 0);
  background: rgba(255, 255, 255, 0.4);

.social ul li:hover a 
  color: #000;

.social ul li:hover i 
  color: #fff;
  background: rgba(0, 0, 0, 0.36);
  -webkit-transform: rotate(360deg);
  -moz-transform: rotate(360deg);
  -ms-transform: rotate(360deg);
  -o-transform: rotate(360deg);
  transform: rotate(360deg);
  -webkit-transition: all 1s;
  -moz-transition: all 1s;
  -ms-transition: all 1s;
  -o-transition: all 1s;
  transition: all 1s;

.social ul li i 
  margin-left: 10px;
  color: #000;
  background: #fff;
  padding: 10px;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  border-radius: 50%;
  width: 20px;
  height: 20px;
  font-size: 20px;
  background: #ffffff;
  -webkit-transform: rotate(0deg);
  -moz-transform: rotate(0deg);
  -ms-transform: rotate(0deg);
  -o-transform: rotate(0deg);
  transform: rotate(0deg);

body 
  background: #25343F;
  color: #fff;
  font-family: 'Raleway', sans-serif;
<link href='http://fonts.googleapis.com/css?family=Raleway:400,200' rel='stylesheet' type='text/css'>

<link href="//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
<nav class="social">
  <ul>
    <li><a href="http://twitter.com/gian_michelle">Twitter <i class="fa fa-twitter"></i></a>
    </li>
    <li><a href="http://facebook.com/gian.michelle">Facebook <i class="fa fa-facebook"></i></a>
    </li>
    <li><a href="http://dribbble.com/gian_michelle">Dribbble <i class="fa fa-dribbble"></i></a>
    </li>
    <li><a href="http://behance.net">Behance <i class="fa fa-behance"></i></a>
    </li>

  </ul>
</nav>
<div class="me">
  <p>Created by:
    <p>
      <h1>Gian Di Serafino</h1>
      <p>for <span>Informartion architecture</span>
      </p>
</div>

【问题讨论】:

看看这个:***.com/questions/16516793/… 【参考方案1】:

您必须将过渡添加到 .social ul li i 元素而不是 .social ul li:hover i 元素,因为在您的示例中,只有当您将鼠标悬停在元素上时,过渡才处于活动状态。并且您希望过渡始终处于活动状态。

你必须添加:

.social ul li i 
  -webkit-transition: all 1s;
  -moz-transition: all 1s;
  -ms-transition: all 1s;
  -o-transition: all 1s;
  transition: all 1s;    

这是笔:http://codepen.io/anon/pen/KgVXwN

【讨论】:

【参考方案2】:

您只需要在 i 元素中添加初始旋转代码即可;

  .social ul li i 
      -webkit-transform: rotate(0deg);
      -moz-transform: rotate(0deg);
      -ms-transform: rotate(0deg);
      -o-transform: rotate(0deg);
      transform: rotate(0deg);
    

【讨论】:

以上是关于CSS变换旋转回来的主要内容,如果未能解决你的问题,请参考以下文章

Firefox中的CSS变换旋转像素问题

CSS“变换旋转”创建工件

变换上的 CSS3 动画:旋转。获取旋转元素当前度数的方法?

css 变换:旋转(30度)

CSS3 变换旋转导致 Chrome 偏移 1px

CSS 动画中断变换