CSS непрозрачность фона [дубликат]
этот вопрос уже есть ответ здесь:
Я использую что-то похожее на следующий код:
<div style="opacity:0.4; background-image:url(...);">
<div style="opacity:1.0;">
Text
</div>
</div>
Я ожидал, что это сделает фон непрозрачным 0,4 и текст будет иметь 100% непрозрачность. Вместо они оба имеют непрозрачность 0.4.
8 ответов:
дети наследуют прозрачность. Было бы странно и неудобно, если бы они этого не сделали.
вы можете использовать полупрозрачный png для фонового изображения, или использовать RGBa (a для Альфа) цвет для вашего цвета фона.
пример, 50% выцветший черный фон:
<div style="background-color:rgba(0, 0, 0, 0.5);"> <div> Text added. </div> </div>
вы можете использовать CSS 3
:beforeчтобы иметь полупрозрачный фон, и вы можете сделать это только с одним контейнером. Используйте что-то вроде этого<article> Text. </article>затем применить некоторые CSS
article { position: relative; z-index: 1; } article::before { content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: .4; z-index: -1; background: url(path/to/your/image); }образец:http://codepen.io/anon/pen/avdsi
Примечание: возможно, Вам потребуется настроить
z-indexзначения.
следующие методы могут быть использованы для решения вашей проблемы
метод прозрачности CSS Aplha (не работает в IE 8)
#div{background-color:rgba(255,0,0,0.5);}используйте прозрачное изображение png в соответствии с вашим выбором в качестве фона.
используйте следующий фрагмент кода css для создания кроссбраузерного Альфа-прозрачного фона. Вот пример с
#000000@ 0.4% непрозрачность.div { background:rgb(0,0,0); background: transparent; background:rgba(0,0,0,0.4); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#66000000,endColorstr=#66000000); zoom: 1; } .div:nth-child(n) { filter: none; }для более подробной информации что касается этой техники, см. этой, который имеет онлайн генератор css.
Я бы сделал что-то вроде этого
<div class="container"> <div class="text"> <p>text yay!</p> </div> </div>CSS:
.container { position: relative; } .container::before { position: absolute; top: 0; left: 0; bottom: 0; right: 0; background: url('/path/to/image.png'); opacity: .4; content: ""; z-index: -1; }должны работать. Это предполагает, что вы должны иметь полупрозрачное изображение btw, а не цвет (для которого вы должны просто использовать rgba). Также предполагается, что вы не можете просто изменить непрозрачность изображения заранее в photoshop.
.transbg{/* Fallback for web browsers that don't support RGBa */ background-color: rgb(0, 0, 0); /* RGBa with 0.6 opacity */ background-color: rgba(0, 0, 0, 0.6); /* For IE 5.5 - 7*/ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); /* For IE 8*/ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";}
вы можете использовать sass
transparentize, я нашел его самым полезным и простым в использовании.transparentize(rgba(0, 0, 0, 0.5), 0.1) => rgba(0, 0, 0, 0.4) transparentize(rgba(0, 0, 0, 0.8), 0.2) => rgba(0, 0, 0, 0.6)Подробнее: http://sass-lang.com/documentation/Sass/Script/Functions.html#transparentize-instance_method
это связано с тем, что внутренний div имеет 100% непрозрачности div, в который он вложен (который имеет 40% непрозрачности).
для того, чтобы обойти это, есть несколько вещей, которые вы могли бы сделать.
вы можете создать два отдельных ДИВС вот так:
<div id="background"></div> <div id="bContent"></div>установите желаемую прозрачность css и другие свойства для фона hte и используйте свойство z-index (Z-индекс), чтобы стиль и положение bcontent div. С помощью этого вы можете разместить div overtope фон div без того, чтобы он был непрозрачным.
другой вариант:RGBa. Это позволит вам вложить свои дивы и по-прежнему достичь специфической непрозрачности div.
последний вариант-просто сделать полупрозрачным .png изображение цвета, который вы хотите в желаемом редакторе изображений по выбору, установите свойство background-image на url изображения, а затем вам не придется беспокоиться о том, чтобы возиться с css и потерять возможность и организация вложенной структуры div.
просто убедитесь, что ширина и высота для переднего плана одинаковы с фоном, или попробуйте иметь свойства сверху, снизу, слева и справа.
<style> .foreground, .background { position: absolute; } .foreground { z-index: 1; } .background { background-image: url(your/image/here.jpg); opacity: 0.4; } </style> <div class="foreground"></div> <div class="background"></div>
Comments