Непрозрачность CSS и дочерние элементы
<style type="text/css">
div#foo {
background: #0000ff;
width: 200px;
height: 200px;
opacity: 0.30;
filter: alpha(opacity = 30);
}
div#foo>div {
color: black;
opacity:1;
filter: alpha(opacity = 100);
}
</style>
<div id="foo">
<div>Lorem</div>
<div>ipsum</div>
<div>dolor</div>
</div>
В приведенном выше примере непрозрачность div#foo
наследуется дочерними элементами, в результате чего текст становится почти нечитаемым. Я предполагаю, что неправильно сказать, что он унаследован, непрозрачность применяется к родительскому div, а дети - часть этого, поэтому попытка переопределить его для дочерних элементов не работает, потому что технически они непрозрачны.
Я обычно просто использую фоновое изображение alpha png в таких случаях, но сегодня мне интересно, есть ли лучший способ сделать div полупрозрачным, не влияя на содержимое.
Ответы
Ответ 1
Вы можете использовать rgba().
div#foo
{
background: rgba(0, 0, 255, 0.3);
}
Чтобы заставить его работать в старых интернет-исследователях, используйте CSS PIE. Существуют некоторые ограничения, но они обрабатываются обратно совместимым способом: значение RGB будет отображаться правильно, а непрозрачность будет проигнорирована.
Ответ 2
Лучший способ - установить прозрачный png на фон.
Ответ 3
Если вы используете непрозрачность, вам придется поместить их в отдельный DIV, а затем выровнять их вместе. Фоновый DIV будет иметь меньшую непрозрачность, а переднего плана DIV будет иметь ваш контент со 100% непрозрачностью.