Can I style just a part of a single character?
CSS attributes cannot be assigned to parts of characters. But if you want to style only a certain section of a character, there is no standardized way to do that.
Is it possible to style an "X" which is half-way red and then black?
<div class="content">
X
</div>
.content {
position: relative;
font-size: 50px;
color: black;
}
.content:after {
content: 'X';
color: red;
width: 50%;
position: absolute;
overflow: hidden;
}
Demo on jsFiddle
My intention is styling the Font Awesome icon-star
symbol. If I have an overlay with dynamic width, shouldn't it be possible to create an exact visualization of scores?
While playing around with a demo fiddle, i figured it out myself and wanted to share my solution. It's quite simple.
To partly style a single character, you need extra markup for your content. Basically, you need to duplicate it:
<div class="content">
<span class="overlay">X</span>
X
</div>
Using pseudo-elements like :after or :before would be nicer, but i didn't found a way to do that.
The overlay needs to be positioned absolutely to the content element:
.content {
display: inline-block;
position: relative;
color: black;
}
.overlay {
width: 50%;
position: absolute;
color: red;
overflow: hidden;
}
Do not forget overflow: hidden;
in order to cut off the remaing part of the "X".
You can use any width instead of 50%
which makes this approach very flexible. You can even use a custom height, other CSS attributes or a combination of multiple attributes.
Great work on your solution. I’ve got a version that uses :after
(instead of duplicating the content in the HTML) working in Chrome 19.
Basically:
position:relative
on .content
:after
absolutely:after
to overflow:hidden
:after
to hide bits of it.I’m not sure if it’ll work well cross-browser though — the em
values will probably work out a bit differently. (Obviously it definitely won’t work in IE 7 or below.)
In addition, you end up having to duplicate the content in your CSS file instead of the HTML, which might not be optimal depending on the situation.
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