3

我只是在测试一些 CSS 转换(我是 CSS 的初学者)。所有的过渡都很顺利。但是在其中一个过渡中,当鼠标悬停完成时,过渡会顺利播放,并且一旦您将鼠标移出,它就会突然结束。在所有其他情况下,mouseover 和 mouseout 都可以正常播放。

过渡以这种方式结束的原因是什么?如何解决?(固定:感谢@Edwin)。现在,请解释为什么它不能在没有变化的情况下工作。

jsbin:http ://jsbin.com/oposof,http : //jsbin.com/oposof/5(我担心第一个过渡“三角形”)。

  #container1 >  div.triangle {
     border-bottom: 80px solid red;
     border-left: 60px solid transparent; 
     border-right: 60px solid transparent;
      width: 0px;
      height: 0px;

    -webkit-transition: all 1.2s ease-in-out;

  }

  #container1 >  div.triangle:hover {
    border-top: 80px solid green;
    border-left: 60px solid transparent; 
    border-right: 60px solid transparent;
  }


  #container1 >  div.triangle:active {
    border-left: 80px solid blue; 
    border-right: 60px solid transparent;

  }



  #container2 > div.testt {
    color: red;
    -webkit-transition: all 1s ease-in-out;
  }

  #container2 > div.testt:hover {
    color:yellow;
  }

  #container3 >  div.circle {
    border-radius: 70px;
    width: 100px;
    height: 100px;
    background: red;
    -webkit-border-radius: 50px;

    -webkit-transition: all 1.2s ease-in-out;

  }

  #container3 >  div.circle:hover {
    -webkit-border-radius: 20px;
    -webkit-transform: rotate(-45deg);
  }

我用过-webkit-,所以上面的演示只适用于 chrome 和 safari。已添加-moz-现在,您也可以在 Mozilla 上对其进行测试(希望在 IE 中也是如此)。 http://jsbin.com/oposof/5

4

1 回答 1

4

似乎突然性是由于默认情况下它在顶部没有边框,然后在悬停时它突然在顶部有边框。因此,在 mouseout 中,它所做的不是过渡,而是隐藏顶部边框,因为没有初始值可供过渡参考。

试试这个:

#container1 >  div.triangle {
    border-bottom: 80px solid red;
    border-top: 0 solid green;
    border-left: 60px solid transparent; 
    border-right: 60px solid transparent;
    width: 0px;
    height: 0px;

   -webkit-transition: all 1.2s ease-in-out;
}
于 2012-05-22T06:24:22.317 回答