Цвет градиента текста
Есть ли генератор, или простой способ генерировать текст, как это, но без необходимости определять каждую букву
Так что-то вроде этого:
.rainbow {
background-image: -webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );
background-image: gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );
color:transparent;
-webkit-background-clip: text;
background-clip: text;
}
<span class="rainbow">Rainbow text</span>
Но не с цветами радуги, а с другими цветами (например, от белого к серому / с голубым градиентом и т. Д.) Я не могу найти легкого решения для этого. Какие-либо решения?
5 ответов
Я точно не знаю, как работает механизм остановки. Но у меня есть пример градиентного текста. Может быть, это поможет вам!
_Вы также можете добавить больше цветов к градиенту или просто выбрать другие цвета из цветового генератора.
.rainbow2 {
background-image: -webkit-linear-gradient(left, #E0F8F7, #585858, #fff); /* For Chrome and Safari */
background-image: -moz-linear-gradient(left, #E0F8F7, #585858, #fff); /* For old Fx (3.6 to 15) */
background-image: -ms-linear-gradient(left, #E0F8F7, #585858, #fff); /* For pre-releases of IE 10*/
background-image: -o-linear-gradient(left, #E0F8F7, #585858, #fff); /* For old Opera (11.1 to 12.0) */
background-image: linear-gradient(to right, #E0F8F7, #585858, #fff); /* Standard syntax; must be last */
color:transparent;
-webkit-background-clip: text;
background-clip: text;
}
.rainbow {
background-image: -webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );
background-image: gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );
color:transparent;
-webkit-background-clip: text;
background-clip: text;
}
<span class="rainbow">Rainbow text</span>
<br />
<span class="rainbow2">No rainbow text</span>
Этот эффект работает очень просто. Элемент получает фон, который является градиентом. Он переходит от одного цвета к другому в зависимости от цветов и процентных долей цветности, указанных для него.
Например, в образце текста радуги (обратите внимание, что я преобразовал градиент в стандартный синтаксис):
- Градиент начинается с цвета
#f22
в0%
(это левый край элемента). Первый цвет всегда начинается с0%
хотя процент не указан явно. - Между
0%
в14.25%
, цвет меняется от#f22
в#f2f
постепенно. Проценты установлены на14.25
потому что есть семь смен цвета, и мы ищем равные расколы. - В
14.25%
(от размера контейнера), цвет будет точно#f2f
согласно указанному градиенту. - Точно так же цвета меняются от одного к другому в зависимости от полос, определенных процентами остановки цвета. Каждая группа должна быть шагом
14.25%
,
Таким образом, мы получаем градиент, как в приведенном ниже фрагменте. Теперь одно это будет означать, что фон применяется ко всему элементу, а не только к тексту.
.rainbow {
background-image: linear-gradient(to right, #f22, #f2f 14.25%, #22f 28.5%, #2ff 42.75%, #2f2 57%, #2f2 71.25%, #ff2 85.5%, #f22);
color: transparent;
}
<span class="rainbow">Rainbow text</span>
Так как градиент должен применяться только к тексту, а не к элементу в целом, мы должны указать браузеру обрезать фон из областей за пределами текста. Это делается настройкой background-clip: text
,
(Обратите внимание, что background-clip: text
является экспериментальным свойством и не поддерживается широко.)
Теперь, если вы хотите, чтобы текст имел простой трехцветный градиент (то есть, скажем, из красного - оранжевого - коричневого), нам просто нужно изменить спецификацию линейного градиента следующим образом:
- Первый параметр - это направление градиента. Если цвет должен быть красным с левой стороны и коричневым с правой стороны, используйте направление как
to right
, Если он должен быть красным справа и коричневым слева, укажите направление какto left
, - Следующий шаг - определить цвета градиента. Так как наш градиент должен начинаться как красный на левой стороне, просто укажите
red
в качестве первого цвета (процент считается равным 0%). - Теперь, поскольку у нас есть два изменения цвета (красный - оранжевый и оранжевый - коричневый), проценты должны быть установлены равными 100 / 2 для равных расщеплений. Если равные разделения не требуются, мы можем назначить проценты, как мы желаем.
- Так что в
50%
цвет должен бытьorange
и тогда окончательный цвет будетbrown
, Положение окончательного цвета всегда принимается за 100%.
Таким образом, спецификация градиента должна выглядеть следующим образом:
background-image: linear-gradient(to right, red, orange 50%, brown).
Если мы сформируем градиенты с использованием вышеупомянутого метода и применим их к элементу, мы можем получить требуемый эффект.
.red-orange-brown {
background-image: linear-gradient(to right, red, orange 50%, brown);
color: transparent;
-webkit-background-clip: text;
background-clip: text;
}
.green-yellowgreen-yellow-gold {
background-image: linear-gradient(to right, green, yellowgreen 33%, yellow 66%, gold);
color: transparent;
-webkit-background-clip: text;
background-clip: text;
}
<span class="red-orange-brown">Red to Orange to Brown</span>
<br>
<span class="green-yellowgreen-yellow-gold">Green to Yellow-green to Yellow to Gold</span>
Вы можете достичь этого эффекта, используя комбинацию CSS linear-Gradient и Mix-Blend-Mode.
HTML
<p>
Enter your message here...
To be or not to be,
that is the question...
maybe, I think,
I'm not sure
wait, you're still reading this?
Type a good message already!
</p>
CSS
p {
width: 300px;
position: relative;
}
p::after {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, red, orange, yellow, green, blue, purple);
mix-blend-mode: screen;
}
Что это делает, это добавить линейный градиент на абзаце ::after
псевдоэлемент и сделать так, чтобы он охватывал весь элемент абзаца. Но с mix-blend-mode: screen
градиент будет отображаться только в тех местах, где есть текст.
Вот jsfiddle, чтобы показать это на работе. Просто измените linear-gradient
ценности для достижения того, что вы хотите.
Пример CSS текстового градиента
background-image: -moz-linear-gradient(top,#E605C1 0%,#3B113B 100%);
background-image: -webkit-linear-gradient(top,#E605C1 0%,#3B113B 100%);
background-image: -o-linear-gradient(top,#E605C1 0%,#3B113B 100%);
background-image: -ms-linear-gradient(top,#E605C1 0%,#3B113B 100%);
background-image: linear-gradient(top,#E605C1 0%,#3B113B 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
position:relative;
display:inline-block; /*required*/
Онлайн генератор http://www.textgradient.com/
.gradient_text_class{
font-size: 72px;
background: linear-gradient(to right, #ffff00 0%, #0000FF 30%);
background-image: linear-gradient(to right, #ffff00 0%, #0000FF 30%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
<div class="gradient_text_class">Hello</div>
body{ background:#3F5261; text-align:center; font-family:Arial; }
h1 {
font-size:3em;
background: -webkit-linear-gradient(top, gold, white);
background: linear-gradient(top, gold, white);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
position:relative;
margin:0;
z-index:1;
}
div{ display:inline-block; position:relative; }
div::before{
content:attr(data-title);
font-size:3em;
font-weight:bold;
position:absolute;
top:0; left:0;
z-index:-1;
color:black;
z-index:1;
filter:blur(5px);
}
<div data-title='SOME TITLE'>
<h1>SOME TITLE</h1>
</div>
@import url(https://fonts.googleapis.com/css?family=Roboto+Slab:400);
body {
background: #222;
}
h1 {
display: table;
margin: 0 auto;
font-family: "Roboto Slab";
font-weight: 600;
font-size: 7em;
background: linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
line-height: 200px;
}
<h1>beautiful</h1>
Если кто-то ищет только текстовый градиент. вот так..
//HTML
<h1>Here We Go</h1>
//CSS
h1{
background: -webkit-linear-gradient(#fff700, #1aa001);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-shadow: 0px 0px 10px rgba(255, 251, 118, 0.4);
}