В настоящее время я играю с CSS3 и пытаюсь добиться такого текстового эффекта (черная размытая внутренняя тень):
Но я не могу найти способ создать текстовые тени внутри текста. Интересно, возможно ли это, потому что элемент box-shadow может отображать тень внутри следующим образом:
box-shadow: inset 0px -5px 10px 0px rgba(0, 0, 0, 0.5);
Любые идеи?
Ответы:
Вот небольшая хитрость , которую я обнаружил , используя
:before
и:after
псевдо-элементы:Атрибут title должен совпадать с содержимым. Демо: http://dabblet.com/gist/1609945
источник
Вы должны иметь возможность сделать это с помощью text-shadow, эээ как-то так:
вот пример: http://jsfiddle.net/ekDNq/
источник
Вот моя лучшая попытка:
Проблема в том, как обрезать тени, которые растекаются по краям !!! Я пробовал использовать webkit, используя background-clip: text, но webkit отображает тень над фоном, поэтому это не работает.
Создание текстовой маски с помощью CSS?
Без верхнего слоя маски невозможно создать настоящую внутреннюю тень на тексте.
Возможно, кому-то стоит порекомендовать W3C добавить background-clip: reverse-text , который прорезал бы маску через фон вместо того, чтобы вырезать фон, чтобы поместиться внутри текста.
Либо это, либо визуализируйте тень текста как часть фона и закрепите ее с помощью background-clip: text.
Я попытался абсолютно позиционировать идентичный текстовый элемент над ним, но проблема в background-clip: текст обрезает фон, чтобы он поместился внутри текста, но нам нужно обратное.
Я пробовал использовать text-stroke: 20px white; как для этого элемента, так и для элемента над ним, но обводка текста идет как внутрь, так и наружу.
Альтернативные методы
Поскольку в настоящее время нет возможности создать маску инвертированного текста в CSS, вы можете обратиться к SVG или Canvas и создать изображение для замены текста с тремя слоями, чтобы получить свой эффект.
Поскольку SVG является подмножеством XML, текст SVG по-прежнему будет доступен для выбора и поиска, и эффект может быть достигнут с меньшим количеством кода, чем Canvas.
Было бы труднее добиться этого с помощью Canvas, потому что у него нет dom со слоями, как у SVG.
Вы можете создать SVG либо на стороне сервера, либо как метод замены текста javascript в браузере.
Дальнейшее чтение:
SVG против Canvas:
http://dev.opera.com/articles/view/svg-or-canvas-choosing-between-the-two/
Обрезка и маскирование с текстом SVG:
http://www.w3.org/TR/SVG/text.html#TextElement
источник
Более точное объяснение CSS в ответе kendo451 .
Есть еще один способ получить причудливую иллюзию внутренней тени,
которую я объясню в три простых шага. Скажем, у нас есть этот HTML:
и этот CSS:
Шаг 1
Начнем с того, что сделаем текст прозрачным:
Шаг 2
Теперь мы обрезаем этот фон по форме текста:
Шаг 3
Теперь волшебство: мы добавим размытие
text-shadow
, которое будет перед фоном , создавая впечатление внутренней тени!Смотрите окончательный результат .
Минусы?
background-clip
не может бытьtext
).источник
text-shadow: 1px 1px 1px #000, 3px 3px 5px blue;
?Элегантный пример без необходимости позиционированной обертки или дублирующего контента в разметке:
Хорошо смотрится и на темном фоне:
И МЕНЯ ССЫЛКА И МЕНЯ 2 ССЫЛКА
источник
Вы можете это сделать. К сожалению, нет возможности использовать вставку на text-shadow, но вы можете подделать ее цветом и положением. Возьмите размытие прямо вниз и расположите тень в правом верхнем углу. Что-то вроде этого может помочь:
... но вам нужно быть очень, очень осторожным с тем, какие цвета вы используете, иначе это будет выглядеть нечетко. По сути, это оптическая иллюзия, поэтому она не сработает в любом контексте. Это также не очень хорошо смотрится при меньшем размере шрифта, так что имейте это в виду.
источник
background-clip
как показано в этом ответе .Нет необходимости в нескольких тенях или в чем-то подобном, вам просто нужно сместить тень по отрицательной оси Y.
Для темного текста на светлом фоне:
Если у вас темный фон, вы можете просто инвертировать цвет и положение по оси Y:
Поиграйте со значениями rgba, непрозрачностью и размытием, чтобы получить нужный эффект. Это будет во многом зависеть от того, какой цвет шрифта и фона у вас есть, и чем тяжелее шрифт, тем лучше.
источник
Попробуйте эту маленькую жемчужину вариации:
Я обычно воспринимаю "нет ответа" как вызов
источник
Я видел много предложенных решений, но ни одно из них не соответствовало моим ожиданиям.
Вот мой лучший прием , где цвет прозрачный, фон и верхняя текстовая тень одного цвета с разной степенью непрозрачности, имитируя маску, а вторая текстовая тень - более темная, более насыщенная версия цвета, который вы на самом деле хочу (довольно легко сделать с HSLA).
(кстати, текст и стиль основаны на OP дублирующей нити )
источник
У меня было несколько случаев, когда мне требовались внутренние тени на тексте, и следующее мне помогло:
Это устанавливает непрозрачность текста на 80%, а затем создает две тени:
Предостережения
источник
Вот ссылка о том, как это сделать, это должно быть то, что вы ищете:
http://sixrevisions.com/css/how-to-create-inset-typography-with-css3/
источник
Похоже, это работает: http://tips4php.net/2010/08/nice-css-text-shadow-effects/
Он использует несколько теней для достижения этого эффекта, как описано здесь: http://www.w3.org/Style/Examples/007/text-shadow#multiple.
источник
Кажется, у каждого есть ответ на этот вопрос. Мне нравится решение от @Web_Designer. Но это не обязательно должно быть так сложно, и вы все равно можете получить размытую внутреннюю тень, которую ищете.
http://dabblet.com/gist/3877605
источник
Это, пожалуй, лучший пример, который я видел. http://lab.simurai.com/carveme/
Источник находится на gitthub https://github.com/simurai/lab/tree/gh-pages/carveme
источник
Основываясь на
:before
:after
методике web_designer, вот что вам ближе:Во-первых, сделайте свой текст цветом внутренней тени (черным в случае OP).
Теперь используйте псевдо-класс: after, чтобы создать прозрачный дубликат исходного текста, помещенный непосредственно поверх него. Назначьте ему обычную текстовую тень без смещения. Присвойте тени исходный цвет текста и при необходимости отрегулируйте альфа-канал.
http://dabblet.com/gist/2499892
Вы не получаете полного контроля над распространением и т. Д. Тени, как в PS, но для меньших значений размытия это вполне приемлемо. Тень выходит за границы текста, поэтому, если вы работаете в среде с высококонтрастным фоном и передним планом, это будет очевидно. Для предметов с меньшей контрастностью, особенно с таким же оттенком, это не слишком заметно. Например, с помощью этой техники я смог создать очень красивый текст на металлическом фоне.
источник
Вот отличное решение для TRUE вставки тени текста с использованием свойства CSS3 background-clip:
источник
Вот что я пришел к выводу, рассмотрев здесь некоторые идеи. Основная идея заключается в том, что цвет текста смешивается с обеими тенями, и обратите внимание, что это используется на сером фоне (иначе белый цвет не будет хорошо отображаться).
источник
Попробуйте этот пример для вставки тени текста. Вот HTML
и CSS
Demo on Jsfiddle
источник
для тени коробки:
вы можете видеть онлайн-текст и тень поля: онлайн-текст и тень поля
для получения дополнительных примеров вы можете перейти по этому адресу: еще пример кода freeclup
источник
Есть гораздо более простой способ добиться этого
Вуаля
источник
Для текста обычного размера на маленьких кнопках
Я обнаружил, что другие идеи на этой странице теряют свою эффективность при использовании на маленьких кнопках с мелкими текстовыми буквами. Этот ответ расширяет ответ Роберта Питта .
Вот небольшая настройка:
Показать фрагмент кода
Примечание:
Я использовал этот сайт, чтобы улучшить цветовые оттенки.
источник
Использую с этого сайта, тоже неплохо выглядит. Взгляни на это Внутренняя тень
источник