Вы можете использовать белый или черный фон с непрозрачностью , соответствующей нужной вам величине яркости. Непрозрачность немного сложна в использовании (по сравнению с другими более распространенными свойствами CSS), поскольку она требует взломов, специфичных для браузера. Согласно этой записи в блоге , следующий (хакерский) CSS будет работать во всех браузерах для поддержки непрозрачности 50%:
.show-50 { -khtml-opacity:.50; -moz-opacity:.50; -ms-filter:"alpha(opacity=50)"; filter:alpha(opacity=50); opacity:.50; zoom:1; }
Кстати, я ответил на другой вопрос о стекопереработке, связанный с Opacity , и он содержит несколько примеров кода jQuery, которые можно использовать для применения прозрачности нейтральным для браузера способом. Вы можете использовать это вместо этого, если CSS выше заставляет вас заткнуться. :-) Обратите внимание, что я добавил «zoom: 1» выше, чтобы убедиться, что элемент имеет «layout», что является специфическим условием IE для применения непрозрачности - эта проблема также описана в этой теме, связанной выше.
Вы также можете использовать PNG-изображение, которое имеет белый цвет, но имеет значение прозрачности, которое вы предпочитаете. Это требует обычного решения PNG-fix в IE6.
Вот пример кода, показывающий, что возможно (и некоторые ограничения):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<style type="text/css">
.button { background-color:green; height:30px; width:100px; border: solid 1px red; color:#FFF; margin:20px; text-align:center; }
.buttonText { height:30px; width:100px; color:#FFF; margin:20px; text-align:center; }
.show-50 { -khtml-opacity:.50; -moz-opacity:.50; -ms-filter:"alpha(opacity=50)"; filter:alpha(opacity=50); opacity:.50; zoom:1; }
.lighter { background-color:#CCCCCC; height:100%; width:100%; }
.darker { background-color:#000000; height:100%; width:100%;}
.whitetext {color:#fff; height:100%; width:100%; padding-top:6px;}
.moveText {margin-top:-52px; color:#fff; padding-top:6px; z-index: 10; }
</style>
</head>
<body>
<div class="button"></div>
<div class="buttonText moveText">Regular button</div>
<div class="button"><div class="show-50 lighter"></div></div>
<div class="buttonText moveText">Lighter button</div>
<div class="button"><div class="show-50 darker"></div></div>
<div class="buttonText moveText">Darker button</div>
</body>
</html>
На IE8 текст выглядит идеально (он же белый). На FF и Safari текст, к сожалению, затемнен. Хак выше, где я поместил текст в другой DIV, обманул IE для отображения белого текста на разноцветных фонах, но тот же трюк не работал на FF и Safari. Я подозреваю, что вы могли бы проявить творческий подход и найти способы улучшить это, чтобы текст оставался одинаковым во всех браузерах. Реальная реализация, вероятно, также хотела бы использовать абсолютное позиционирование, а не мой отрицательный взлом верхнего края.