Samstag, 5. April 2014

Stripes in CSS




CSS-Tricks





Stripes in CSS



Stripes are pretty easy to do in CSS these days. CSS gradients via the background-image property really got our back. I thought I'd document some variations in one easy to reference place.



Normal Colored Diagonal Stripes


Diagonal stripes are easy to pull off thanks to repeating-linear-gradient():


background: repeating-linear-gradient(
45deg,
#606dbc,
#606dbc 10px,
#465298 10px,
#465298 20px
);

Rather than the very last color-stop being 100% (or nothing, which means 100%) it's a fixed value. Beyond that, it just kinda starts over. This is how I think of it (zoomed in):



See the Pen epfEc by Chris Coyier (@chriscoyier) on CodePen.


Gradient Diagonal Stripes


If you make the background a regular linear-gradient(), and then make half the stripes totally transparent using repeating-linear-gradient(), it can appear as if the stripes have gradients. Because of multiple backgrounds (and stacking order), you can do that all together on a single element:


background: 
/* On "top" */
repeating-linear-gradient(
45deg,
transparent,
transparent 10px,
#ccc 10px,
#ccc 20px
),
/* on "bottom" */
linear-gradient(
to bottom,
#eee,
#999
);

See the Pen xhkpD by Chris Coyier (@chriscoyier) on CodePen.


Stripes Over Image


Perhaps a texture? Any image will work. You could reveal part of the image by making some stripes fully transparent and some fully opaque. Or, any combination. Again multiple backgrounds allows this to all happen on the same element.


background: repeating-linear-gradient(
45deg,
rgba(0, 0, 0, 0.2),
rgba(0, 0, 0, 0.2) 10px,
rgba(0, 0, 0, 0.3) 10px,
rgba(0, 0, 0, 0.3) 20px
),
url(http://s3-us-west-2.amazonaws.com/s.cdpn.io/3/old_map_@2X.png);

See the Pen gaKyv by Chris Coyier (@chriscoyier) on CodePen.


Any Direction, Any Angle


It doesn't have to be exactly 45degrees. That's part of the beauty of the repeating-linear-gradient(). It's not like this perfect rectangle that has to line up and repeat, it's just a set of drawing instructions that repeats.


background: repeating-linear-gradient(
-55deg,
#222,
#222 10px,
#333 10px,
#333 20px
);

See the Pen qfHmw by Chris Coyier (@chriscoyier) on CodePen.


Straight Stripes (slightly better browser support)


There is a super old syntax for CSS gradients that used -webkit-gradient() (note the no "linear" or "radial"). Basically: Safari 4, Chrome 1-9, iOS 3.2-4.3, Android 2.1-3.0. Old stuff. Those browsers don't support repeating gradients. But you could kinda fake it, especially for straight stripes, by making a small rectangle of background via background-size, drawing the stripes in there, and having it repeat naturally like background-image does.


background: linear-gradient(
to bottom,
#5d9634,
#5d9634 50%,
#538c2b 50%,
#538c2b
);
/* The rectangle in which to repeat.
It can be fully wide in this case */
background-size: 100% 20px;

See the Pen uxJrf by Chris Coyier (@chriscoyier) on CodePen.


If you wanted to get crazy, you could transform: rotate() some element with these straight stripes and cut off the overflow, in which to replicate diagonal stripes with deeper browser support. Sounds like a lot of work.


Vertical Stripes


You could use the same method as above for vertical stripes too. Or, just use repeating-linear-gradient():


background: repeating-linear-gradient(
to right,
#f6ba52,
#f6ba52 10px,
#ffd180 10px,
#ffd180 20px
);

See the Pen oCpEu by Chris Coyier (@chriscoyier) on CodePen.


Just to be clear, with repeating-linear-gradient() you are best off doing a -webkit-repeating-linear-gradient() as well as the unprefixed one, if you're, you know, prefixing buy yourself which you shouldn't.


Radial Stripes


Who says they have to be straight lines eh? Radial gradients can be repeating-linear-gradients():


/* Note the RADIAL */
background: repeating-radial-gradient(
circle,
purple,
purple 10px,
#4b026f 10px,
#4b026f 20px
);

See the Pen AEymd by Chris Coyier (@chriscoyier) on CodePen.


Funky Town


Sometimes rounding errors (maybe?) or other kinda rendering funkiness happens.



Whattyagonnado. I suspect it will get better over time.


All together now.




Stripes in CSS is a post from CSS-Tricks








Keine Kommentare:

Kommentar veröffentlichen