Сброс непрозрачности дочернего элемента - Maple Browser (приложение Samsung TV)
У меня проблема с созданием прозрачного элемента с дочерним элементом.
Используя этот код, дочерний элемент получает значение непрозрачности от родительского элемента.
Мне нужно reset/установить непрозрачность дочернего элемента на произвольное значение.
Браузер ссылки Maple Browser (for a Samsung TV Application)
.
.video-caption {
position: absolute;
top:50px;
width: 180px;
height: 55px;
background-color: #000;
-khtml-opacity:.40;
-moz-opacity:.40;
-ms-filter:"alpha(opacity=40)";
filter:alpha(opacity=40);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.4); /*just for testing*/
opacity:.40;
}
.video-caption > p {
color: #fff !important;
font-size: 18px;
-khtml-opacity:1;
-moz-opacity:1;
-ms-filter:"alpha(opacity=100)";
filter:alpha(opacity=100);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=1);
opacity:1;
}
ИЗМЕНИТЬ МАРКУПЕР
<div> <img id="videothb-1" src="https://xxxxx/splash.jpg"> <div class="video-caption"> <p>Description here</p> </div> </div>
Ответы
Ответ 1
Проблема, которую вы, вероятно, имеете (на основе поиска ваших селекторов), заключается в том, что непрозрачность влияет на все дочерние элементы родителя:
div
{
background: #000;
opacity: .4;
padding: 20px;
}
p
{
background: #f00;
opacity: 1;
}
http://jsfiddle.net/Kyle_/TK8Lq/
Но есть решение! Используйте значения фона rgba, и вы можете иметь прозрачность везде, где хотите:)
div
{
background: rgba(0, 0, 0, 0.4);
/*opacity: .4;*/
padding: 20px;
}
p
{
background: rgba(255, 0, 0, 1);
/*opacity: 1;*/
}
http://jsfiddle.net/Kyle_/TK8Lq/1/
Для текста вы можете просто использовать один и тот же код rgba, но установить свойство цвета CSS:
color: rgba(255, 255, 255, 1);
Но вы должны использовать rgba для всего, чтобы это работало, вам нужно удалить непрозрачность для всех родительских элементов.
http://jsfiddle.net/Kyle_/TK8Lq/2/
Ответ 2
Решение Kyle отлично работает.
Кроме того, если вам не нравится устанавливать цвета с использованием RGBA, но, используя HEX, есть решения.
С LESS, например, вы можете использовать mixin, например:
.transparentBackgroundColorMixin(@alpha,@color) {
background-color: rgba(red(@color), green(@color), blue(@color), @alpha);
}
И используйте его как
.myClass {
.transparentBackgroundColorMixin(0.6,#FFFFFF);
}
На самом деле это то, что встроенная функция LESS также обеспечивает:
.myClass {
background-color: fade(#FFFFFF, 50%);
}
Смотрите Как преобразовать цвет HEX в rgba с помощью компилятора Less?
Ответ 3
Ответ выше хорошо работает, однако для людей, которым нравится использование шестнадцатеричных цветовых кодов, вы можете установить прозрачность с помощью самого гексагонального цвета. EXP: # 472d20b9 - последние два значения задают непрозрачность для цвета, а # 472d20 будут одного цвета, но без прозрачности.
Примечание. Работает отлично в Chrome и Firefox, а Edge и IE - нет. У вас не было возможности проверить его в других браузерах.