#css #menu #hover #styling #underline
Вопрос:
Я практикуюсь в CSS, поэтому после нескольких уроков я начал создавать простой веб-сайт. Я хочу создать что-то вроде этого:
Как я могу добиться такого эффекта? Я искал ответ в Интернете, и я просто нашел только решения с причудливыми анимациями и эффектами подчеркивания, но я не мог найти решение, аналогичное моей проблеме. Я добился только чего-то подобного:
Это мой код
.button { background-color: white; border: none; color: black; text-align: center; text-decoration: none; cursor: pointer; margin: 0; } .button:hover { background-color: white; border-bottom: #55415f 4px solid; color: #55415f; text-align: center; text-decoration: none; cursor: pointer; margin: 0; } .r_menu { display: flex; justify-content: flex-end; border-bottom: black 3px solid; gap: 20px; margin: 0; }
lt;div class="r_menu"gt; lt;button class="button"gt;Home pagelt;/buttongt; lt;button class="button"gt;Style demolt;/buttongt; lt;button class="button"gt;Full widthlt;/buttongt; lt;button class="button"gt;Portfoliolt;/buttongt; lt;button class="button"gt;Gallerylt;/buttongt; lt;button class="button"gt;Dropdownlt;/buttongt; lt;/divgt;
Комментарии:
1. Добро пожаловать в SO.Предоставьте код того, что вы пробовали до сих пор, только предоставление изображений не поможет. Так как мы до сих пор не можем извлечь код из изображений ; ) .
2. И эта проблема связана с элементом по умолчанию
margin
(тег, используемый для меню ). Поэтому, чтобы устранить эту проблему, используйтеmargin: 0
тот элемент, который содержитborder-bottom: 3px solid black
(т. е. ваше меню)
Ответ №1:
При наведении есть пробел и «движение», потому что граница изменяется от нуля до 4 пикселей.
Простой способ обойти это-постоянно указывать границу, просто вы делаете ее прозрачной, когда нет наведения. Таким образом, при наведении курсора нечего перемещать, пространство уже есть.
Примечание: этот фрагмент также делает длинную границу менее широкой, просто чтобы сделать ее немного более похожей на первое изображение в вопросе.
.button { background-color: white; border: none; border-bottom: transparent 4px solid; color: black; text-align: center; text-decoration: none; cursor: pointer; margin: 0; } .button:hover { background-color: white; border-bottom: #55415f 4px solid; color: #55415f; text-align: center; text-decoration: none; cursor: pointer; margin: 0; } .r_menu { display: flex; justify-content: flex-end; border-bottom: black 1px solid; gap: 20px; margin: 0; }
lt;div class="r_menu"gt; lt;button class="button"gt;Home pagelt;/buttongt; lt;button class="button"gt;Style demolt;/buttongt; lt;button class="button"gt;Full widthlt;/buttongt; lt;button class="button"gt;Portfoliolt;/buttongt; lt;button class="button"gt;Gallerylt;/buttongt; lt;button class="button"gt;Dropdownlt;/buttongt; lt;/divgt;