html — Плавный переход/анимация при hover на иконку
Вопрос задан
Изменён 7 лет 2 месяца назад
Просмотрен 678 раз
Внутри блока есть спозиционированная иконка, при наведении на которую появляется текст и бордер. Суть в том, что нужно не просто появление этих элементов — они должны как бы выезжать из-под неё вправо. Пробовал использовать анимацию, но она почему-то не срабатывает.
Буду очень благодарен, если кто-нибудь сможет помочь в решении проблемы.
.block { position: relative; margin: 30px auto; width: 30%;/* изменено для снипета*/ height: 100px;/* изменено для снипета*/ box-shadow: 0 0 5px 0 black; } .warning-box { display: inline-block; position: absolute; top: 8px; left: 10px; padding-right: 5px; color: #FFB700; border: 1px solid transparent; line-height: 1; } .warning-box p { display: none; } .warning-box .fa { color: #ffc107; font-size: 19px; position: absolute; top: -1px; left: -1px; } .warning-box:hover { width: 160px; border: 1px solid #ff8600; border-radius: 8px; translateX: 100px; transition: 1s; } .warning-box:hover .fa { color: #ff8600; transition: 200ms; } .warning-box:hover .text { display: inline-block; position: absolute; top: 2px; left: 10px; width: 150px; padding: 0 0 0 10px; margin: 0; font-family: "Open Sans"; font-size: 10px; line-height: 10px; color: #ff8600; }
<link rel="stylesheet" href="https://maxcdn. bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> <div> <div> <i> </i>  <p>This app is no longer available</p> </div> </div>
- html
- css
- css-animation
4
Вам надо поставить на .warning-box .text
стиль width: 0px
изначально. Это блок спрячет.
А на .warning-box:hover .text
поставить width: 150px;
и добавить transition
, тогда будет выезжать 🙂
Также обратите внимание на white-space: nowrap; overflow:hidden;
. Это нужно, чтобы текст принудительно вставал в одну строчку.
Вот типа такого:
(из вашего примера были изменены только .warning-box .text
и .warning-box:hover .text
.)
.block { position: relative; margin: 30px auto; width: 30%;/* изменено для снипета*/ height: 100px;/* изменено для снипета*/ box-shadow: 0 0 5px 0 black; } .warning-box { display: inline-block; position: absolute; top: 8px; left: 10px; padding-right: 5px; color: #FFB700; border: 1px solid transparent; line-height: 1; } .warning-box p { display: none; } .warning-box .fa { color: #ffc107; font-size: 19px; position: absolute; top: -1px; left: -1px; } .warning-box:hover { width: 160px; border: 1px solid #ff8600; border-radius: 8px; translateX: 100px; transition: 1s; } .warning-box:hover .fa { color: #ff8600; transition: 200ms; } .warning-box .text { width: 0px; position: absolute; display: inline-block; transition: 200ms; top: 2px; left: 10px; padding: 0 0 0 10px; margin: 0; font-family: "Open Sans"; font-size: 10px; line-height: 10px; color: #ff8600; white-space: nowrap; overflow:hidden; } . warning-box:hover .text { width: 150px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> <div> <div> <i> </i>  <p>This app is no longer available</p> </div> </div>
Еще один вариант, добавить в класс .warning-box
свойства overflow:hidden
и установить начальную ширину, в данном случае width:20px;
.block { position: relative; margin: 30px auto; width: 30%; height: 100px; box-shadow: 0 0 5px 0 black; } .warning-box { display: inline-block; position: absolute; top: 8px; left: 10px; padding-right: 5px; color: #FFB700; border: 1px solid transparent; line-height: 1; overflow:hidden; width:20px; } .warning-box p { display: none; } .warning-box .fa { color: #ffc107; font-size: 19px; position: absolute; top: -1px; } .warning-box:hover { width: 160px; border: 1px solid #ff8600; border-radius: 8px; translateX: 100px; transition: 1s; } .warning-box:hover .fa { color: #ff8600; transition: 200ms; } .warning-box:hover .text { display: inline-block; position: absolute; top: 2px; left: 10px; width: 150px; padding: 0 0 0 10px; margin: 0; font-family: "Open Sans"; font-size: 10px; line-height: 10px; color: #ff8600; }
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> <div> <div> <i> </i>  <p>This app is no longer available</p> </div> </div>
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
163.
Как сделать плавный переход в CSS — Анимация — codebraКогда пользователь наводит курсор на объект или нажимает на него, псевдокласс hover
срабатывает мгновенно. Чтобы как-то сгладить переход, необходимо использовать анимацию. Приведем простой пример ссылки:
Код HTML
<a href = "/" class = "link">Ссылка</a>
Код CSS
.link {
padding: 10px 20px;
background: #F1F1F1;
color: #000;
}.link:hover {
background: #AAAAAA;
}
Теперь сгладим переход цвета фона при наведении курсора на ссылку. Для этого будем использовать три свойства: transition-property
, transition-duration
и transition-timing-function
. Первое указывает на свойство, к которому мы применяем переход. Второе указывает продолжительность перехода. Третье указывает скорость перехода, в зависимости от времени.
Код CSS
.link:hover {
background: #AAAAAA;
transition-property: background;
transition-duration: 1s;transition-timing-function: ease;
}
В нашем примере устанавливается переход для свойства background
, длительностью 1s
и с временной функцией ease
. Если необходимо установить плавный переход для всех свойств, то замените конкретное свойство на all
, то есть таким образом: transition-property: all
.
Теперь рассмотрим значения, которые может принимать свойство transition-timing-function
. Достаточно тяжело описать работу каждого значения, поэтому просто их перечислю: ease
linear
, ease-in
, ease-out
, ease-in-out
и cubicbezier
. Чтобы понять, чем они отличаются, попробуйте каждый по очереди. Для упрощения кода эти три строчки можно записать одной. Далее равнозначный пример:Код CSS
.link:hover {
background: #AAAAAA;
transition: background 1s ease;
}
Приведенные ранее примеры небыли кроссплатформенными. Чтобы свойство transition
корректно работало во всех браузерах, необходимо добавлять специальные приставки (вендорные префиксы). Вот основные:
-webkit-
для Chrome, Safari и всех браузеров, написанных на движке WebKit;-o-
для Opera;-moz-
для Firefox;-ms-
для браузеров Microsoft.
Используются они следующим способом:
Код CSS
-webkit-transition: background 1s ease;
-o-transition: background 1s ease;
-moz-transition: background 1s ease;
-ms-transition: background 1s ease;
Кстати, в свойстве transition
можно перечислять значения через запятую, например, вот так:
Код CSS
transition: background 1s ease, color 2s linear;
Возможно, кто-то задается вопросом, почему бы не использовать JavaScript? Использовать его можно, но зачем усложнять себе жизнь, когда имеется возможность решить задачу средствами CSS.
Свойство background для работы с фономЦвета и фон
Работа с файлами в Python Знакомство с Python
Первое знакомство с PythonЗнакомство с Python
Написание модулей в PythonЗнакомство с Python
Добавляем градиент к фону элементаЦвета и фон
Типы данных в PythonЗнакомство с Python
Погружение в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Основы функций в PythonЗнакомство с Python
Предыдущий урок «159. Типы списков в CSS» Следующий урок «164. Трансформирование элементов при помощи CSS»
css — Плавный переход при наведении?
спросил
Изменено 2 года, 2 месяца назад
Просмотрено 41к раз
Кажется, у меня проблемы с анимацией описания при наведении. Сам ховер работает нормально и появляется именно там, где он находится; однако кажется, что при наведении курсора на элемент или вдали от него не возникает эффекта затухания. Вместо этого поле описания резко появляется в пределах 0,5 с, указанных в CSS, и исчезает таким же образом. Я хочу создать плавный эффект перехода, когда поле описания появляется и исчезает. Может кто-нибудь, пожалуйста, помогите мне настроить это?
КОД:
#описание { непрозрачность:0; фон:#fff; z-индекс: 30; положение: фиксированное; поле слева: 249px; верхняя граница:-5px; граница: 1px сплошная #000; ширина: 230 пикселей; высота: 299 пикселей; цвет:{цвет:текст}; -webkit-transition: непрозрачность 0,5 с; -moz-transition: непрозрачность 0,5 с, плавность входа-выхода; -ms-transition: непрозрачность 0,5 с, плавность входа-выхода; -o-переход: непрозрачность 0,5 с, плавность входа-выхода; переход: непрозрачность 0,5 сек. } #описание а { цвет:{цвет:текст}; -webkit-transition: непрозрачность 0,5 с; -moz-transition: непрозрачность 0,5 с, плавность входа-выхода; -ms-transition: непрозрачность 0,5 с, плавность входа-выхода; -o-переход: непрозрачность 0,5 с, плавность входа-выхода; переход: непрозрачность 0,5 сек. } #sidebar:hover #description { непрозрачность: 0,6; -webkit-transition: непрозрачность 0,5 с; -moz-transition: непрозрачность 0,5 с, плавность входа-выхода; -ms-transition: непрозрачность 0,5 с, плавность входа-выхода; -o-переход: непрозрачность 0,5 с, плавность входа-выхода; переход: непрозрачность 0,5 сек. }
- css
- наведение
- переход
2
Попробуйте это…
#description { непрозрачность:0; фон:#fff; z-индекс: 30; положение: фиксированное; поле слева: 249px; верхняя граница:-5px; граница: 1px сплошная #000; ширина: 230 пикселей; высота: 299 пикселей; цвет:{цвет:текст}; -webkit-transition: непрозрачность 0,5 с; -moz-transition: непрозрачность 0,5 с, плавность входа-выхода; -ms-transition: непрозрачность 0,5 с, плавность входа-выхода; -o-переход: непрозрачность 0,5 с, плавность входа-выхода; переход: непрозрачность 0,5 сек. } #описание a {цвет:{цвет:текст}; } #description:hover { непрозрачность:0.6; }
3
Пробовал сам в своем коде. Просто избавьтесь от непрозрачности, и это сработает. Смотрите youtiming dot com для демонстрации.
‘opacity’ — это свойство css, которое вам нужно для указания значения уровня: http://www.w3schools.com/cssref/css3_pr_opacity.asp
Вот живой пример на скрипке, которую я только что сделал
Это Разметка HTML
Это CSS
.kid { максимальная ширина: 250 пикселей; должность: родственница; } .детское изображение { дисплей:блок; непрозрачность:1; высота: авто; переход: легкость .6s; ширина:100%; положение: абсолютное; z-индекс: 12; } .детское изображение: наведение { непрозрачность:0; } . детское изображение + изображение { дисплей:блок; непрозрачность:1; должность: родственница; z-индекс: 10; }
Скрипка здесь: https://jsfiddle.net/cdsaekv9/7/
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
html — Плавный переход CSS при наведении на div
спросил
Изменено 6 лет, 7 месяцев назад
Просмотрено 3к раз
У меня есть следующий код, но я не могу сделать плавный переход при наведении.
<дел> <дел>дел>