You might not have known this but over the past week there has been a shadow war taking place right here, on Dev, ok it's not that serious but a fe...
For further actions, you may consider blocking this person and/or reporting abuse
cc: @inhuofficial @madsstoumann @afif
Chrome does not support
range-progress
(like Firefox), but a hack usingbox-shadow
can be used. Not fully tried and tested, but here is my “single input non-JS”-version:thats awesome. i love the hearts
That's actually awesome!!! The web standards people really should standardise those props.
actually the war started with this post: dev.to/lapstjup/implementing-a-sta...
@inhuofficial 's post is 2 hours older than that one 😉
But yeah there was mention of that post
Yeah he posted that shortly after, and now Andrew has joined the fight.
People on dev.to are going to be so confused if they only come here every once in a while!
This is great, just swap the
opacity: 0.01
trick for a proper screen reader only class and maybe steal my text-shadow trick to give the stars a darker border (so contrast is high enough for a control at 3:1) and this gets an A++!I actually think yours behaves better than mine too!
Have all of the ❤🦄 and bookmark love I can give!
I've made a slight edit, I use text-stroke though rather than the shadow trick.
Oh I just noticed something else (minor tweak) your stars need to have
aria-hidden=true
instead ofrole=presentation
as they are still screen reader accessible. Presentation basically says “this has no role” (think of it like turning it into a div or span if it was button for example) but doesn’t remove it from the accessibility tree. Not sure how I missed that!Fixed
For people interested I converted this into a react component too
It's basically the exact same code but with some React nicety added for instance you can say how many stars you'd like and React will handle all the HTML for you
I like the unicode usage. But making it support half stars like how @madsstoumann does in their implementation would be hard right?
I can think of having maybe two stars in one place and hiding one of them vertically based on fraction.
Yeah, half star will be difficult. I think you're right that you'd hide half of a star but doing this will double the amount of HTML required too.
Use ten stars, then use clip-path and nth-child(odd) for to position them, that should work fairly well, but yes, it would be extra HTML
I wanted to turn a star rating into a Likert Scale, so I created a smiley ttf and used that, one of the big advantages was I could use css to style it:
cormacmaher.com/Likert-Scale-icon-...
Why put the star character in the CSS rather than the HTML?
Good point, it was in the before initially because I was changing between different characters (which you can only do in a before) but I edited the code and that was left in as legacy.
Ah, I see. Thanks.
I've updated the article to not include the before stuff now, thanks for pointing it out.
Honestly, I'm not even here for the stars but just for the star wars between you four guys.
This is great, I used unicode stars for a exactly this a few years ago on my shopify e-commerce 😀
Thank you, it's good to know people are using techniques like this out in the real web ☺️