Могу ли я использовать горизонтальный многоцветный градиент для текста с помощью CSS3/HTML 5?

Я пытаюсь заменить флэш-эффект на основе sIFR, используемый в настоящее время на веб-сайте, стилем CSS 3. У меня есть эффект текстового градиента, хорошо работающий с использованием CSS 3, но исходная реализация sIFR имела несколько цветов, а не просто градиент одного цвета к другому.

Может ли кто-нибудь предоставить мне пример стилизации текстового элемента, такого как H2, с использованием нескольких цветов вдоль горизонтальной оси?

Спасибо, Брайан.


person Brian Scott    schedule 12.04.2011    source источник


Ответы (2)


введите здесь описание изображения

Вот пример кода SVG, протестированный с FF4, Safari 5 и Chrome. Обратите внимание, что вы должны использовать это как XHTML-страницу, чтобы Safari мог ее отобразить. Это также должно работать с IE9, но я не проверял это.

<svg
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   version="1.1">

  <defs
     id="FooDefs">
    <linearGradient
       id="MyFirstGradient"
       x1="400"
       y1="350"
       x2="400"
       y2="420"
       gradientUnits="userSpaceOnUse">
      <stop
         id="stop1"
         style="stop-color:#1acf86;"
         offset="0" />
      <stop
         id="stop2"
         style="stop-color:#ff0051;"
         offset="0.25" />
      <stop
         id="stop3"
         style="stop-color:#1da1c9;"
         offset="0.625" />
      <stop
         id="stop4"
         style="stop-color:#e45f25;"
         offset="1" />
    </linearGradient>
  </defs>
    <text
         x="150"
         y="420"
         id="textBAR"
         style="font-size:72px;fill:url(#MyFirstGradient);">
BIG TEXT TEST
</text>
</svg>
person Michael Mullany    schedule 14.04.2011
comment
@Blowsie: Верно, но объяснение / ответы расширились по сравнению с исходным запросом, как только выяснилось, что CSS 3 не предлагает то, что требуется. Я обновил исходный вопрос, чтобы исправить это. - person Brian Scott; 15.04.2011

Насколько я знаю, это возможно только в webkit.

h1 {
  font-size: 72px;
  background-image: -webkit-gradient(
    linear,
    left top,
    right top,
    color-stop(0.03, rgb(250,3,3)),
    color-stop(0.52, rgb(240,255,127)),
    color-stop(0.76, rgb(42,24,173)));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

http://jsfiddle.net/gEGHq/1

person Blowsie    schedule 12.04.2011
comment
Я пытаюсь проверить ваш код, мои результаты: jsfiddle.net/DoubleYo/qGfzm И я попробовал с -webkit-mask-image, но вы можете изменить непрозрачность только в градиенте. - person Yoann; 12.04.2011
comment
@DoubleYo: Спасибо, что нашли время, ваша демонстрация пока выглядит хорошо. Это определенно возможно только в браузерах webkit? - person Brian Scott; 12.04.2011
comment
@DoubleYo, если честно, ваш пример ничем не отличается от моего, @Brian Scott Я на 99% уверен, что только в webkit есть решение только для CSS. - person Blowsie; 12.04.2011
comment
Я просто меняю цвет FROM и STop, чтобы зафиксировать значения 0% и 100%. И я отображаю элемент inline-block, чтобы градиент на 100% был в конце текста. - person Yoann; 12.04.2011
comment
хорошие изменения, я не знал, что они делают - person Blowsie; 12.04.2011
comment
Вы можете получить тот же эффект в FF4 с текстом SVG. - person Michael Mullany; 12.04.2011
comment
@Michael, остается ли исходный текст доступным для целей SEO? Кроме того, если я реализую текстовый подход SVG, какие браузеры это будет охватывать? - person Brian Scott; 12.04.2011
comment
Да, это оставляет текст доступным для Google - Google правильно анализирует SVG. Это работает в Chrome 10, FF4 и должно работать в IE9, так как они имеют по крайней мере статическую поддержку SVG, но я не проверял это. Это работает только в Safari, если вы используете свою страницу как XHTML-страницу — пока нет встроенного SVG, как в других браузерах. - person Michael Mullany; 14.04.2011
comment
@Michael: если вы разместите пример кода svg с градиентом, я приму его в качестве ответа. Кроме того, вы знаете, как включить foreigobject для обратной совместимости с браузерами, отличными от svg? - person Brian Scott; 14.04.2011
comment
@Brian для IE 7 и 8 - браузеры, о которых, я думаю, вам следует позаботиться, вы можете реализовать текстовые градиенты с помощью VML - для этого в Интернете есть несколько примеров кодов. Я не знаю, как это будет отображаться в старых браузерах, поэтому не могу комментировать запасные варианты. - person Michael Mullany; 14.04.2011
comment
@Michael Я знаю о SVG, вопрос явно требует решения CSS. - person Blowsie; 15.04.2011
comment
@Blowsie - да, ответ больше не соответствует вопросу. Брайану, вероятно, следует переформулировать свой вопрос или принять ваш. - person Michael Mullany; 15.04.2011