2010-08-19 3 views
2

Как создать меню, в котором только его фон прозрачен? Текст должен сохранить непрозрачную (непрозрачность: 1)Установить непрозрачность в меню, но сохранить текст непрозрачным в CSS

Если я устанавливаю

li:hover { 
    opacity: 0.5 
} 

весь элемент списка становится прозрачным. Как это исправить?

ответ

7

В CSS3 есть новое значение, называемое «rgba», которое позволяет использовать прозрачный цвет в качестве цвета фона. Например:

li:hover { 
    background-color: rgba(255, 255, 255, 0.5); 
} 

Я уверен, что это должно сработать, хотя я просто написал код на месте, чтобы он не мог. Это, однако, придаст вашему меню белый оттенок. Если вы хотите больше узнать о RGBA, перейдите по ссылке: http://css-tricks.com/rgba-browser-support/

+0

Это самый простой решение, но отсутствие поддержки IE и FF2 - это * большие * минусы –

+0

Для OP: имейте в виду, что CSS3 еще не совместим со всеми браузерами. Если это вас не беспокоит, это отличный ответ. –

+0

@Pekka Побей меня. Haha –

0

Вы не можете. Уровень прозрачности передается всем дочерним элементам.

Ваши варианты:

  • Место другой элемент на вершине li, возможно, с использованием position: absolute, который имеет настройку

  • Используйте файл PNG с прозрачностью альфа нормальная непрозрачность, чтобы создать эффект непрозрачности (Потребуются обходные пути для работы в IE6)

  • Используйте новое свойство цвета rgba, как показано на рисунке @hatkirby, если вы можете жить с инк omplete поддержка браузера

0

Вам нужно использовать либо прозрачный PNG изображение, или rgba colour value, на фоне <li> «s, например:

li:hover { 
    background-color: rgba(0, 0, 0, 0.5); 
} 

Или:

li:hover { 
    background: url(a-nice-semi-transparent-png-image.png); 

    /* Supplying just the image file here will make the browser repeat the image 
    file vertically and horizontally, thus taking up all the space, just like a 
    colour would */ 
} 
Смежные вопросы