#html #css
#HTML #css
Вопрос:
В главном меню, если ссылка на меню активна, внизу есть граница. Это работает нормально. У меня есть следующий CSS:
.active {
text-decoration: none;
border-bottom: 4px solid #888;
}
В настоящее время border-bottom
имеет ширину текста внутри элемента списка. Но я хотел бы сделать его намного уже. Возможно ли это?
Вот HTML
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="about.html">About</a></li>
</ul>
Комментарии:
1. вы всегда можете попробовать использовать псевдоэлемент :after?
2. Да, это невозможно, вы можете работать с
:after
псевдоэлементом. Вы также можете анимировать подчеркивания и другие интересные вещи codepen.io/Webketje/pen/rhjpl
Ответ №1:
Попробуйте использовать псевдоэлемент :after
для достижения этой цели, поскольку я не думаю, что возможно сделать границу более узкой, чем ширина элемента.
Проверьте эту скрипку:http://jsfiddle.net/6QfNs /
Комментарии:
1. Это лучший результат . Вы могли бы просто использовать
margin: 0 auto;
для настройки.active:after
по центру.
Ответ №2:
Граница не может быть уже элемента, на котором она установлена. Таким образом, вы не можете достичь своей цели с помощью border.
НО
Вы можете использовать псевдоэлемент, установить на нем границу и придать ему желаемую ширину :
CSS :
.active:after {
content:'';
display:block;
width:20px;
border-bottom: 4px solid #888;
}
Ответ №3:
Техника использования псевдоэлементов очень знакома и хорошо известна при решении проблем такого рода. Однако я хотел бы представить другой способ, используя linear-gradient
background, просто общий доступ для каждого:
/* span is your menu item here */
span {
font-size:20px;
padding:4px;
cursor:pointer;
}
span:hover {
background:linear-gradient(red,red) no-repeat;
background-size:60% 4px;
background-position:center bottom;
}