Доброй день, друзья. Интересует вопрос касательно меню. Имеются 2 проблемы при его верстке:
До сих пор не могу понять кому я должен назначать стили и какие. Поясню: собственно на макете вы увидите как оформляется меню, вопрос в том: кому назначать падинги, задний фон, бордер сверху? Ссылке или лишке?
Попытался импровизировать, но возникла следующая проблема. Бордер сверху над пунктом меню должен быть статичным при наведении на кнопочку, но проблема в том, что после того как срабатывает :hover, этот бордер толкает все меню вниз.
Буду благодарен за любые советы.
Вариант при помощи border-top
.
Суть в чём, изначально border-top
есть, но его не видно, ибо его цвет transparent
(прозрачный), при наведение он становится нужным цветом. Эффект затухания\появления.
.item {
display: inline-block;
padding: 7px 12px 10px; /* 7px - это верхний отступ, он как и нижний 10px - 3px бордера сверху */
background: #e8ebf1;
color: #000;
border-top: 3px solid transparent;
transition: all .3s linear;
font-size: 140%;
}
.item:hover {
border-top-color: #2aacc8;
color: #2aacc8;
background: #fff;
}
<div class="item">Наведи на меня</div>
В принципе, можно сделать эффект "выезда", через border-top
, но при анимации мы будет наблюдать дёрганье:
.item {
display: inline-block;
padding: 10px 12px;
background: #e8ebf1;
color: #000;
border-top: 0 solid #2aacc8;
transition: all .3s linear;
font-size: 140%;
}
.item:hover {
border-top-width: 3px;
padding-top: 7px; /* те же 10px - 3px */
color: #2aacc8;
background: #fff;
}
<div class="item">Наведи на меня</div>
По этому, считаю, что для реализации нужной вам фишки, лучше всего использовать box-shadow
.
К тому же не придётся трогать padding
вообще, ибо box-shadow
идёт от границ элемента и по факту игнорирует отступы.
Эффект затухания\появления:
.item {
display: inline-block;
padding: 10px 12px;
background: #e8ebf1;
color: #000;
transition: all .3s linear;
font-size: 140%;
box-shadow: 0 3px 0 0 transparent inset;
}
.item:hover {
box-shadow: 0 3px 0 0 #2aacc8 inset;
color: #2aacc8;
background: #fff;
}
<div class="item">Наведи на меня</div>
Эффект "выезда":
.item {
display: inline-block;
padding: 10px 12px;
background: #e8ebf1;
color: #000;
transition: all .3s linear;
font-size: 140%;
box-shadow: 0 0 0 0 #2aacc8 inset;
}
.item:hover {
box-shadow: 0 3px 0 0 #2aacc8 inset;
color: #2aacc8;
background: #fff;
}
<div class="item">Наведи на меня</div>
Получите ваше меню и распишитесь:
nav {
background-color: #f1f1f1;
padding: 2px 10px 0 10px;
}
ul,
li {
list-style: none;
margin: 0;
padding: 0;
}
li {
display: inline-block;
border-top: 1px solid transparent;
}
li:hover {
background-color: white;
border-top: 1px solid white;
}
a {
display: inline-block;
position: relative;
padding: 10px 10px 12px 10px;
text-decoration: none;
text-transform: uppercase;
color: black;
font-weight: bold;
padding-top: 10px;
}
a:before,
a:after {
content: "";
display: block;
position: absolute;
top: 0;
height: 4px;
width: 0;
background-color: skyblue;
transition: width 0.4s ease-in-out;
}
a:before {
left: 0;
}
a:after {
right: 0;
}
li:hover a:before {
width: 50%;
}
li:hover a:after {
width: 50%;
}
li:hover a {
color: skyblue;
}
<nav>
<ul>
<li><a href="">Home</a></li>
<li><a href="">About us</a></li>
<li><a href="">Services</a></li>
<li><a href="">Portfolio</a></li>
<li><a href="">Blog</a></li>
</ul>
</nav>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Учу HTMLCделал таблицу с ссылками для скачивания логотипов браузеров
Конвертировал картинку в svg, нужно теперь её всунуть в код сайтаНо не ссылкой, а чистым кодом
делаю сайт аля steam, но появилась проблема с загрузкой файловЯ хочу сделать так, чтобы при загрузки приложения архив, или
Есть сайт со списком фильмов, название каждого - ссылкаКак спарсить само название если оно находится в href?