У меня есть набор <a>
тегов с разными цветами фона rgba, но с одинаковым альфа-каналом. Можно ли написать единственный стиль css, который изменит только непрозрачность атрибута rgba?
Быстрый пример кода:
<a href="#"><img src="" /><div class="brown">Link 1</div></a>
<a href="#"><img src="" /><div class="green">Link 2</div></a>
И стили
a {display: block; position: relative}
.brown {position: absolute; bottom: 0; background-color: rgba(118,76,41,.8);}
.green {position: absolute; bottom: 0; background-color: rgba(51,91,11,.8);}
Что я хотел бы сделать, так это написать единственный стиль, который изменял бы непрозрачность при <a>
наведении указателя мыши, но сохранял бы цвет неизменным.
Что-то вроде
a:hover .green, a:hover .brown {background-color: rgba(inherit,inherit,inherit,1);}
css
hover
background-color
rgba
Огненный полет
источник
источник
div
элементы делают в вашихa
элементах?a
элементы уровня блока .a
тег вместо одного вокругimg
текста, а другой вокруг текста. Тот факт, что он поддерживается HTML 5, является приятным бонусом.Ответы:
Теперь это возможно с помощью настраиваемых свойств:
Чтобы понять, как это работает, см. Как применить непрозрачность к переменной цвета CSS?
Если настраиваемые свойства недоступны, см. Исходный ответ ниже.
К сожалению, нет, вам придется снова указать значения красного, зеленого и синего цветов для каждого отдельного класса:
Вы можете использовать только
inherit
ключевое слово как значение свойства, и даже в этом случае использованиеinherit
здесь неуместно.источник
Вы можете делать разные вещи, чтобы избежать жесткого кодирования чисел, если хотите. Некоторые из этих методов работают, только если вы используете простой белый фон, поскольку они действительно добавляют белый цвет поверх, а не уменьшают непрозрачность. Первый должен работать нормально для всего предоставленного:
position
в<div>
теге относительное или абсолютное значениеВариант 1:
::before
псевдоэлемент:Вариант 2: наложение белого gif:
Вариант 3:
box-shadow
метод:Вариант метода gif, но может иметь проблемы с производительностью.
Примеры CodePen: http://codepen.io/chrisboon27/pen/ACdka
источник
Нет, это невозможно.
Однако вы можете попробовать препроцессор CSS , если хотите делать такие вещи.
Из того, что я мог видеть, по крайней мере, LESS и Sass имеют функции, которые могут сделать цвета более или менее прозрачными.
источник
Нет, это невозможно.
Если вы хотите использовать
rgba
, вы должны установить каждое значение вместе. Невозможно изменить только альфу.источник
Сейчас 2017 год, и теперь это возможно с
Пользовательские свойства CSS / переменные CSS ( Caniuse )
Один из классических вариантов использования переменных CSS - это возможность индивидуализировать части значения свойства.
Итак, здесь вместо того, чтобы повторять все выражение rgba еще раз - мы разделяем или "индивидуализируем"
rgba
значения на 2 части / переменные (одна для значения rgb и одна для альфа)Затем при наведении курсора мы можем просто изменить переменную --alpha:
Показать фрагмент кода
Codepen
Дальнейшее чтение:
Индивидуализация свойств CSS с помощью переменных CSS (Дэн Уилсон)
источник
есть альтернатива, вы можете добавить фоновое изображение с линейным градиентом к исходному цвету.
также, со свойством фильтра css3, вы тоже можете это сделать, но кажется, что это изменит цвет текста
вот jsfiddle: https://jsfiddle.net/zhangyu911013/epwyL296/2/
источник
простое решение:
пример: https://jsfiddle.net/epwyL296/14/
просто поиграйте с альфой фона. если вам нужен свет вместо тьмы, просто замените # 000 на #fff
источник
Почему бы не использовать
:hover
и не указать другую непрозрачность в классе зависания?источник
fill-opacity
У меня была похожая проблема. У меня было 18 разных div, работающих как кнопки, и каждый был разного цвета. Вместо того, чтобы выяснять цветовые коды для каждого или использовать селектор div: hover для изменения непрозрачности (что влияет на всех дочерних элементов), я использовал псевдокласс: раньше, как в ответе @Chris Boon.
Поскольку я хотел раскрасить отдельные элементы, я использовал: before, чтобы создать прозрачный белый div на: hover. Это очень простая промывка.
Согласно CanIUse.com, на начало 2014 года у него должно быть около 92% поддержки. ( Http://caniuse.com/#feat=css-gencontent )
источник
Вы можете сделать это с помощью переменных CSS, хотя это немного беспорядочно.
Сначала установите переменную, содержащую только значения RGB в порядке цвета, который вы хотите использовать:
Затем вы можете назначить значение RGBA для цвета и извлечь из этой переменной все, кроме альфа-значения:
Это не очень красиво, но позволяет использовать одни и те же значения RGB, но разные альфа-значения для цвета.
источник
:root
, она может быть в классе элемента, устанавливая его базовый цвет. Спасибо!Обновление: к сожалению, это невозможно. Вам нужно будет написать два отдельных селектора:
Согласно W3C,
rgba
свойство не имеет / не поддерживаетinherit
значение.источник
inherit
это недопустимый аргумент функции. Вы заметите, что это не работает ни с одной другой функцией CSS.rgba
иtransitions
? Потому что я знаю, что он поддерживается довольно многими свойствами.url()
иattr()
т. Д. Тоже.inherit
это только стоимость собственности.url()
переходах. Я просто не был уверен на 100%,rgba
потому что он используется для цветов. Спасибо, что просветили меня :)!Столкнулся с похожей проблемой. Вот что я сделал, и он отлично работает (
only alpha changes on hover and also the text is not affected
), выполнив следующие действия:1) Примените выделенный (или любой по вашему выбору) класс к любому элементу, для которого вы хотите изменить альфа фона.
2) Получить цвет фона rgba
3) Сохраните его в строке и манипулируйте им (измените альфа), как хотите, при наведении курсора (mouseenter и mouseleave)
HTML-код:
Код CSS:
Код Javascript:
Рабочий скрипт: http://jsfiddle.net/HGHT6/1/
источник
Простой обходной путь,
opacity
если вы можете внести небольшое изменение вbackground-color
:источник
Это самый простой способ; поместите это в свою таблицу стилей css:
сделано!
источник