фон при наведении курсора на «подсветку»

0

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

Вот мой текущий HTML и CSS:

<header>
    <img id="logoimg" src = "./images/home.jpg">
    <ul class="top-nav">
            <li><a href=''>Home</a></li>
        <li><a href=''>About Us</a></li>
        <li><a href=''>Products</a></li>
    </ul>
c</header>

.top-nav {
    width: 100%;
    margin: 0;
    padding: 0;
    position: relative;
    background: #296E9A;
    border-radius: 5px;
}

.top-nav li {
    display: inline-block;
    font-size: 14px;
    padding: 0;
    margin: 0;
    width: 100px;
    background: #296E9A;
    text-align: center;
    border-radius: 5px;
}

.top-nav a {
    line-height: 200%;
    color: #FFF;
    text-decoration: none;
    display: block;
    font-weight: bold;
}

.top-nav a:hover {
    background: #000;
    border-radius: 5px;
    opacity: 0.05;
}
Теги:

2 ответа

2
Лучший ответ

Ваш CSS на a:hover имеет непрозрачность 0,05, что приводит к тому, что текст едва заметен.

.top-nav a:hover {
    border-radius: 5px;
    opacity: 0.05; /* remove this */

    background: rgb(36, 105, 147); /* fallback for IE8 support */
    background: rgba(0,0,0,0.05); /* add this for highlighting */
}

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

Добавьте background: rgba() чтобы установить цвет фона с альфа-прозрачностью (это влияет только на фон, а не на текст или на какие-либо дочерние узлы).

Также имейте в виду, что rgba() поддерживает современные браузеры, но не имеет поддержки для IE8 и ниже. Вам нужно будет применить rgb() или любое другое значение цвета в качестве резерва для поддержки совместимости.

Скрипт: http://jsfiddle.net/3yf2Q/2/

Спасибо @setek :)

  • 1
    Стоит отметить, что OP, вероятно, не хочет, чтобы цвет фона подсветки был черным, а просто немного темно-синим. Было бы хорошо изменить свойство background на: background: rgb(36, 105, 147); background: rgba(0,0,0,0.05); как здесь: jsfiddle.net/3yf2Q/2
  • 0
    @setek Вы прибили это. Полагаю, я не понял вопроса с первого раза. rgba(0,0,0,0.05) - это путь при установке непрозрачности только на фоне. Это не будет работать для IE8 и ниже, если вы не примените запасной вариант. Я обновлю свой ответ.
Показать ещё 2 комментария
0

Вам нужно удалить непрозрачность, так как она применима к вашему тексту, или просто укажите непрозрачность: 1; для части li, чтобы поддерживать какую-то подсветку.

.top-nav li {
    display: inline-block;
    font-size: 14px;
    padding: 0;
    margin: 0;
    width: 100px;
    background: #296E9A;
    text-align: center;
    border-radius: 5px;
    opacity: 1;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню