Как получить непрозрачный текст в div с прозрачностью?

#html #css

#HTML #css

Вопрос:

Я сделал несколько поисковых запросов в Google для этого, и есть много различных примеров, некоторые устаревшие, некоторые нет.

Я также взглянул на пример внизу на http://www.w3schools.com/Css/css_image_transparency.asp это похоже на то, чего я хочу достичь. В приведенном примере текст в div также немного прозрачен, но его трудно разглядеть, потому что это черный текст на белом div.

У меня есть фоновое изображение с большим количеством черных элементов и, кроме того, черный div с непрозрачностью 55%, когда я добавляю белый текст поверх этого, некоторые из очень темных элементов на фоновом изображении слегка видны сквозь белый текст, который мне не нужен.

У кого-нибудь есть недавний пример / рекомендации по тому, как этого добиться (с помощью прозрачного png или css)? Он не должен поддерживать IE 6..

Заранее спасибо.

Ответ №1:

Милан почти прав. Вы захотите сделать фон прозрачного div прозрачным с помощью RGB. Для черных это было бы (0,0,0). Чтобы добавить прозрачность, вы просто добавляете десятичную дробь (аналогично ‘opacity: .55’ для CSS; таким образом, чтобы получить 55% непрозрачного черного фона, вы должны использовать

 background: rgba(0,0,0,0.55);
 

Итак, чтобы создать пример div с фоном непрозрачности 55% с белым текстом, используйте:

 .blackopaque {
  background:rbga(0,0,0,0.55);
  color:#ffffff;
}
 

«Фон» изменяет фон, а цвет изменяет цвет текста (в данном случае белый).
Надеюсь, это поможет!
Мэтт

РЕДАКТИРОВАТЬ: поддержка IE Добавить поддержку в IE легко, все, что вам нужно сделать, это специально настроить пользователей IE с их собственной таблицей стилей для этого элемента. Откройте заголовочный файл вашей темы, допустим, у вас есть таблица стилей, разработанная специально для IE с прозрачным PNG, чтобы получить эффект прозрачного черного цвета с именем IE.css. Вы бы хотели вставить этот код под существующим включением CSS:

 <!--[if IE]>
    <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'template_url' ); ?>/IE.css" />
<![endif]-->
 

Эта условная таблица стилей становится доступной только для пользователей IE, поэтому остальные, кхм, более продвинутые браузеры могут пользоваться RGBa.

Для таблицы стилей IE вам нужно что-то вроде этого:

 .blackopaque {
background:url('*link to your 55% opaque png file*')
color:#ffffff;
}
 

ОБРАТИТЕ внимание, что вам нужно будет включить только одно это правило в таблицу стилей IE, просто чтобы оно переопределяло правило по умолчанию для этого фона.

Комментарии:

1. Если бы вы могли «проверить» мой ответ как правильный, я был бы вам очень признателен!

2. Привет, Мэтт, это не работает в IE7, хотя (еще не тестировал 8 и 9), поэтому я также посмотрю на решение Милана

3. Я обновил свой ответ решением, которое использует RBGa для новых браузеров и использует прозрачный PNG для IE, я думаю, это именно то, что вы ищете.

Ответ №2:

RGBA не поддерживается до IE9, поэтому лучше всего, если вам нужно поддерживать более ранние версии IE, — это просто полупрозрачный PNG.

Ответ №3:

Извините, я думал, что текст должен быть прозрачным, вот прозрачный фон

 #content {
   position:relative;
   z-index:1;
}

#content:before {
   content:"";
   position:absolute;
   z-index:-1;
   top:0;
   bottom:0;
   left:0;
   right:0;
   background:url(your_image.jpg);
   opacity:0.7;
}
 

Комментарии:

1. Привет, Милан, все наоборот, я хочу, чтобы у div была непрозрачность на фоне, но не на тексте, что я получаю с примером в ссылке, которую я опубликовал.

2. Я изменил ответ, не понял его с первого раза, извините