I am using KK Countdown to countdown to Xmas for a site.
I have a design which I have to follow that has each letter of the day countown with a blue background and border radius.
Right now the html is output like this
<span class="kkcount-down" data-time="1387929600">
<span class="kkcountdown-box">
<span class="kkc-dni">169</span>
<span class="kkc-dni-text">DAYS </span>
<span class="kkc-godz">23</span>
<span class="kkc-godz-text"> </span>
<span class="kkc-min">19</span>
<span class="kkc-min-text"> </span>
<span class="kkc-sec">48</span>
<span class="kkc-sec-text">HOURS</span>
</span>
</span>
The class kkc-dni is the part I am trying to target here.
I want to add a background colour to each letter inside that span.
Preferably with CSS. Is this possible?
I have used CSS before to style the first letter of paragraphs before but this is quite different and I cannot find any information on it.
Any suggestions?
Note: Because I am using a plugin to do this countdown I am not sure if I can change the way it outputs the spans and html. If I could wrap each letter in a span I would.
Make separate elements Another way is creating a text with separate elements by using the HTML <span> tag, which is an empty container. This means that you create a multicolor text by putting each letter in a separate element to define a different color for each letter of your text.
To set the font color in HTML, use the style attribute. The style attribute specifies an inline style for an element. The attribute is used with the HTML <p> tag, with the CSS property color. HTML5 do not support the <font> tag, so the CSS style is used to add font color.
Steps to add multicolor into text: Add a simple text inside the <div> tag with the required selector. Apply the linear gradient property with any colors of your choice. Apply webkit properties that will fill the text with the gradient background and declare the color property with transparent background.
I want to add a background colour to each letter inside that span.
const colors = ["#0bf", "#f0b", "#fb0", "#b0f"];
$('.kkc').find('span').each(function() {
const text = $(this).text();
const len = text.length;
const newCont = [...text].reduce((a, ch, i) =>
a + `<span style="background:${colors[i % colors.length]}">${ch}</span>`, ""
);
$(this).html(newCont);
});
.kkcountdown-box>span>span {
background: red;
}
<div class="kkc">
<span class="kkc-dni">169</span>
<span class="kkc-dni-text">DAYS </span>
<span class="kkc-godz">23</span>
<span class="kkc-godz-text"> </span>
<span class="kkc-min">19</span>
<span class="kkc-min-text"> </span>
<span class="kkc-sec">48</span>
<span class="kkc-sec-text">HOURS</span>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
The above will, wrapping every single letter into a separate span
will also add a background color from your Array list of colors.
Once the colors list end is reached will start from the first one and so on.
$('.kkc').find('span').each(function() {
const text = $(this).text();
const len = text.length;
const newCont = [...text].reduce((a, ch, i) => {
const color= '#'+ (Math.random() * 0xffffff).toString(16).substr(-6);
return a + `<span style="background:${color}">${ch}</span>`
}, "");
$(this).html(newCont);
});
.kkcountdown-box>span>span {
background: red;
}
<div class="kkc">
<span class="kkc-dni">169</span>
<span class="kkc-dni-text">DAYS </span>
<span class="kkc-godz">23</span>
<span class="kkc-godz-text"> </span>
<span class="kkc-min">19</span>
<span class="kkc-min-text"> </span>
<span class="kkc-sec">48</span>
<span class="kkc-sec-text">HOURS</span>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
The above will get every letter inside a <span>
and wrap it into a new span
with a randomly generated background color.
You cannot style each letter of word without individually wrapping characters. This is the simple answer to the question, especially as asked in the the title.
However, the wrapping can be done with server-side scripting, or with client-side scripting. If this is acceptable, you should reformulate your question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With