Как сделать полупрозрачный фон?


179

Мне нужно сделать белый фон на 50% прозрачным, не влияя ни на что другое. Как мне это сделать?


Вот ссылка на статью, которая описывает метод реализации прозрачности с помощью CSS. Domedia.org/oveklykken/css-transparency.php Будьте осторожны, хотя кажется, что кросс-браузерная поддержка может быть проблемой, которая может привести к изменению вашей реализации.
Bnjmn

3
Вы имеете в виду, как установить непрозрачность для фона div, не затрагивая вложенные элементы?
Бен


Ответы:


318

Используйте rgba():

.transparent {
  background-color: rgba(255,255,255,0.5);
}

Это даст вам непрозрачность 50%, в то время как содержимое поля будет по-прежнему иметь непрозрачность 100%.

Если вы используете opacity:0.5, контент будет блеклым, а также фон. Следовательно, не используйте его.


3
да, IE поддерживает rgba, его синтаксис #ARGB и записывается в виде фильтра: progid: DXImageTransform.Microsoft.gradient (startColorstr = # AARRGGBBAA, endColorstr = # AARRGGBBAA); это в основном градиент статического цвета, но с прозрачностью.
Тарун

Изменить background:сbackground-color:
Габриэлизало

background-colorне правильнее чем background.
Шон

@Sean Это более конкретный и показательный? Лично я предпочитаю использовать это в этом случае, но есть ли причина, которая не является хорошим предпочтением?
Дэйв Слуцкин

1
@DaveSlutzkin Это хорошее предпочтение, и в этом нет ничего плохого, но редактирование не должно производиться на основе личных предпочтений. В противном случае вопросы будут колебаться между различными версиями, так как люди с противоположными предпочтениями сталкиваются с ними.
Шон

12

Это работает, но все дочерние элементы этого класса также станут прозрачными, без какого-либо способа предотвратить это.

.css-class-name {
    opacity:0.8;
}

9

Если вы хотите сделать прозрачный фон серым, попробуйте:

   .transparent{
       background:rgba(1,1,1,0.5);
   }

3

Хорошо знать

Некоторым веб-браузерам сложно отображать текст с тенями поверх прозрачного фона. Тогда вы можете использовать полупрозрачное изображение 1x1 PNG в качестве фона.

Заметка

Помните, что IE6 не поддерживает файлы PNG.


2
IE6 поддерживает PNG, даже прозрачные: filter: progid: DXImageTransform.Microsoft.AlphaImageLoader (enabled = true, sizingMethod = scale, src = '/ filename.png');
manmal

@manmal, но где вы положили IE исправить? Прямо в файле сайта .css?
Талатта

1
@ Thalatta да, просто попробуй.
manmal

3

НЕ используйте 1x1 полупрозрачный PNG. Размер PNG до 10x10, 100x100 и т. Д. Все, что имеет смысл на вашей странице. (Я использовал PNG размером 200x200, и он был размером всего 0,25 КБ, поэтому здесь нет особого значения для размера файла.)

После посещения этого поста я создал свою веб-страницу с 3, 1x1 PNG с различной прозрачностью.

Dreamweaver CS5 был танкованным. У меня были вспышки назад в DOS !!! Видимо, всякий раз, когда я пытался прокрутить, вставить текст, в основном сделать что-нибудь, DW пытался перезагрузить полупрозрачные области 1x1 пикселя за раз ... YIKES!

Техническая поддержка Adobe даже не знала, в чем проблема, но сказала мне перестроить файл (он работал на их системах, между прочим). Только когда я загрузил первый прозрачный PNG-файл в css-файл, док снова углубился.

Затем я нашел на другом справочном сайте сообщение о сбое PNG в Dreamweaver. Размер вашего PNG вверх; в этом нет недостатка.


13
Размер PNG только потому, что ваш инструмент настолько дрянной, что не поддерживает его? Действительно ...
Юрчик

0

Несмотря на то, что ни один из ответов в этой теме не может быть использован повсеместно. Использование rgba для создания прозрачных цветовых масок - это не совсем понятно, как это сделать с фоновыми изображениями.

Мое решение работает для фоновых изображений или цветных фонов.

#parent {
    font-family: 'Open Sans Condensed', sans-serif;
    font-size: 19px;
    text-transform: uppercase;
    border-radius: 50%;
    margin: 20px auto;
    width: 125px;
    height: 125px;
    background-color: #476172;
    background-image: url('https://unsplash.it/200/300/?random');
    line-height: 29px;
    text-align:center;
}

#content {
    color: white;
    height: 125px !important;
    width: 125px !important;
    display: table-cell;
    border-radius: 50%;
    vertical-align: middle;
    background: rgba(0,0,0, .3);
}
<h1 id="parent"><a href="" id="content" title="content" rel="home">Example</a></h1>


0
div.main{
     width:100%;
     height:550px;
     background: url('https://images.unsplash.com/photo-1503135935062-
     b7d1f5a0690f?ixlib=rb-enter code here0.3.5&ixid=eyJhcHBfaWQiOjEyMDd9&s=cf4d0c234ecaecd14f51a2343cc89b6c&dpr=1&auto=format&fit=crop&w=376&h=564&q=60&cs=tinysrgb') no-repeat;
     background-position:center;
     background-size:cover 
}
 div.main>div{
     width:100px;
     height:320px;
     background:transparent;
     background-attachment:fixed;
     border-top:25px solid orange;
     border-left:120px solid orange;
     border-bottom:25px solid orange;
     border-right:10px solid orange;
     margin-left:150px 
}

введите описание изображения здесь


Спасибо за этот фрагмент кода, который может предоставить некоторую ограниченную, немедленную помощь. Надлежащее объяснение было бы значительно улучшить свою долгосрочную ценность , показывая , почему это хорошее решение проблемы, и сделает его более полезным для читателей будущих с другими подобными вопросами. Пожалуйста, измените свой ответ, чтобы добавить некоторые объяснения, в том числе предположения, которые вы сделали.
iBug

-2

Попробуй это:

.transparent
{ 
  opacity:.50;
  -moz-opacity:.50; 
  filter:alpha(opacity=50); 
}

12
это сделает содержимое с непрозрачностью 50%.
Тарун

Это может быть легко исправлено с помощью css:, .transparent * { opacity:1; }если, например, элемент с transparentклассом не имеет внутреннего html
Тим Кук
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.