Изменение непрозрачности фонового изображения
У меня есть элемент div с текстовыми блоками и родительский div, в котором я установил фоновое изображение. Теперь я хочу уменьшить непрозрачность фонового изображения. Пожалуйста, предложите, как я могу это сделать.
Спасибо заранее.
EDIT:
Я хочу изменить способ публикации моего блога на blogger.com, отредактировав содержимое html. Код html выглядит следующим образом:
<div>
//my blog post
</div>
Я попытался окружить весь код выше элементом div и установить непрозрачность каждого div отдельно, как показано ниже:
<div style="background-image:url("image.jpg"); opacity:0.5;">
<div style="opacity:1;">
//my blog post
</div>
</div>
Но он не работает.
Ответы
Ответ 1
Ничего не называют фоновой непрозрачностью. Непрозрачность применяется к элементу, его содержимому и всем его дочерним элементам. И это поведение нельзя изменить, просто переопределив непрозрачность в дочерних элементах.
Прозрачность Child vs parent была давней проблемой, и наиболее распространенным решением для нее является цвет фона rgba(r,g,b,alpha)
. Но в этом случае, поскольку это фоновое изображение, это решение не будет работать. Одним из решений было бы создание изображения в виде PNG с требуемой непрозрачностью в самом изображении. Другим решением было бы вывести ребенка и сделать его абсолютно позиционированным.
Ответ 2
Вы не можете напрямую использовать прозрачность на фоновых изображениях, но вы можете добиться этого эффекта примерно так:
http://jsfiddle.net/m4TgL/
HTML:
<div class="container">
<div class="content">//my blog post</div>
</div>
CSS
.container { position: relative; }
.container:before {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 1;
background-image: url('image.jpg');
opacity: 0.5;
}
.content {
position: relative;
z-index: 2;
}
Ответ 3
В настоящее время это возможно сделать с помощью CSS-свойства "background-blend-mode".
<div id="content">Only one div needed</div>
div#content {
background-image: url(my_image.png);
background-color: rgba(255,255,255,0.6);
background-blend-mode: lighten;
/* You may add things like width, height, background-size... */
}
Он смешает фоновый цвет (белый, 0.6 непрозрачность) на фоновое изображение. Подробнее здесь (W3S).
Ответ 4
Вы можете создать несколько div и сделать это:
<div style="width:100px; height:100px;">
<div style="position:relative; top:0px; left:0px; width:100px; height:100px; opacity:0.3;"><img src="urltoimage" alt=" " /></div>
<div style="position:relative; top:0px; left:0px; width:100px; height:100px;"> DIV with no opacity </div>
</div>
Я сделал пару раз... Простой, но эффективный...
Ответ 5
Отвечая на более ранний комментарий, вы можете изменить фон по переменной в примере "контейнер", если CSS находится на вашей php-странице, а не в таблице стилей CSS.
$bgimage = '[some image url];
background-image: url('<?php echo $bgimage; ?>');
Ответ 6
Что я сделал:
<div id="bg-image"></div>
<div class="container">
<h1>Hello World!</h1>
</div>
CSS:
html {
height: 100%;
width: 100%;
}
body {
height: 100%;
width: 100%;
}
#bg-image {
height: 100%;
width: 100%;
position: absolute;
background-image: url(images/background.jpg);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
opacity: 0.3;
}
Ответ 7
и вы можете сделать это с помощью простого кода:
filter:alpha(opacity=30);
-moz-opacity:0.3;
-khtml-opacity: 0.3;
opacity: 0.3;