#javascript #html #css
Вопрос:
Я хочу, чтобы определенный текст на веб-странице отображался в цветовом градиенте слева направо, где цвета выбираются случайным образом из списка. Вот мой HTML
<div id="randomgrad">Random Gradient</div>
<script src="randomgradient.js"></script>
Вот мой CSS
#randomgrad {
font-family: sans-serif;
font-weight: bold;
font-size: 72px;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
и вот сценарий
var colors = ['#58D68D', '#F1C40F', '#68C4EC', '#EC7063', "#F39C12", "#979A9A", "#40B5AD", "#A52A2A"];
randcol = colors[Math.floor(Math.random() * colors.length)];
randcoltwo = colors[Math.floor(Math.random() * colors.length)];
gradcol = '-webkit-linear-gradient(left,' randcol ' ,' randcoltwo ')';
document.getElementById('randomgrad').style.background = gradcol;
Что я получаю, так это фон с градиентом случайных цветов, но без текста. Так что почему-то обрезка фона не работает.
Ответ №1:
фоновый клип работает с background-image
и background-color
(а не background
). В вашем случае — линейный/радиальный градиент, установленный с помощью javascript, вам нужно использовать backgroundImage
var colors = ['#58D68D', '#F1C40F', '#68C4EC', '#EC7063', "#F39C12", "#979A9A", "#40B5AD", "#A52A2A"];
randcol = colors[Math.floor(Math.random() * colors.length)];
randcoltwo = colors[Math.floor(Math.random() * colors.length)];
gradcol = '-webkit-linear-gradient(left,' randcol ' ,' randcoltwo ')';
document.getElementById('randomgrad').style.backgroundImage = gradcol;
#randomgrad {
font-family: sans-serif;
font-weight: bold;
font-size: 72px;
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
color:transparent;
}
<div id="randomgrad">Random Gradient</div>