Можно ли присвоить свойство opacity
свойству background
только div
, а не текст на нем?
Я пробовал:
background: #CCC;
opacity: 0.6;
но это не изменяет непрозрачность.
Можно ли присвоить свойство opacity
свойству background
только div
, а не текст на нем?
Я пробовал:
background: #CCC;
opacity: 0.6;
но это не изменяет непрозрачность.
Похоже, вы хотите использовать прозрачный фон, и в этом случае вы можете попробовать использовать функцию rgba()
:
rgba()
Цвета могут быть определены в модели Red-green-blue-alpha (RGBa) с использованием функциональной нотации
rgba()
. RGBa расширяет цветную модель RGB, чтобы включить альфа-канал, позволяя определять непрозрачность цвета.a
означает непрозрачность: 0 = прозрачный; 1 = непрозрачная;rgba(255,0,0,0.1) /* 10% opaque red */ rgba(255,0,0,0.4) /* 40% opaque red */ rgba(255,0,0,0.7) /* 70% opaque red */ rgba(255,0,0, 1) /* full opaque red */
Использование образца:
#div {
background: rgb(54, 25, 25); /* Fall-back for browsers that don't
support rgba */
background: rgba(54, 25, 25, .5);
}
Отметьте http://caniuse.com/#search=rgba, чтобы увидеть поддержку браузеров
Самый простой способ сделать это - 2 divs, 1 с фоном и 1 с текстом:
#container {
position: relative;
width: 300px;
height: 200px;
}
#block {
background: #CCC;
filter: alpha(opacity=60);
/* IE */
-moz-opacity: 0.6;
/* Mozilla */
opacity: 0.6;
/* CSS3 */
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#text {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div id="container">
<div id="block"></div>
<div id="text">Test</div>
</div>
Это будет работать с каждым браузером
div {
-khtml-opacity:.50;
-moz-opacity:.50;
-ms-filter:"alpha(opacity=50)";
filter:alpha(opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
opacity:.50;
}
Если вы не хотите, чтобы прозрачность влияла на весь контейнер и его детей, проверьте это обходное решение. Чтобы достичь этого, у вас должен быть абсолютно позиционированный ребенок с относительно позиционированным родителем. http://www.impressivewebs.com/css-opacity-that-doesnt-affect-child-elements/
Проверьте рабочую демонстрацию на http://www.impressivewebs.com/demo-files/css-opacity/css-opacity-demo.html
ТОЛЬКО ДЛЯ МЕНЬШЕГО ПОЛЬЗОВАТЕЛЯ:
Если вам не нравится устанавливать цвета с помощью RGBA, но, используя HEX, есть решения.
Вы можете использовать mixin как:
.transparentBackgroundColorMixin(@alpha,@color) {
background-color: rgba(red(@color), green(@color), blue(@color), @alpha);
}
И используйте его как
.myClass {
.transparentBackgroundColorMixin(0.6,#FFFFFF);
}
На самом деле это то, что встроенная функция LESS также обеспечивает:
.myClass {
background-color: fade(#FFFFFF, 50%);
}
Смотрите Как преобразовать цвет HEX в rgba с помощью компилятора Less?
Мой трюк состоит в том, чтобы создать прозрачный .png с цветом и использовать background:url()
.
У меня была та же проблема. Я хочу 100% прозрачный цвет фона, просто используйте этот код, он отлично работает для меня:
rgba(54, 25, 25, .00004);
Вы можете увидеть примеры на слева на этой веб-странице (область формы контакта)
Отличный способ сделать это - использовать css3.
Создайте div ширину класса - например. supersizer поверх вашей страницы:
затем задайте следующие css-свойства:
.supersizer {
background: url("http://fc06.deviantart.net/fs70/f/2012/099/d/f/stackoverflow_16x16_icon_by_muntoo_stock-d4vl2v4.png") no-repeat center center fixed;
width: 100%;
height: 100%;
position: fixed;
z-index: -1;
opacity: 0.5;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
top: 0;
}
<div class="supersizer"></div>
Для всех, кто встречает этот поток, здесь script называется thatsNotYoChild.js, который я только что написал, который автоматически решает эту проблему:
http://www.impressivewebs.com/fixing-parent-child-opacity/
В принципе, он отделяет дочерние элементы от родительского элемента, но сохраняет элемент в том же физическом местоположении на странице.
Самое простое решение - создать 3 divs
. Один из них будет содержать другие 2, один с прозрачным фоном и один с контентом. Сделайте первое относительное положение div и установите значение с прозрачным фоном на отрицательный z-index
, затем отрегулируйте положение содержимого, чтобы оно соответствовало прозрачному фону. Таким образом, у вас не будет проблем с абсолютным позиционированием.
использовать
background:url("location of image");//use an image with opacity
Этот метод будет работать во всех браузерах
Вы не можете. У вас должен быть отдельный div, который является именно этим фоном, так что вы можете применить к нему непрозрачность.
Я попытался сделать это недавно, и поскольку я уже использовал jQuery, я обнаружил, что нижеследующее - это наименьшая проблема:
text
div сплошной цвет фона, потому что это будет значение по умолчанию без JS.text
и примените его к div background
.Я уверен, что есть какой-то способ ниндзя CSS, чтобы сделать все это с помощью только плавающих или чего-то еще, но у меня не было терпения, чтобы понять это.