Продолжать изменять размер текста, чтобы не перемещать другие элементы в его контейнере?
Вопрос
у меня есть следующий HTML
<div id="menu">
<ul class="horizMenu">
<li id="active"><a href="#" id="current">About</a></li>
<li><a href="#">Archive</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Item four</a></li>
<li><a href="#">Item five</a></li>
</ul>
</div>
и в css у меня есть
.horizMenu li
{
display: inline;
list-style-type: none;
padding-right: 20px;
}
#menu
{
text-align:center;
margin-bottom:10px;
letter-spacing:7px;
}
#menu a
{
color:red;
}
#menu a:hover
{
color:blue;
font-weight:bold;
}
Все работает довольно хорошо, за исключением того, что, когда я нажимаю на ссылки, цвет меняется, и он становится жирным, что я и хочу, но это также заставляет все остальные элементы li слегка перемещаться, а затем возвращаться назад, когда вы мышь-офф. Есть ли простой способ предотвратить это?
Решение
Не уверен, кто -1ed, но ответ Мауро в основном правильный: вы не можете просто сделать элемент с автоматической шириной зависящим от того, какой была бы ширина, если бы шрифт внутри не был жирным.
Однако, 'float: left;' Правило также будет необходимо, так как вы не можете установить ширину элемента inline-display. И 'em', вероятно, будет лучшей единицей, чтобы сделать требуемую ширину зависимой от размера шрифта в кнопках.
Другие советы
Добавьте ширину элементов списка, которая больше жирной ширины элементов, таким образом, они не будут вытеснены из линии.
#menu li
{
width: 150px;
}
В качестве альтернативы вы можете попробовать моноширинный шрифт, который не будет зависеть от полужирного / полужирного при наведении курсора.
попробуйте использовать это menutext { высота строки: 10 пикселей; / * или как угодно * / } Р>
а также, чтобы установить ширину встроенного элемента, используйте display: inline-block;
float: left может быть не таким дружелюбным, если вы его используете, и это все испортит, используйте clear: both
У меня только что была такая же проблема. Решение, о котором я подумал и которое смогу использовать с этого момента, заключается в использовании вместо него тени текста.
a:hover {
color:blue;
text-shadow:0px 0px 1px blue;
}
Текст будет выглядеть немного размытым. Если для третьего параметра установить значение 0, текст не будет размытым, а будет выглядеть немного смелее.
Я бы сказал, что это лучше, чем иметь дело с текстами с динамической шириной.