CSS непрозрачность только цвет фона не текст на нем? [дубликат]
этот вопрос уже есть ответ здесь:
могу ли я назначить opacity свойства background свойства div только и не текст на нем?
Я пробовал:
background: #CCC;
opacity: 0.6;
но это не измените непрозрачность.
11 ответов:
похоже, вы хотите использовать прозрачный фон, и в этом случае вы можете попробовать использовать
rgba():
rgba(R, G, B, A)R (красный), G (зеленый) и B (синий) может быть либо
<integer>или<percentage>s, где число 255 соответствует 100%. A (Альфа) может быть a<number>между 0 и 1, или<percentage>, где номер 1 соответствует 100% (полная непрозрачность).RGBa пример
rgba(51, 170, 51, .1) /* 10% opaque green */ rgba(51, 170, 51, .4) /* 40% opaque green */ rgba(51, 170, 51, .7) /* 70% opaque green */ rgba(51, 170, 51, 1) /* full opaque green */небольшой пример показывает, как
rgbaможно использовать.по состоянию на 2018 год, практически каждый браузер поддерживает тег
rgbaсинтаксис.
самый простой способ сделать это с 2 ДИВС, 1 с фоном и 1 с текстом:
#container { position: relative; width: 300px; height: 200px; } #block { background: #CCC; filter: alpha(opacity=60); /* IE */ -moz-opacity: 0.6; /* Mozilla */ opacity: 0.6; /* CSS3 */ position: absolute; top: 0; left: 0; height: 100%; width: 100%; } #text { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }<div id="container"> <div id="block"></div> <div id="text">Test</div> </div>
Это будет работать с любым браузером
div { -khtml-opacity:.50; -moz-opacity:.50; -ms-filter:”alpha(opacity=50)”; filter:alpha(opacity=50); filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5); opacity:.50; }Если вы не хотите, чтобы прозрачность влияла на весь контейнер и его дочерние элементы, проверьте этот обходной путь. Для этого у вас должен быть абсолютно позиционированный ребенок с относительно позиционированным родителем. http://www.impressivewebs.com/css-opacity-that-doesnt-affect-child-elements/
проверить работу демо на http://www.impressivewebs.com/demo-files/css-opacity/css-opacity-demo.html
на меньше только для пользователей:
Если вы не хотите устанавливать свои цвета с помощью 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 с меньшим компилятором?
У меня была та же проблема. Я хочу 100% прозрачный цвет фона, просто используйте этот код, его отлично работает для меня:
rgba(54, 25, 25, .00004);вы можете увидеть примеры на левая сторона на этой веб-странице (область контактной формы)
отличный способ сделать это было бы использовать css3 действительно.
создайте класс div width a-например, supersizer поверх вашей страницы:
затем установите следующие css-свойства:
.supersizer { background: url("http://fc06.deviantart.net/fs70/f/2012/099/d/f/stackoverflow_16x16_icon_by_muntoo_stock-d4vl2v4.png") no-repeat center center fixed; width: 100%; height: 100%; position: fixed; z-index: -1; opacity: 0.5; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; top: 0; }<div class="supersizer"></div>
для тех, кто сталкивается с этой темой, вот скрипт под названием thatsNotYoChild.js, что я только что написал, что решает эту проблему автоматически:
http://www.impressivewebs.com/fixing-parent-child-opacity/
в принципе, он отделяет детей от родительского элемента, но сохраняет элемент в том же месте на странице.
самое простое решение-создать 3
divs. Тот, который будет содержать другие 2, один с прозрачным фоном и один с содержанием. Сделайте положение первого div относительно и установите один с прозрачным фоном отрицательнымz-index, затем отрегулируйте положение содержимого, чтобы оно поместилось на прозрачном фоне. Таким образом, у вас не будет проблем с абсолютным позиционированием.
использовать
background:url("location of image");//use an image with opacityэтот метод будет работать во всех браузерах
вы не можете. Вы должны иметь отдельный div, который является просто фоном, так что вы можете только применить прозрачность к этому.
Я попытался сделать это недавно, и так как я уже использовал jQuery, я обнаружил, что следующее было наименьшей проблемой:
- создайте два разных дива. Они будут братьями и сестрами, не содержащимися друг в друге.
- дать
textdiv сплошной цвет фона, потому что это будет JS-менее по умолчанию.- используйте jQuery, чтобы получить
textвысота div, и применить его кbackgrounddiv.Я уверен, что есть какой-то способ CSS ninja сделать все это только с поплавками или что-то в этом роде, но у меня не было терпения, чтобы понять это.