Вы можете использовать белый или черный фон с размером opacity, подходящим для количества, которое вы хотите осветлить. Непрозрачность немного сложнее использовать (по сравнению с другими более распространенными свойствами CSS), поскольку для этого требуются хаки для браузера. Согласно this blog post следующее (Hacky) CSS будет работать во всех браузерах, чтобы поддержать 50% непрозрачности:
.show-50 { -khtml-opacity:.50; -moz-opacity:.50; -ms-filter:"alpha(opacity=50)"; filter:alpha(opacity=50); opacity:.50; zoom:1; }
BTW, я ответил another stackoverflow question related to Opacity, и он содержит некоторые примеры кода JQuery, которые могут быть использованы для применения непрозрачности в браузере -сторонний путь. Вы можете использовать это вместо этого, если CSS выше сделает вас кляпом. :-) Обратите внимание, что я добавил «zoom: 1» выше, чтобы гарантировать, что элемент имеет «макет», который является необходимым условием для применения прозрачности 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. Я подозреваю, что вы можете проявить творческий подход и найти способы улучшить это, чтобы текст оставался одним и тем же цветом во всех браузерах. Реальная реализация, вероятно, также захочет использовать абсолютное позиционирование, а не мой негативный верхний маркер.
Нет никакого чистого CSS-способа изменить цвета, потому что не имеет таких вещей, как уравнения, функции , или переменные. Будет интересно посмотреть, есть ли у Justin непрозрачность. – davethegr8