pure HTML/CSS star rating widget

I love creating animated components without using JavaScript. This is an example of a form-based five-star rating widget, which fills in a hidden form element (specifically, a set of radio buttons) that can be submitted as part of a form. If the CSS isn’t loaded for any reason, the radio buttons and text labels are displayed as expected, preserving functionality.

See the Pen pure HTML/CSS star rating widget by Martin Blase (@mblase75) on CodePen.

CSS: text over an angled gray background

This was an interesting little problem to solve: How do we make a column of text display on top of an angled background color? Better yet, how do we cut a corner out of the text to make it fit better?

The answer to the first problem was comparatively straightfoward: two nested blocks, one rotated 45 degrees down and the other rotated 45 degrees right back. The second problem was trickier, but can be solved if you’re using a browser that supports CSS Shapes.

3D CSS crop rows

In the spirit of New Earth USA, here’s some minimalist crop rows in 3D CSS.

Let’s look at how this is built. Continue reading 3D CSS crop rows

CSS 3D playground

Of course, you have to start with the traditional spinning cube. It’s practically the “Hello World!” of 3D animation:

That’s the easy part. The hard part is using equilateral CSS triangles to build a spinning octahedron:

And then pulling together even more trigonometry to build an icosahedron:

Which was, while confusing at times, a surprisingly fun puzzle to solve.

force browsers to print background colors of elements

Most browsers won’t print background colors, and print-only CSS can (or should) be set to force all text to be black so it looks good on a white background. But what about images? What if you have a logo with white text and a transparent background that’s normally displayed over a dark background? Webkit browsers support the -webkit-print-color-adjust: exact style, but that still leaves out Firefox. Continue reading force browsers to print background colors of elements

multi-select with checkboxes

If you have a very long list of options, neither <select multiple> nor <input type=”checkbox”> is quite ideal. This combines the two using jQuery.

When an option is selected, a checkbox (with label) is automatically created using the same “name” and “value” attributes. When the checkbox is un-checked, it fades away (after a brief delay) and is re-attached to the single-select.

Note that this uses progressive enhancement; if JavaScript is disabled, an ordinary <select multiple> will be provided. If some options are already selected in the HTML, those are extracted as checkboxes automatically. The “required” attribute is also passed along to the checkboxes, if set in the <select>.