Я не хочу наследовать непрозрачность дочернего элемента от родительского в CSS.
У меня есть один div, который является родителем, и у меня есть другой div внутри первого div, который является ребенком.
Я хочу установить свойство opacity в родительском div, но я не хочу, чтобы дочерний div наследовал свойство opacity.
Как я могу это сделать?
opacity
немного похожеdisplay: none
в этом смысле.Ответы:
Вместо использования прозрачности установите цвет фона с помощью rgba, где «a» - уровень прозрачности.
Так что вместо:
использование
источник
.png
:)Непрозрачность на самом деле не наследуется в CSS. Это пост-рендеринг группового преобразования. Другими словами, если
<div>
имеет установленную непрозрачность, вы визуализируете div и все его дочерние элементы во временный буфер, а затем объединяете весь этот буфер в страницу с заданной настройкой непрозрачности.Что именно вы хотите сделать здесь, зависит от того, какой именно рендеринг вы ищете, что не ясно из вопроса.
источник
opacity: .7;
наdiv#container
делает каждый дочерний элемент - отul
/li
доimg
доp
- также имеют одинаковую прозрачность. Это, безусловно, наследуется.opacity: 0.7
всех потомков, чтобы увидеть, как будет выглядеть наследование. Как я уже сказал, вместо этого происходит то, что прозрачность применяется ко всей группе «элемент и все его потомки» как единое целое, а не наследуется.Как уже упоминалось в этом и других подобных потоках, лучший способ избежать этой проблемы - использовать RGBA / HSLA или использовать прозрачный PNG.
Но если вам нужно нелепое решение, подобное тому, которое указано в другом ответе в этой теме (который также является моим веб-сайтом), вот новый скрипт, который я написал, который автоматически решает эту проблему и называется thatsNotYoChild.js:
http://www.impressivewebs.com/fixing-parent-child-opacity/
В основном он использует JavaScript, чтобы удалить все дочерние элементы из родительского элемента div, а затем переместить дочерние элементы туда, где они должны быть, фактически не являясь дочерними элементами этого элемента.
Для меня это должно быть последним средством, но я подумал, что было бы интересно написать что-нибудь, что сделало бы это, если кто-то захочет это сделать.
источник
Небольшая хитрость, если ваш родитель прозрачен, и вы хотите, чтобы ваш ребенок был таким же, но определенным исключительно (например, для перезаписи стилей агента пользователя в раскрывающемся списке выбора):
источник
Непрозрачность дочернего элемента наследуется от родительского элемента.
Но мы можем использовать свойство css position для достижения наших целей.
Текстовый контейнерный div может быть помещен вне родительского div, но с абсолютным позиционированием, проецирующим желаемый эффект.
Идеальное требование ------------------ >>>>>>>>>>>>
HTML
CSS
Вывод:--
Текст не виден, потому что наследует непрозрачность от родительского div.
Решение ------------------- >>>>>>
HTML
CSS
Вывод :
Текст виден с тем же цветом, что и фон, потому что div не находится в прозрачном div
источник
Вопрос не определил, является ли фон цветным или графическим, но поскольку @Blowski уже ответил за цветной фон, есть взлом для изображений ниже:
Таким образом, вы можете манипулировать цветом вашей непрозрачности и даже добавлять хорошие эффекты градиента.
источник
Кажется, что
display: block
элементы не наследуют непрозрачность отdisplay: inline
родителей.Пример Codepen
Может быть, потому что это неверная разметка и браузер тайно их разделяет? Потому что источник не показывает, что происходит. Я что-то пропустил?
источник
Ответы выше кажутся мне сложными, поэтому я написал это:
kb-mask-overlay
это ваш (непрозрачный) родитель,pop-up
это ваши (без непрозрачности) дети. Все ниже это остальная часть вашего сайта.источник
Не существует единого подхода, подходящего для всех, но одна вещь, которая мне показалась особенно полезной, это установка непрозрачности для прямых потомков div, кроме той, которую вы хотите сохранить полностью видимой. В коде:
и CSS:
Если у вас есть фоновые цвета / изображения для родителя, вы исправляете непрозрачность цвета с помощью rgba и background-image, применяя альфа-фильтры
источник
Если вам нужно использовать изображение в качестве прозрачного фона, вы можете обойти его, используя псевдоэлемент:
HTML
CSS
источник
Мой ответ не о статичной компоновке типа «родители-потомки», а об анимации.
Сегодня я делал демонстрацию svg, и мне нужно было, чтобы svg был внутри div (потому что svg создается с шириной и высотой родителя div, чтобы анимировать путь вокруг), и этот родительский div должен был быть невидимым во время анимации пути svg (а затем этот div должен был
animate opacity from 0 to 1
, это самая важная часть). И так как родительский div сopacity: 0
скрывал мой svg, я наткнулся на этот хак сvisibility
опцией (child сvisibility: visible
можно увидеть внутри parent сvisibility: hidden
:)А затем, в js, вы удаляете
.invisible
класс с функцией тайм-аута, добавляете.opacity-zero
класс, запускаете макет с чем-то вродеwhatever.style.top;
и удаляете.opacity-zero
класс.Лучше проверить это демо http://codepen.io/suez/pen/54bbb2f09e8d7680da1af2faa29a0aef?editors=011
источник
На Mac вы можете использовать редактор предварительного просмотра, чтобы наложить непрозрачность на белый прямоугольник, наложенный на изображение .png, прежде чем поместить его в файл .css.
1) Изображение
логотипа
2) Создайте прямоугольник вокруг изображения
Прямоугольник вокруг логотипа
3) Измените цвет фона на белый
прямоугольник, ставший белым
4) Настройте непрозрачность прямоугольника
непрозрачного изображения
источник
Присвойте непрозрачность 1.0 ребенку рекурсивно с помощью:
Пример:
источник
Для других людей, пытающихся сделать таблицу (или что-то еще) сфокусированной на одной строке, используя непрозрачность. Как сказал @Blowski, используйте цвет, а не непрозрачность. Проверьте эту скрипку: http://jsfiddle.net/2en6o43d/
источник