Есть ли в CSS способы придать контурам текст с разными цветами? Я хочу выделить некоторые части моего текста, чтобы сделать его более интуитивно понятным - например, имена, ссылки и т. Д. Изменение цветов ссылок и т. Д. В настоящее время является обычным явлением, поэтому я хочу что-то новое.
329
Ответы:
В
text-stroke
CSS3 есть экспериментальное свойство webkit , я пытался заставить его работать какое-то время, но пока безуспешно.Вместо этого я использовал уже поддерживаемое
text-shadow
свойство (поддерживается в Chrome, Firefox, Opera и IE 9, я считаю).Используйте четыре тени для имитации штрихованного текста:
Я сделал демо для вас здесь
И пример можно найти здесь
Как упоминал Джейсон С в комментариях,
text-shadow
свойство CSS теперь поддерживается всеми основными браузерами, за исключением Opera Mini. Где это решение будет работать для обратной совместимости (на самом деле проблема не касается браузеров, которые автоматически обновляются), я считаю, чтоtext-stroke
CSS следует использовать.источник
text-shadow
до IE10. Как ни странно, IE9 поддерживает,box-shadow
но нетtext-shadow
.text-shadow
. Похоже, что в настоящее время (через 3 года после публикации этого ответа) он поддерживается всеми основными браузерами, за исключением Opera Mini, которая показывает «частичную поддержку» (игнорируетсяblur-radius
).text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
text-shadow
поддержку, а неtext-stroke
. Который в настоящее время поддерживается только webkit.Редактировать:
text-stroke
теперь достаточно зрелый и реализован в большинстве браузеров . Это проще, острее и точнее. Если ваша браузерная аудитория может это поддержать, вы должныtext-stroke
сначала использовать вместоtext-shadow
.Вы можете и должны делать это только с
text-shadow
эффектом без каких-либо смещений:Зачем? Когда вы смещаете несколько теневых эффектов, вы начинаете замечать неровные, неровные углы:
наличие текстовых теневых эффектов всего в одной позиции устраняет смещения, а это означает, что если вы чувствуете, что это слишком тонкий и предпочитаете более темный контур, то нет проблем - вы может повторять один и тот же эффект (сохраняя ту же позицию и размытие), несколько раз. Вот так:
Вот пример только одного эффекта (вверху) и того же эффекта, повторенного 14 раз (внизу):
Также обратите внимание: поскольку линии становятся такими тонкими, очень полезно отключить субпиксельный рендеринг
-webkit-font-smoothing: antialiased
.источник
font-smoothing
опцию, это значительно улучшило вывод в chrome!text-stroke
- это не то же самое, что наброски черезtext-shadow
.text-stroke
не имеет возможности сделать контур за пределами текста, что означает, что контур сливается с текстом, что часто выглядит действительно ужасно. Другими словами,text-stroke
это не заменаtext-shadow
контуровЛегко! SVG на помощь.
Это упрощенный метод:
Вот более сложная демонстрация .
источник
Вы можете попробовать сложить несколько размытых теней, пока тени не станут похожими на штрихи, например:
Вот скрипка: http://jsfiddle.net/GGUYY/
Я упоминаю об этом на всякий случай, если кто-то заинтересован, хотя я бы не назвал это решением, потому что оно терпит неудачу различными способами:
источник
Я искал кросс-браузерное решение для обработки текста, которое работает, когда накладывается на фоновые изображения. Думаю, у меня есть решение для этого, которое не требует дополнительной разметки, js и работает в IE7-9 (я не тестировал 6), и не вызывает проблем с наложением.
Это комбинация использования CSS3 text-shadow, которая имеет хорошую поддержку, кроме IE ( http://caniuse.com/#search=text-shadow ), с последующим использованием комбинации фильтров для IE. Поддержка текстовых штрихов CSS3 на данный момент слаба.
IE Фильтры
Светящийся фильтр ( http://www.impressivewebs.com/css3-text-shadow-ie/ ) выглядит ужасно, поэтому я этим не пользовался.
Ответ Дэвида Хьюитта заключался в добавлении фильтров в виде теней в комбинации направлений. К сожалению, ClearType удаляется, поэтому мы получаем плохо псевдоним.
Затем я объединил некоторые элементы, предложенные на useragentman, с фильтрами drophadow.
Положить его вместе
Этот пример будет черным текстом с белым штрихом. Я использую условные html-классы для целевой IE ( http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ ).
источник
filter: glow(color=white,strength=1);
Просто добавив этот ответ. «Поглаживание» текста - это не то же самое, что «Изложение»
Изложение выглядит великолепно. Поглаживание выглядит ужасно.
Решение SVG, указанное в другом месте, имеет ту же проблему. Из вас хотят наброски вам нужно поместить текст дважды. Один раз погладил и снова не погладил.
Поглаживание не очерчивает
PS: я хотел бы знать, как сделать SVG правильным размером для любого произвольного текста. У меня есть ощущение, что это довольно сложно, включая генерацию SVG, запрос его с помощью JavaScript, чтобы получить экстенты, а затем применить результаты. Если есть более простой способ не-JS, я бы хотел знать.
источник
Я получил лучшие результаты с 6 различными тенями:
источник
источник
Этот миксин для SASS даст гладкие результаты, используя 8-осную:
И обычный CSS:
источник
Работа с более толстыми штрихами становится немного беспорядочной, если у вас есть удовольствие от sass, попробуйте этот миксин, не идеально, и в зависимости от веса хода он генерирует достаточное количество CSS.
источник
Несколько текстовых теней ..
Примерно так:
Демо: http://jsfiddle.net/punosound/gv6zs58m/
источник
Генератор текстовых теней
Здесь много хороших ответов. Казалось бы, тень текста, вероятно, самый надежный способ сделать это. Я не буду вдаваться в подробности о том, как сделать это с текстовой тенью, поскольку другие уже сделали это, но основная идея состоит в том, что вы создаете несколько текстовых теней вокруг текстового элемента. Чем больше текстовый контур, тем больше текстовых теней вам нужно.
Все представленные ответы (на момент публикации) предоставляют статические решения для тени текста. Я выбрал другой подход и написал этот JSFiddle, который принимает цвет контура, размытие и значения ширины в качестве входных данных и генерирует соответствующее свойство text-shadow для вашего элемента. Просто заполните пробелы, проверьте предварительный просмотр и нажмите, чтобы скопировать CSS и вставить его в таблицу стилей.
Ненужное приложение
Очевидно, что ответы, содержащие ссылку на JSFiddle, не могут быть опубликованы, если они также не содержат код. Вы можете полностью игнорировать это приложение, если хотите. Это JavaScript из моей скрипки, который генерирует свойство text-shadow. Обратите внимание, что вам не нужно внедрять этот код в свои собственные работы:
источник
У меня тоже была эта проблема, и это
text-shadow
было невозможно, потому что углы выглядели бы плохо (если бы у меня не было много много теней), и я не хотел размытия, поэтому единственным другим вариантом было сделать следующее: 2 div, и для фона div, поместите-webkit-text-stroke
на него, который затем позволяет набрать как можно больше контуров.Используя это, я смог получить линию Out , потому что
stroke-width
метод не был вариантом, если вы хотите, чтобы ваш текст оставался разборчивым с очень большим контуром (потому что сstroke-width
контуром начнется внутри надписи, что делает его неразборчивым, когда ширина становится больше, чем буквы.Примечание: причина, по которой я нуждался в таком жирном наброске, заключалась в том, что я подражал названиям улиц в «картах Google» и хотел, чтобы жирный белый ореол вокруг текста. Это решение отлично сработало для меня.
Вот скрипка, показывающая это решение
источник
Вот файл CSS, надеюсь, вы получите то, что хотите
источник