CSS RGBA пограничный / фон альфа двойной
Вопрос
Я работаю на веб-сайте, который имеет много прозрачности, и я подумал, что попытаюсь полностью построить его в RGBA, а затем выполнять отступы для IE. Мне нужен эффект границы стиля «Facebox», где внешняя граница округлая и менее непрозрачная, чем фон коробки, оно окружает.
Последний пример из http://24ays.org/2009/working-with-rgba-colour Кажется, предполагает, что это возможно, но я не могу, кажется, не могу поработать. Когда я пробую следующее:
<!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" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>RGBA Test</title>
<style type='text/css'>
body {
background: #000;
color: #fff;
}
#container {
width: 700px;
margin: 0 auto;
background: rgba(255, 255, 255, 0.2);
border: 10px solid rgba(255, 255, 255, 0.1);
padding: 20px;
}
</style>
</head>
<body>
<div id='container'>
This should look like a facebox.
</div>
</body></html>
Похоже, что фон «расширяется» под границей элемента, что вызывает добавление ценностей пикселей. Таким образом, когда фона, и граница полупрозрачная, граница всегда будет более непрозрачным, чем фон элемента. Это именно противоположность того, что я пытаюсь достичь, но кажется, что он должен быть возможен на основе примеров, которые я видел.
Я также должен добавить, что я не могу использовать другой элемент внутри контейнера, потому что я также собираюсь использовать границы-радиус на контейнере, чтобы получить округлые углы, а вебКиткты квадраты углы дочерних элементов, если у них есть фон Назначено, что, по сути, будет означать закругленную внешнюю границу с квадратным содержимым.
Извините, я не могу опубликовать изображение этого ..., по-видимому, у меня недостаточно повтора, чтобы опубликовать изображение.
Решение
Вы можете использовать новый background-clip: padding-box;
недвижимость, чтобы сделать это. Он рассчитывает, где от должен начаться фон в коробке. Для более подробной информации и примеров проверьте здесь
Другие советы
Тестирование этого в Firefox подтверждает, что вы описываете - и мне немного потребовалось, чтобы осознать последствия этого! Наличие границы менее прозрачной, не будет влиять на прозрачный фон под ним, потому что граница (как вы говорите) добавки.
В этом случае вам придется моделировать эффект, который вы после и работаете с цветами больше, чем альфа:
background: rgba(128, 128, 128, 0.7);
border: 10px solid rgba(0, 0, 0, 0.1);
Попробуй это:
#container {
width: 700px;
margin: 0 auto;
background: rgba(255, 255, 255, 0.2);
border: 10px solid rgba(255, 255, 255, 0.1);
padding: 20px;
/* and here is the fix */
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}