Сброс непрозрачности дочернего элемента-Maple Browser (приложение Samsung TV)


у меня есть проблема с созданием прозрачного элемента, который имеет дочерний элемент. С помощью этого кода дочерний элемент получает значение непрозрачности от родительского элемента.

мне нужно сбросить/установить прозрачность элемента на произвольное значение. Браузер ссылки - это 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>
3 64

3 ответа:

проблема, которую вы, вероятно, имеете (на основе просмотра ваших селекторов), заключается в том, что непрозрачность влияет на все дочерние элементы родителя:

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/

решение Кайла работает отлично.

кроме того, если вы не хотите устанавливать свои цвета с помощью RGBA, а скорее с помощью HEX, есть решения.

С меньшим для примера, вы можете использовать миксин, как:

.transparentBackgroundColorMixin(@alpha,@color) {
  background-color: rgba(red(@color), green(@color), blue(@color), @alpha);
}

и использовать его как

.myClass {
    .transparentBackgroundColorMixin(0.6,#FFFFFF);
}

на самом деле это встроенный меньше функции предоставляем:

.myClass {
    background-color: fade(#FFFFFF, 50%);
}

посмотреть как конвертировать шестнадцатеричный цвет в rgba с меньшим компилятором?

ответ выше работает хорошо, однако для людей, которые любят использовать шестнадцатеричные цветовые коды, вы можете установить прозрачность самим шестнадцатеричным цветом. EXP: #472d20b9-последние два значения задают непрозрачность для цвета, в то время как #472d20 будет иметь тот же цвет, но без непрозрачности. Примечание: отлично работает в Chrome и Firefox, в то время как Edge и IE не. Не было возможности проверить ее в других браузерах.