CSS непрозрачность фона [дубликат]



этот вопрос уже есть ответ здесь:



Я использую что-то похожее на следующий код:



<div style="opacity:0.4; background-image:url(...);">
<div style="opacity:1.0;">
Text
</div>
</div>


Я ожидал, что это сделает фон непрозрачным 0,4 и текст будет иметь 100% непрозрачность. Вместо они оба имеют непрозрачность 0.4.

583   8  

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 значения.

следующие методы могут быть использованы для решения вашей проблемы

  1. метод прозрачности CSS Aplha (не работает в IE 8)

    #div{background-color:rgba(255,0,0,0.5);}
    
  2. используйте прозрачное изображение png в соответствии с вашим выбором в качестве фона.

  3. используйте следующий фрагмент кода 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

    Ничего не найдено.