Ответ 1
Возьмите изображение в редактор изображений, уменьшите непрозрачность, сохраните его как .png и используйте это вместо.
Можно ли установить непрозрачность фонового изображения, не влияя на непрозрачность дочерних элементов?
Все ссылки в нижнем колонтитуле нуждаются в специальной марке (фоновое изображение), а непрозрачность настраиваемой пули должна быть 50%.
<div id="footer">
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li><a href="#">Link 5</a></li>
</ul>
</div>
#footer ul li {
background: url(/images/arrow.png) no-repeat 0 50%;
}
Я попытался установить непрозрачность элементов списка на 50%, но затем непрозрачность текста ссылки также составляет 50% - и, похоже, непрозрачность дочерних элементов не представляется reset:
#footer ul li {
background: url(/images/arrow.png) no-repeat 0 50%;
/* will also set the opacity of the link text */
opacity: 0.5;
}
Я также пытался использовать rgba, но это не влияет на фоновое изображение:
#footer ul li {
/* rgba doesn't apply to the background image */
background: rgba(255, 255, 255, 0.5) url(/images/arrow.png) no-repeat 0 50%;
}
Возьмите изображение в редактор изображений, уменьшите непрозрачность, сохраните его как .png и используйте это вместо.
Это будет работать с каждым браузером
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/
Если вы используете изображение в качестве пули, вы можете рассмотреть: перед псевдоэлементом.
#footer ul li {
}
#footer ul li:before {
content: url(/images/arrow.png);
filter:alpha(opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
opacity:.50;
}
Вы можете использовать CSS linear-gradient()
с rgba()
.
div {
width: 300px;
height: 200px;
background: linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,.5)), url("https://i.imgur.com/xnh5x47.jpg");
}
span {
background: black;
color: white;
}
<div><span>Hello world.</span></div>
Вы можете поместить изображение в div: after или div: before и установить непрозрачность на этом виртуальном div
div:after {
background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/3/owl1.jpg);
opacity: 0.25;
}
найдено здесь http://css-tricks.com/snippets/css/transparent-background-images/
#footer ul li {
position: relative;
opacity: 0.99;
}
#footer ul li::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
z-index: -1;
background: url(/images/arrow.png) no-repeat 0 50%;
opacity: 0.5;
}
Взлом с непрозрачностью .99 (менее 1) создает z-индексный контекст, поэтому вы не можете беспокоиться о глобальных значениях z-индекса. (Попробуйте удалить его и посмотреть, что произойдет в следующем демо, где родительская обложка имеет положительный z-индекс.)
Если ваш элемент уже имеет z-индекс, вам не нужен этот хак.
К сожалению, во время написания этого ответа для этого не существует нет прямого пути. Вам необходимо:
Чтобы действительно настроить мелодию, я рекомендую разместить соответствующие подборки в оболочках с таргетингом на браузер. Это было единственное, что сработало для меня, когда я не мог заставить IE7 и IE8 "хорошо играть с другими" (поскольку в настоящее время я работаю в компании-разработчике программного обеспечения, которая продолжает их поддерживать).
/* color or background image for all browsers, of course */
#myBackground {
background-color:#666;
}
/* target chrome & safari without disrupting IE7-8 */
@media screen and (-webkit-min-device-pixel-ratio:0) {
#myBackground {
-khtml-opacity:.50;
opacity:.50;
}
}
/* target firefox without disrupting IE */
@-moz-document url-prefix() {
#myBackground {
-moz-opacity:.50;
opacity:0.5;
}
}
/* and IE last so it doesn't blow up */
#myBackground {
opacity:.50;
filter:alpha(opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
}
У меня могут быть избыточности в приведенном выше коде - если кто-то хочет очистить его дальше, не стесняйтесь!
Свойству "filter" требуется целое число для процента непрозрачности вместо double, чтобы работать для IE7/8.
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);
P.S.: Я отправляю это как ответ, так как для редактирования требуется как минимум 6 измененных символов.
Если вам нужно установить непрозрачность только на пулю, почему бы вам не установить альфа-канал прямо в изображение? Кстати, я не думаю, что есть способ установить непрозрачность фонового изображения с помощью CSS без изменения непрозрачности всего элемента (и его детей тоже).
Просто чтобы добавить к выше... вы можете использовать альфа-канал с новыми атрибутами цвета, например. rgba (0,0,0,0) ok, так что это черное, но с нулевой прозрачностью, так как родитель не влияет на ребенка. Это работает только на Chrome, FF, Safari и... Я тонкий O.
конвертировать шестнадцатеричные цвета в RGBA
Я нашел довольно хороший и простой учебник по этой проблеме. Я думаю, что он отлично работает (и хотя он поддерживает IE, я просто говорю своим клиентам использовать другие браузеры):
прозрачность фона CSS без влияния на дочерние элементы, через RGBa и фильтры
Оттуда вы можете добавить поддержку градиента и т.д.
#footer ul li
{
position:relative;
list-style:none;
}
#footer ul li:before
{
background-image: url(imagesFolder/bg_demo.png);
background-repeat:no-repeat;
content: "";
top: 5px;
left: -10px;
bottom: 0;
right: 0;
position: absolute;
z-index: -1;
opacity: 0.5;
}
Вы можете попробовать этот код. Я думаю, что это сработает. Вы можете посетить демонстрацию