Есть ли прямой способ CSS сделать границу элемента полупрозрачной с чем-то вроде этого?
border-opacity: 0.7;
Если нет, у кого-нибудь есть идеи, как я мог бы сделать это без использования изображений?
К сожалению, opacity
элемент делает весь элемент (включая любой текст) полупрозрачным. Лучший способ сделать границу полупрозрачной - использовать цветной формат rgba. Например, это даст красную рамку с непрозрачностью 50%:
div {
border: 1px solid rgba(255, 0, 0, .5);
-webkit-background-clip: padding-box; /* for Safari */
background-clip: padding-box; /* for IE9+, Firefox 4+, Opera, Chrome */
}
Проблема с этим подходом состоит в том, что некоторые браузеры не понимают rgba
формат и не будут отображать границы вообще, если это полная декларация. Решение состоит в том, чтобы предоставить две декларации границы. Первый с поддельной непрозрачностью, а второй с фактической. Если браузер способен, он будет использовать второй, если нет, он будет использовать первый.
div {
border: 1px solid rgb(127, 0, 0);
border: 1px solid rgba(255, 0, 0, .5);
-webkit-background-clip: padding-box; /* for Safari */
background-clip: padding-box; /* for IE9+, Firefox 4+, Opera, Chrome */
}
Первое объявление границы будет эквивалентно цвету непрозрачной красной границы на 50% на белом фоне (хотя любая графика под границей не будет проходить).
ОБНОВЛЕНИЕ: я добавил "background-clip: padding-box;" на этот ответ (согласно предложению SooDesuNe в комментариях), чтобы гарантировать, что граница остается прозрачной, даже если применяется сплошной цвет фона.
border-radius
, то они получают закругленные углы. Если нет, то нет. Контент по-прежнему доступен, он по-прежнему выглядит хорошо, он выглядит лучше, если они используют браузер с поддержкой. У меня никогда не было ни одного клиента, который бы жаловался на это за последние 1,5 года, работая таким образом на каждом проекте.background-clip:padding-box;
.Это просто, использовать сплошную тень со смещением 0:
Кроме того, если вы установите граничный радиус для элемента, он дает вам довольно округлые границы
jsFiddle Demo
источник
box-shadow
не имеет размера и может нарушить ваш макет, делая ваши поля неравномерными! jsfiddle.net/bj81hew7/2Как уже упоминали другие: CSS-3 говорит, что вы можете использовать
rgba(...)
синтаксис для указания цвета границы со значением непрозрачности (альфа).Вот быстрый пример, если вы хотите проверить это.
Он работает в Safari и Chrome (вероятно, работает во всех браузерах webkit).
Работает в Firefox
Я сомневаюсь, что это работает вообще в IE, но я подозреваю, что есть какой-то фильтр или поведение, которое заставит его работать.
Также есть эта публикация , которая предлагает некоторые другие проблемы, а именно то, что граница визуализирует поверх любого фона (или фона), который вы указали; таким образом, ограничение полезности границы альфа во многих случаях.
источник
background-clip: padding-box;
(и пока она не поддерживается, вы можете использовать расширения вендоров -webkit и -moz).Если вы проверите код CSS с помощью валидатора W3C, вы увидите, приемлем ли ваш код CSS, даже если он работал в основных браузерах.
Создание прозрачной границы через CSS, как написано выше,
не принимается стандартами W3C, даже для CSS3. Я использовал валидатор прямого ввода со следующим кодом CSS,
Результаты были,
К сожалению, альфа-значение (буква «a» в конце «rgb») пока не принимается W3C как часть значений цвета границы. Я удивляюсь, почему он не стандартизирован, так как он работает во всех браузерах. Единственное препятствие - хотите ли вы придерживаться стандартов W3C или отойти от него, чтобы создать что-то в CSS.
Использовать W3C онлайн валидатор CSS / Прямой ввод .
Всегда хорошая идея использовать валидатор для проверки вашей работы, это действительно помогает находить небольшие или даже большие ошибки в кодировании, когда вы закрываете глаза после нескольких часов работы с кодированием.
источник
* Не так далеко, насколько я знаю, я не делаю то, что обычно делаю в таких обстоятельствах, это создаю блок с большим размером ((borderize * 2) + originalsize) и делаю его прозрачным, используя
вот пример
Обновить:
Этот ответ устарел, так как в конце концов этому вопросу более 8 лет. Сегодня все современные браузеры поддерживают rgba, box shadows и так далее. Но это достойный пример того, как это было 8+ лет назад.
источник
rgba(...)
цвета рамки. Вы можете попробовать это здесь .В качестве альтернативного решения , которое может работать в некоторых случаях: изменить
border-style
кdotted
.Наличие чередующихся групп пикселей между цветом переднего плана и цветом фона отличается от непрерывной линии частично прозрачных пикселей. С другой стороны, для этого требуется значительно меньше CSS, и он гораздо более совместим с любым браузером без каких-либо специфических для браузера директив.
источник
Другие ответы касаются технического аспекта проблемы с непрозрачностью границ, в то время как я хотел бы представить взлом (только чистый CSS и HTML). В основном создайте контейнер div, имеющий рамку div и затем содержимое div.
И затем CSS: (установите границу содержимого в none, позаботьтесь о позиционировании так, чтобы учитывалась толщина границы)
источник
Нет, нет способа установить только прозрачность границы с помощью css.
Например, если вы не знали цвет , нет способа изменить непрозрачность границы, просто используя
rgba()
.источник
попробуй это:
И вот идет наш волшебный CSS ..
Проверьте Демо здесь.
источник