CSS 鼠标在旋转的形状上移动时过渡静止

CSS Transition Rests as mouse moves on a rotated shape

我一直在努力解决这个问题,我以前找不到任何与我的问题相匹配的答案,如果找到了,我也不知道如何让它起作用。

https://jsfiddle.net/z24qehew/

.diamond-container:hover, .diamond-container:active {
    -webkit-animation: all 5s linear infinite;
    -webkit-transition: 1s ease-in-out;
    -moz-transition: 1s ease-in-out;
    -o-transition: 1s ease-in-out;
    transition: 1s ease-in-out;

    }

    @-webkit-keyframes all
    {

    0%   {-webkit-transform: rotateY(0deg);}
    100% {-webkit-transform: rotateY(720deg);}

     }

     .tile-link {
     font-size: 20px;
     text-transform: uppercase;
     float:left;
     position: absolute;
     top: 47px;
     left: 11px;
     text-align: center;
     width: 200px;
      }
 
     .diamond-container:hover > .diamond{
     background: rgba(250, 255, 0, 1);
     -webkit-transition: 0.5s ease-in-out;
     -moz-transition: 0.5s ease-in-out;
     -o-transition: 0.5s ease-in-out;
     transition: 0.5s ease-in-out;
      }

    .diamond-container:hover > .tile-link a{
    color: #000;
    text-decoration: none;
     }

    .diamond-container {
    width: 250px;
    height: 250px;
    -webkit-transition: 1s ease-in-out;
    -moz-transition: 1s ease-in-out;
    -o-transition: 1s ease-in-out;
    transition: 1s ease-in-out;
    padding: 10px;
     }



     .diamond {
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    width: 150px;
    height: 150px;
    border: 5px solid rgba(250, 255, 0, 1);
    font: normal 100%/normal Arial, Helvetica, sans-serif;
    color: rgba(0, 0, 0, 1);
    -o-text-overflow: clip;
    text-overflow: clip;
    background: rgba(255, 255, 255, 0.5);
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    transform: rotate(45deg);
    -webkit-transition: 1s ease-in-out;
    -moz-transition: 1s ease-in-out;
    -o-transition: 1s ease-in-out;
    transition: 1s ease-in-out;
    transform-origin: bottom center;
     }
                <div class="diamond-container">
                    <div class="diamond">
                    </div>
                    <div class="tile-link">
                        <a href="#" class="yellow tile-link">Link</a>
                    </div>
                </div>

当您 运行 这个例子时,您可以看到钻石在任何轻微移动时都会重置,那是因为形状在特定点处基本上是平坦的。

我认为这可能与容器的宽度有关,但只要您修改容器,钻石就会在旋转时偏离中心。

非常感谢!

问题是在悬停时触发动画的元素与动画元素相同,因此当鼠标移动时会发生新的悬停事件。而是在父元素悬停时将动画应用于子元素。

.diamond-container:hover .diamond {
    animation: rotateY 5s ease-in-out;
}

以上只会让你的菱形旋转。要使其完全正常工作,最好先简化标记。我建议使用容器和带有 :before 伪元素的单个 <a> 来获得钻石。

在这里进行了一些自由操作以减少代码,但它正在运行:https://jsfiddle.net/z6dqd492/

希望对您有所帮助!