Не позволять изменению размера текста перемещать другие элементы в его контейнере?

У меня есть следующий 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 немного перемещаются, а затем возвращаются, когда вы отключили мышь . Есть ли простой способ предотвратить это?

Не уверен, почему я получил минус 1, но если вы исправите ширину элемента li, то выделение полужирным шрифтом hrefs не будет иметь того же эффекта, поскольку в li достаточно места для размещения новой ширины. Я постоянно использую этот .Net xhtml.

Mauro 21.10.2008 03:02
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
1
2 018
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Добавьте ширину к элементам элемента списка, которая больше, чем ширина элементов, выделенная жирным шрифтом, таким образом, они не будут вытеснены из строки.

#menu li
{
   width: 150px;
}

В качестве альтернативы вы можете попробовать моноширинный шрифт, на который не влияет полужирный / не жирный шрифт при наведении курсора.

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

Не уверен, кто -1ed, но ответ Мауро, по сути, правильный: вы не можете тривиально сделать элемент с автоматической шириной в зависимости от того, какой была бы ширина, если бы шрифт внутри не был полужирным.

Однако "float: left;" Правило также будет необходимо, поскольку вы не можете установить ширину элемента встроенного отображения. И, вероятно, лучше всего подойдет «em», чтобы сделать требуемую ширину зависимой от размера шрифта в кнопках.

попробуйте использовать это menutext { высота строки: 10 пикселей; / * или что угодно * / }

а также, чтобы установить ширину встроенного элемента, используйте display: inline-block;

float: left может быть не очень дружелюбным, если вы его используете, и он все портит, используйте clear: both

У меня была такая же проблема. Решение, которое я придумал и которое я мог бы использовать с этого момента, - использовать вместо этого text-shadow.

a:hover {
  color:blue;
  text-shadow:0px 0px 1px blue;
}

Однако текст будет выглядеть немного размытым. Если вы установите для 3-го параметра значение 0, текст не будет размытым, но будет выглядеть немного более жирным.

Я бы сказал, что это лучше, чем иметь дело с текстами с динамической шириной.

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