Как использовать «наведение» в CSS

Я использовал код ниже, чтобы выполнить эту цель:

При наведении мыши на якорь появляется подчеркивание,

но это не сработало,

    <a class="hover">click</a>

    a .hover :hover{
        text-decoration:underline;
    }

Какая правильная версия для этого?


person omg    schedule 25.05.2009    source источник


Ответы (8)


Если вы хотите, чтобы подчеркивание присутствовало при наведении курсора мыши на ссылку, то:

a:hover {text-decoration: underline; }

достаточно, однако вы также можете использовать имя класса «hover», если хотите, и следующее будет в равной степени применимо:

a.hover:hover {text-decoration: underline; }

Кстати, стоит отметить, что имя класса 'hover' на самом деле ничего не добавляет к элементу, поскольку псевдоэлемент a:hover делает то же самое, что и a.hover:hover. Если только это не просто демонстрация использования имени класса.

person David says reinstate Monica    schedule 25.05.2009
comment
Спасибо, Ricebowl, но есть ли способ заставить его работать для якорей без атрибута href? - person omg; 25.05.2009
comment
Я имею в виду, что в IE он работает в Firefox, но не в IE для привязок без атрибута href. - person omg; 25.05.2009
comment
Боюсь, что нет, IE (точно так же, как IE6 и, возможно, IE7 - я не помню) ограничен в использовании :hover, так что только теги ‹a› могут использовать его. IE8, возможно, улучшил это, но я не совсем уверен. - person David says reinstate Monica; 25.05.2009
comment
IE7+ поддерживает псевдокласс :hover для произвольных элементов. - person ajm; 26.05.2009

Есть много способов сделать это. Если вы действительно хотите иметь класс 'hover' в своем элементе A, вам нужно будет сделать:

a.hover:hover { code here }

Опять же, редко бывает такое className, вот как вы делаете обычное наведение:

select:hover { code here }

Вот еще несколько примеров:

1

HTML:

<a class="button" href="#" title="">Click me</a>

CSS:

.button:hover { code here }

2

HTML:

<h1>Welcome</h1>

CSS:

h1:hover { code here }

:hover — один из множества псевдоклассов.

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

HTML:

<a class="home" href="#" title="Go back">Go home!</a>

CSS:

.home { color: red; }
.home:hover { color: green; }
.home:active { color: blue; }
.home:visited { color: black; }

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

Надеюсь это поможет

person SirCommy    schedule 29.09.2012

Не ответ, а объяснение того, почему ваш css не соответствует HTML.

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

a .hover :hover{
   text-decoration:underline;
}

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

<a>
   <span class="hover">
      <span>
         I will become underlined when you hover on me
      <span/>
   </span>
</a> 

Если вы хотите сопоставить ‹a class="hover">I will become underlined when you hover on me</a>, вы должны использовать a.hover:hover, что означает «искать любой элемент с наведением класса и с состоянием наведения».

person valentinas    schedule 28.01.2013

а.наведите: наведите

person Ballsacian1    schedule 25.05.2009

Вам нужно объединить селектор и псевдоселектор. Вам также понадобится элемент стиля, чтобы содержать ваши стили. Большинство людей используют внешнюю таблицу стилей для множества преимуществ (кэширование для одного).

<a class="hover">click</a>

<style type="text/css">

    a.hover:hover {
        text-decoration: underline;

    }

</style>

Просто примечание: класс hover не нужен, если только вы не определяете только определенные ссылки для такого поведения (что может иметь место).

person alex    schedule 25.05.2009
comment
но это не работает в IE8, может быть, я использую имя класса с "-" в нем? сказать a.hover-ссылка: hover ? - person omg; 25.05.2009
comment
дефисы (-) допустимы в именах классов в CSS. Чтобы ваш селектор выше работал, ваш элемент должен выглядеть как ‹a href= class=hover-link›click‹/a›, а затем наведите указатель мыши на эту ссылку. - person alex; 25.05.2009
comment
Спасибо, Алекс, но есть ли способ заставить его работать для якорей без атрибута href? - person omg; 25.05.2009
comment
Он должен работать с якорями без атрибута href. Могу я спросить, почему вы опускаете это? - person alex; 25.05.2009
comment
Потому что, если добавить href, подчеркивание будет отображаться, даже если курсор не включен, я пока не знаю причину. - person omg; 25.05.2009
comment
Возможно, у вас мог бы быть селектор a[href=], но я не думаю, что это было бы так, учитывая, что вы описали свои навыки CSS как «нуб» (без обид). - person alex; 25.05.2009
comment
Все в порядке, вы очень откровенны, я действительно новичок в CSS -,- - person omg; 25.05.2009
comment
Не волнуйтесь, вы доберетесь туда! Все делают :) - person alex; 25.05.2009

href является обязательным атрибутом элемента привязки, поэтому без него нельзя ожидать, что все браузеры будут обрабатывать его одинаково. Во всяком случае, я где-то читал в комментарии, что вы хотите, чтобы ссылка подчеркивалась только при наведении курсора, а не иначе. Для этого можно использовать следующее, и оно будет применяться только к ссылкам с классом hover:

<a class="hover" href="">click</a>

a.hover {
    text-decoration: none;
}

a.hover:hover {
    text-decoration:underline;
}
person PatrikAkerstrand    schedule 03.07.2009

Вы должны были использовать:

a:hover {
    text-decoration: underline;
}

hover — это псевдокласс в CSS. Нет необходимости назначать класс.

person Alan Haggai Alavi    schedule 25.05.2009
comment
Возможно, он хочет, чтобы такое поведение было только у той задницы, на которую он надевает свой класс hover. - person chaos; 25.05.2009
comment
Да, я пропустил это. Спасибо, хаос. - person Alan Haggai Alavi; 25.05.2009

В прошлый раз я работал над приятным дефектом и больше интересовался, как правильно использовать свойство hover для ссылки тега A и для браузера IE. Странным для меня было то, что IE не смог захватить элемент ссылки тега A на основе простого селектора A. Итак, я узнал, как даже принудительно захватить элемент тега A, и я заметил, что мы должны использовать более конкретный селектор CSS. Вот пример ниже - он работает отлично:

li a[href]:hover {...}
person JPawelHeaven    schedule 02.12.2013