Как затемнить фон с помощью CSS?
у меня есть элемент с текстом в нем. Всякий раз, когда я уменьшаю непрозрачность, я уменьшаю непрозрачность всего тела. Есть ли способ я могу просто сделать background-image
темнее, а не все остальное?
background-image:url('http://fc02.deviantart.net/fs71/i/2011/274/6/f/ocean__sky__stars__and_you_by_muddymelly-d4bg1ub.png');
6 ответов:
просто добавьте этот код в изображение css
background: /* top, transparent black, faked with gradient */ linear-gradient( rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) ), /* bottom, image */ url(http://fc02.deviantart.net/fs71/i/2011/274/6/f/ocean__sky__stars__and_you_by_muddymelly-d4bg1ub.png); }
ссылки: linear-gradient () - CSS / MDN
обновление: не все браузеры поддерживают RGBa, поэтому у вас должен быть "резервный цвет". Этот цвет, скорее всего, будет твердым (полностью непрозрачным) ex:
background:rgb(96, 96, 96)
. Обратитесь к этому блог для поддержки браузера RGBa.
использовать: после psuedo-элемент:
.overlay { position: relative; transition: all 1s; } .overlay:after { content: '\A'; position: absolute; width: 100%; height:100%; top:0; left:0; background:rgba(0,0,0,0.5); opacity: 1; transition: all 0.5s; -webkit-transition: all 0.5s; -moz-transition: all 0.5s; } .overlay:hover:after { opacity: 0; }
Проверьте мою ручку >
вы можете использовать контейнер для фона, помещенный как абсолютный и отрицательный Z-индекс : http://jsfiddle.net/2YW7g/
HTML
<div class="main"> <div class="bg"> </div> Hello World!!!! </div>
CSS
.main{ width:400px; height:400px; position:relative; color:red; background-color:transparent; font-size:18px; } .main .bg{ position:absolute; width:400px; height:400px; background-image:url("http://fc02.deviantart.net/fs71/i/2011/274/6/f/ocean__sky__stars__and_you_by_muddymelly-d4bg1ub.png"); z-index:-1; } .main:hover .bg{ opacity:0.5; }
просто добавить к тому, что уже здесь, используйте следующую конструкцию:
background: -moz-linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,.7)); background: -webkit-linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,.7)); background: linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,.7)); filter: unquote("progid:DXImageTransform.Microsoft.gradient( startColorstr='#b3000000', endColorstr='#b3000000',GradientType=0 )");
...для кроссбраузерной поддержки 70% линейно-градиентного наложения. Чтобы скрасить изображение, вы можете изменить все эти
0,0,0
' s в255,255,255
' s. Если 70% это немного много, идти вперед и изменить.7
. И, для дальнейшего использования проверьте это:http://www.colorzilla.com/gradient-editor/
это может быть возможно сделать с
box-shadow
однако, я не могу получить его, чтобы применить к изображению. Только на сплошном цветном фоне
body { background: #131418; color: #999; text-align: center; } .mycooldiv { width: 400px; height: 300px; margin: 2% auto; border-radius: 100%; } .red { background: red } .blue { background: blue } .yellow { background: yellow } .green { background: green } #darken { box-shadow: inset 0px 0px 400px 110px rgba(0, 0, 0, .7); /*darkness level control - change the alpha value for the color for darken/ligheter effect */ }
Red <div class="mycooldiv red"></div> Darkened Red <div class="mycooldiv red" id="darken"></div> Blue <div class="mycooldiv blue"></div> Darkened Blue <div class="mycooldiv blue" id="darken"></div> Yellow <div class="mycooldiv yellow"></div> Darkened Yellow <div class="mycooldiv yellow" id="darken"></div> Green <div class="mycooldiv green"></div> Darkened Green <div class="mycooldiv green" id="darken"></div>
для меня подход фильтра / градиента не работал (возможно, из-за существующего CSS), поэтому я использовал
:before
псевдо стиль трюк вместо этого:.eventBannerContainer { position: relative; } .eventBannerContainer:before { background-color: black; height: 100%; width: 100%; content: ""; opacity: 0.5; position: absolute; display: block; } /* make any immediate child elements above our darkening mask */ .eventBannerContainer > * { position: relative; }