Установите фоновое изображение с непрозрачностью
Итак, я вижу в ссылках CSS, как установить прозрачность изображения и как установить фоновое изображение. Но как я могу объединить эти два, чтобы установить прозрачное фоновое изображение?
У меня есть изображение, которое я хотел бы использовать в качестве фона, но оно слишком яркое - я хотел бы превратить непрозрачность до 0,2. Как я могу это сделать?
#main {
background-image: url(/wp-content/uploads/2010/11/tandem.jpg);
}
Ответы
Ответ 1
Два метода:
- Преобразовать в PNG и сделать исходное изображение 0.2 непрозрачность
- (лучший метод) имеет
<div>
, который position: absolute;
до #main
и ту же высоту, что и #main
, затем примените фоновое изображение и opacity: 0.2; filter: alpha(opacity=20);
.
Ответ 2
#main {
position: relative;
}
#main:after {
content : "";
display: block;
position: absolute;
top: 0;
left: 0;
background-image: url(/wp-content/uploads/2010/11/tandem.jpg);
width: 100%;
height: 100%;
opacity : 0.2;
z-index: -1;
}
Ответ 3
Решение с 1 прозрачным изображением div и NO:
Вы можете использовать функцию multibackground CSS3 и поместить два фонов: один с изображением, другой с прозрачной панелью над ним (потому что я думаю, что нет способа напрямую установить непрозрачность фонового изображения):
background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.7) 0%, rgba(0, 0, 0, 0.7) 100%), url(bg.png) repeat 0 0, url(https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png) repeat 0 0;
background: -moz-linear-gradient(top, rgba(255,255,255,0.7) 0%, rgba(255,255,255,0.7) 100%), url(https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png) repeat 0 0;
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,0.7)), color-stop(100%,rgba(255,255,255,0.7))), url(https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png) repeat 0 0;
background: -webkit-linear-gradient(top, rgba(255,255,255,0.7) 0%,rgba(255,255,255,0.7) 100%), url(https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png) repeat 0 0;
background: -o-linear-gradient(top, rgba(255,255,255,0.7) 0%,rgba(255,255,255,0.7) 100%), url(https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png) repeat 0 0;
background: -ms-linear-gradient(top, rgba(255,255,255,0.7) 0%,rgba(255,255,255,0.7) 100%), url(https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png) repeat 0 0;
background: linear-gradient(to bottom, rgba(255,255,255,0.7) 0%,rgba(255,255,255,0.7) 100%), url(https://cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png) repeat 0 0;
Вы не можете использовать rgba(255,255,255,0.5)
, потому что только он принят только на задней панели, поэтому я использовал сгенерированные градиенты для каждого браузера для этого примера (почему он так длинный). Но концепция такова:
background: tranparentColor, url("myImage");
http://jsfiddle.net/pBVsD/1/
Ответ 4
Простое решение
если вам нужно установить только градиент в фоновое изображение:
background-image: url(IMAGE_URL); /* fallback for older browsers */
background-image: linear-gradient(to bottom, rgba(0,0,0,0.6) 0%,rgba(0,0,0,0.6) 100%), url(IMAGE_URL);
Ответ 5
Я видел это и в CSS3 теперь вы можете разместить код таким образом. Допустим, я хочу, чтобы он охватывал весь фон, я бы сделал что-то подобное. Затем с помощью hsla(0,0%,100%,0.70)
или rgba вы используете белый фон с любой процентной насыщенностью или непрозрачностью, чтобы получить желаемый вид.
.body{
background-attachment: fixed;
background-image: url(../images/Store1.jpeg);
display: block;
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 1;
background-color: hsla(0,0%,100%,0.70);
background-blend-mode: overlay;
background-repeat: no-repeat;
}
Ответ 6
Вы можете использовать CSS psuedo selector :: after для достижения этого. Вот рабочая демонстрация.
![enter image description here]()
.bg-container{
width: 100%;
height: 300px;
border: 1px solid #000;
position: relative;
}
.bg-container .content{
position: absolute;
z-index:999;
text-align: center;
width: 100%;
}
.bg-container::after{
content: "";
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index:99;
background-image: url(https://i.stack.imgur.com/Hp53k.jpg);
background-size: cover;
opacity: 0.4;
}
<div class="bg-container">
<div class="content">
<h1>Background Opacity 0.4</h1>
</div>
</div>
Ответ 7
Я использовал ответ @Dan Eastwell, и он работает очень хорошо. Код похож на его код, но с некоторыми дополнениями.
.granddata {
position: relative;
margin-left :0.5%;
margin-right :0.5%;
}
.granddata:after {
content : "";
display: block;
position: absolute;
top: 0;
left: 0;
background-image: url("/Images/blabla.jpg");
width: 100%;
height: 100%;
opacity: 0.2;
z-index: -1;
background-repeat: no-repeat;
background-position: center;
background-attachment:fixed;
}
Ответ 8
В вашем CSS добавить...
filter: opacity(50%);
В JavaScript используется...
element.style.filter='opacity(50%)';
NB: добавьте префиксы поставщика, как требуется, но Chromium должен быть в порядке.
Ответ 9
Отличный способ сделать это для простого изображения - сделать это, используя только CSS, чтобы установить фон элемента HTML таким образом.
HTML {
background: url('http://www.earthtimes.org/newsimage/eat-lead-by-example-obesity-expert-tells-parents_139.jpg');
width: 100%;
height: 100%;
}
Ответ 10
Ну, единственный способ сделать только прозрачность фона - через RGBa
, но поскольку вы хотите использовать изображение, я бы предложил использовать Photoshop или Gimp, чтобы сделать изображение прозрачным, а затем использовать его в качестве фона.
Ответ 11
Так как мне не нравится ни использование png (более тяжелый, чем jpg), ни дополнительный элемент для установки непрозрачности, и учитывая, что это будет презентационным улучшением, я предлагаю попробовать
JPEG с альфа-каналами, метод, использующий холст.
Возможно, это может быть хорошая техника для реализации, даже я не знаю, применима ли она в вашем конкретном случае.
Ответ 12
Я только что добавил position = absolute, top = 0, width = 100% в #main и установил значение непрозрачности для #background
#main{height:100%;position:absolute; top:0;width:100%}
#background{//same height as main;background-image:url(image URL);opacity:0.2}
Я применил фон к div перед основным.
Ответ 13
Я столкнулся с этим сообщением, так как у меня была такая же проблема, тогда я подумал, зачем обходиться с помощью css, корректируя значения и удаляя обновление, когда вы можете легко настроить непрозрачность в Photoshop? Скопируйте изображение, вставьте его как новый слой, затем переместите ползунок прозрачности.
Ответ 14
У меня была аналогичная проблема, и я просто взял фоновое изображение с фотошопом и создал новый .png с непрозрачностью, в которой я нуждался. Проблема решена, не беспокоясь о том, работал ли мой CSS по всем устройствам и браузерам.