CSS анимация при наведении мышки возвращается к размеру по умолчанию после зависания - PullRequest
0 голосов
/ 01 марта 2019

У меня есть этот div, где анимация включается при наведении курсора.К сожалению, когда вы уходите, div возвращается к своему первоначальному размеру.Я бы хотел, чтобы div плавно вернулся к исходному размеру.Я попытался использовать свойство transition, оно не работает, и я подозреваю, что оно все равно испортит анимацию.

Ниже приведен полный код, который я использовал для экспериментов (самодостаточный html со встроенным кодом CSS):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Post with edit/delete buttons experiment</title>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
        crossorigin="anonymous">
    <style>
        html,
        body {
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .post-div {
            height: 500px;
            width: 500px;
            border: thin solid lightgrey;
            border-radius: 10px;
            background-image: linear-gradient(to bottom right, white, whitesmoke);
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }

        .post-div .edit-button.animated-button {
            position: absolute;
            top: -25px;
            right: 75px;
            background-image: linear-gradient(to bottom right, white, #0099ff);
        }

        .post-div .delete-button.animated-button {
            position: absolute;
            top: -25px;
            right: 30px;
            background-image: linear-gradient(to bottom right, white, #c00000);
        }

        .post-div .animated-button {
            height: 35px;
            width: 35px;
            border: none;
            border-radius: 50%;
            display: flex;
            justify-content: center;
            align-items: center;
            transition: animation 0.1s;
        }

        .post-div .animated-button:hover {
            animation: button-hover 0.5s forwards ease-out;
        }

        .post-div .animated-button {
            color: white;
        }

        .post-div p {
            font-size: 40px;
        }

        @keyframes button-hover {
            0% {
                transform: scale(1);
            }

            70% {
                transform: scale(1.4);
            }

            100% {
                transform: scale(1.3);
            }
        }
    </style>
</head>

<body>
    <div class="post-div">
        <div class="edit-button animated-button "><i class="far fa-edit"></i></div>
        <div class="delete-button animated-button"><i class="fas fa-ban"></i></div>
        <p>This is a very intesting post</p>
    </div>
</body>

</html>

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы могли бы сделать это намного проще:

.animated-button {
  transition: transform .5s ease-out;
}

.animated-button:hover { 
  transform: scale(1.3);
}

Вам не нужно будет делать анимацию с несколькими ключевыми кадрами, css все это сделает за вас.

0 голосов
/ 01 марта 2019

Я добавил анимацию, кнопка зависания

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Post with edit/delete buttons experiment</title>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
        crossorigin="anonymous">
    <style>
        html,
        body {
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .post-div {
            height: 500px;
            width: 500px;
            border: thin solid lightgrey;
            border-radius: 10px;
            background-image: linear-gradient(to bottom right, white, whitesmoke);
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }

        .post-div .edit-button.animated-button {
            position: absolute;
            top: -25px;
            right: 75px;
            background-image: linear-gradient(to bottom right, white, #0099ff);
        }

        .post-div .delete-button.animated-button {
            position: absolute;
            top: -25px;
            right: 30px;
            background-image: linear-gradient(to bottom right, white, #c00000);
        }

        .post-div .animated-button {
            height: 35px;
            width: 35px;
            border: none;
            border-radius: 50%;
            display: flex;
            justify-content: center;
            align-items: center;
            transition: animation 1s;
             animation: button-hoveroff 0.5s forwards ease-out;
        }

        .post-div .animated-button:hover {
            animation: button-hover 0.5s forwards ease-out;
        }

        .post-div .animated-button {
            color: white;
        }

        .post-div p {
            font-size: 40px;
        }

        @keyframes button-hover {
            0% {
                transform: scale(1);
            }

            70% {
                transform: scale(1.4);
            }

            100% {
                transform: scale(1.3);
            }
        }

        @keyframes button-hoveroff {
            0% {
                transform: scale(1.3);
            }

            70% {
                transform: scale(1.2);
            }

            100% {
                transform: scale(1);
            }
        }
    </style>
</head>

<body>
    <div class="post-div">
        <div class="edit-button animated-button "><i class="far fa-edit"></i></div>
        <div class="delete-button animated-button"><i class="fas fa-ban"></i></div>
        <p>This is a very intesting post</p>
    </div>
</body>

</html>
...