JavaScript / CSS / HTML исчезают и перемещаются элементы при наведении курсора мыши

Я смотрел веб-сайт SkyZone, и на нем было несколько интересных эффектов JavaScript / CSS / HTML, которые я хотел включить в свой веб-сайт.

https://www.skyzone.com/ (Домашняя страница)

Если вы посмотрите на их панель навигации, то при наведении курсора мыши на кнопку линия плавно появляется и перемещается под текстом.

Если вы перейдете в раздел «Наши основные достопримечательности», в полях достопримечательностей у вас будет кнопка «Просмотреть подробности» с оранжевой стрелкой рядом с ней. Эта стрелка перемещается при наведении указателя мыши на кнопку.

Если бы кто-то мог помочь мне создать эти / похожие эффекты на моем веб-сайте или рассказать, как это делается, я был бы признателен!

для таких эффектов не нужен javascript, просто чистый простой css, ищите анимацию css

niceman 04.06.2018 23:35

вы также можете использовать d3 для подключения некоторых переходов tutorialspoint.com/d3js/d3js_transition.htm

just another profile name 05.06.2018 02:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот как это сделать:

.nav-item a.hoverbar::after {
    content: '';
    position: absolute;
    bottom: 1rem;
    width: 100%;
    left: 0;
    height: 0.1rem;
    background: rgba(0,0,0,0.9);
    opacity: 0;
    transition: opacity 0.3s, transform 0.3s;
}

.nav-item a.hoverbar:hover::after {
  opacity: 1;
  transform: translateY(0.2rem);
}

a {
    position: relative;
    padding: 0;
    line-height: 4rem;
}

.nav-item a.stretch::after {
    content: '';
    top: 2.4rem;
    right: -0.4rem;
    position: absolute;
    width: 0.5rem;
    height: 0.5rem;
    border: solid;
    border-width: 0 0.1rem 0.1rem 0;
    transform: rotateZ(-45deg);
    border-color: black;
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.24, 0.97);
}

.nav-item a.stretch:hover::after {
    transform: translateX(100%) rotate(-45deg);
}
<nav class = "navbar navbar-expand-lg navbar-light bg-light" role = "navigation">
        <div class = "collapse navbar-collapse" id = "navbarToggler">
            <ul class = "navbar-nav mr-auto">
                <li class = "nav-item active">
                    <a class = "hoverbar nav-link" href = "/">Home</a>
                </li>
                <li class = "nav-item">
                    <a class = "hoverbar nav-link" href = "http://google.com" target = "_blank">Stores</a>
                </li>
                <li class = "nav-item">
                    <a class = "hoverbar nav-link" href = "http://google.com" target = "_blank">Events</a>
                </li>
              <li class = "nav-item">
                    <a class = "stretch nav-link" href = "http://google.com" target = "_blank">Get Started</a>
                </li>

            </ul>

        </div>

</nav>

Демонстрационная ручка: https://codepen.io/siddiquiadeel/pen/vrGdLR

Объяснение: Элементы привязки на панели навигации используют селектор ::после для создания псевдоэлемента в теге привязки, для которого изначально задана непрозрачность 0, поэтому вы не можете его видеть.

К элементу привязки прикреплен псевдокласс : hover вместе с другим псевдоэлементом ::после, который работает как обнаружение событий наведения на элемент привязки и добавление элемента после элемента привязки с определенными свойствами. Этот элемент добавляется только при обнаружении события наведения.

В данном случае это просто непрозрачность и преобразование для анимации. Помните, что к элементу привязки уже прикреплен псевдоэлемент ::после с определенными свойствами, поэтому это просто работает как установка непрозрачности и преобразования, так что вы можете видеть ______, плавающий под элементом привязки.

Аналогичным образом работает анимация стрелки рядом с элементом привязки «Начало работы».
Прочтите документацию по MDN для псевдоклассов и псевдоэлементов CSS.
https://developer.mozilla.org/en-US/docs/Web/CSS/::after
https://developer.mozilla.org/en-US/docs/Web/CSS/:hover

Другие вопросы по теме