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

Как мы можем избежать дрожания, когда мы наводим курсор на элемент и делаем его шрифт полужирным? Вот пример кода, который я написал:

http://jsfiddle.net/8v4Ag/

Есть ли способ избежать тряски? Предположим, я навел курсор на LogOff, шрифт стал жирным, но эта строка текста немного сдвинулась вправо из-за того, что текст стал жирнее. Если мы парим вдали, он снова трясется.

Есть ли какой-нибудь способ CSS избежать таких встрясок?


person deostroll    schedule 28.09.2010    source источник


Ответы (7)


Я решил это, имея невидимый дублирующийся текст со стилем наведения. Используйте visibility:hidden, а не display:none, чтобы он занимал место, и расположите его под исходным текстом. Этот невидимый элемент обеспечит достаточную ширину текста для состояния наведения.

Это пример

person rlovtang    schedule 28.09.2010

Некоторые идеи

  • проще: просто измените цвет (или фоновый цвет); вместо черного ставишь цвет:#333, а при наведении: #000 - так размер текста не меняется.
  • небольшой абсолютно позиционированный div фиксированный размер (ширина, высота) с более высоким индексом в том месте, где вы хотите изменить кнопку/текст. Когда размер div немного изменится, это не повлияет на соседей. Это решение требует некоторого кросс-браузерного тестирования.
person Breaking not so bad    schedule 28.09.2010

Я не уверен, что вы подразумеваете под «встряхиванием», я столкнулся с той же проблемой, когда кнопки увеличивались, когда у меня был текст, выделенный жирным шрифтом при наведении. Я думаю, что в итоге я «решил» это, изменив дизайн, чтобы он не требовал жирного шрифта при наведении. Второе решение @ring0 может сработать, но реализовать его будет сложно. Я бы предложил использовать его первое предложение, вы даже можете добавить фоновые изображения (возможно, градиент), которые будут меняться при наведении, и изменить цвет шрифта.

person Ammi J Embry    schedule 28.09.2010

Если вы решили использовать BOLD для наведения, вы не сможете избежать этой проблемы. Полужирный и обычный шрифты — это разные шрифты, поэтому они НЕ будут идеально выровнены, как вы хотите, и вы увидите этот визуальный эффект. Если вы используете браузер, который его поддерживает, попробуйте вместо этого добавить стиль text-shadow: при наведении. Или измените color: с серого на черный...

person Scott Evernden    schedule 28.09.2010

Если под встряхиванием вы подразумеваете, что поля справки или выхода из системы перемещаются, когда вы наводите курсор на другое, то вам нужно расширить поля выхода из системы и справки, чтобы они были больше, чем версия, выделенная полужирным шрифтом.

person sange    schedule 28.09.2010

Вы можете установить фиксированную ширину; однако я бы рекомендовал не использовать строгие стили для элемента. Я бы также не рекомендовал просто менять цвет, так как это не решает никаких проблем с доступностью для дальтоников. Если вы просто добавите рамку и сделаете фон немного темнее, это должно сработать и быть наиболее совместимым с разными браузерами.

Имейте в виду, что вы получите такое же «поведение дрожания», если вы просто добавляете рамку, поэтому не забудьте сначала добавить рамку, соответствующую существующему фону, а затем изменить цвет границы при наведении.

person Eric Taylor    schedule 28.09.2010
comment
добавьте границу, чтобы изначально соответствовать существующему фону - или используйте transparent :) - person Chetan S; 28.09.2010
comment
Вы не получите «тряску» на границе, если вы также измените поля/отступы, чтобы учесть разницу. - person Traingamer; 28.09.2010

Я думал, что что-то вроде этого может сделать это:

{ отступ: 10 пикселей; }

а: наведите { отступ: 8px; вес шрифта: полужирный; }

в зависимости от вашего исходного размера шрифта и высоты строки установлено одно и то же значение px

person PhilD    schedule 26.11.2010