#html #css #stylesheet
#HTML #css #таблица стилей
Вопрос:
Мой CSS выглядит так:
A:link { text-decoration: none; color: White; border-bottom:1px dotted white; font-style:italic;}
A:visited { text-decoration: none; color: White; border-bottom:1px dotted white; font-style:italic;}
A:active { text-decoration: none; color: White; border-bottom:1px dotted white; font-style:italic;}
A:hover { text-decoration: none; color: white; border-bottom:1px solid white; font-style:italic; }
#mainmenu A:link { text-decoration: none; }
#mainmenu A:visited { text-decoration: none; }
#mainmenu A:active { text-decoration: none; }
#mainmenu A:hover { text-decoration: underline; color: white; }
и в HTML у меня есть:
<div id="mainmenu">
<a href="link here">link</a>
</div>
Я бы подумал, что этот элемент меню будет иметь стиль без оформления текста, но вместо этого он получает подчеркнутый стиль. Таким образом, стили для #mainmenu, похоже, игнорируются, он всегда принимает стиль по умолчанию.
Я что-то упустил?
Комментарии:
1. В каком браузере вы это просматриваете?
2. firefox 7, но в IE то же самое
3.
#id
стили имеют приоритет над.class
стилями, которые имеют приоритет надa
стилями объектов. Возможно, вы захотите узнать о каскадной части каскадных таблиц стилей 🙂4. @Set Это не объясняет проблему, с которой он столкнулся, так как он ожидает, что #id будет предшествовать, но проблема в том, что он не видит, как это происходит. Он кажется мне достаточно образованным.
5. мой стиль mainmenu наследует базовый стиль, поэтому мне пришлось специально поместить border-bottom:none; в мое главное меню, чтобы оно не использовало базовый стиль…
Ответ №1:
Это http://jsfiddle.net/CU9RH/1 / демонстрирует, что для ссылки #mainmenu нет подчеркивания, но есть нижняя пунктирная граница.
Вам нужно будет переопределить нижнюю границу, если вы хотите, чтобы она не отображалась:
#mainmenu A:link { text-decoration: none; border-bottom:none;}
#mainmenu A:visited { text-decoration: none; border-bottom:none;}
#mainmenu A:active { text-decoration: none; border-bottom:none;}
Демонстрация с исправлением: http://jsfiddle.net/uYhtw/1 /
Комментарии:
1. хорошо, это сделало это! Мне нужно было специально установить для нижней границы значение none! Спасибо!!
Ответ №2:
Любопытно, что CSS чувствителен к регистру (по крайней мере, с именами классов и идентификаторами), и, насколько мне известно, это было бы и с «собственными элементами», но в любом случае вы можете переопределить стили, используя !important
ключевое слово:
#mainmenu a:link { text-decoration: none !important; }
Комментарии:
1. Следует отметить, что чувствительность к регистру зависит от doctype и браузера. Типы документов XML или XHTML будут учитывать регистр символов. Вам нужно будет прочитать о других потенциальных типах документов, поскольку я не уверен 😉
2. @PaulZaczkowski Хорошая мысль и да, определенно стоит провести исследование.
Ответ №3:
Это ваш код
#mainmenu A:hover { text-decoration: underline; color: white; }
A:hover { text-decoration: none; color: white; border-bottom:1px solid white; font-style:italic; }
Вы #mainmenu
устанавливаете подчеркивание и цвет, чтобы оно не игнорировалось, если вы хотите, чтобы в #mainmenu не было подчеркивания, тогда вам нужно изменить свой код на
#mainmenu A:hover { text-decoration: none; color: white; border: 0; }
A:hover { text-decoration: underline; color: white; border-bottom:1px solid white; font-style:italic; }
Комментарии:
1. Это состояния, отличные от наведения, для которых OP хочет подавить оформление текста.
2. @Mr.Disappointment Я вводил код OP так, как он у него был. Отображение ошибки, и я еще не закончил ее редактирование