Обновленный ответ
Лучший способ сделать это сейчас - использовать цвета rGBA. Это не будет работать для старых браузеров, но вы можете позволить дизайну изящно ухудшаться, просто передавая им сплошной цвет. Пример:
CSS
.parent {
background: gray; /* older browsers */
background: rgba(128,128,128,0.7); /* newer browsers */
}
.child {
background: blue;
}
Оригинальный ответ
Это раздражает , но CSS не позволяет этого. Установка непрозрачности для одного элемента означает, что ни один дочерний элемент не может иметь большей непрозрачности. (100% непрозрачности 25% - это верно?)
Итак, одним из решений является использование крошечного прозрачного PNG в качестве повторяющегося фонового изображения для обхода этого. Единственная проблема - IE6, и есть отличный обходной путь, называемый supersleight .
(Обновлено. Думаю, что сверхлегкий подойдет вам.)
Обновление
Вот очень простой тестовый пример. Создайте изображение (скажем, PNG с 50% черной заливкой), а затем создайте этот файл - сохраните их в той же папке. Если вы не видите тонкую рамку с прозрачным фоном за «материалом», значит, вы либо неправильно сохраняете файл, либо сохранили изображение в другом месте.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style type="text/css">
body { background:white; }
#overlay { background-image:url(test.png); }
</style>
</head>
<body>
<div id="overlay">stuff</div>
</body>
</html>