There is a latent inequality between female and male athletes. ESPMW decided to bring this debate to websites, newspapers and sports fans, including athletes in a very visible way: in the courts. Having this in mind, we turned different sports courts into gender inequality graphics in sports. Making use of the natural divisions found in each sports court we painted them blue and a small space pink. In the corner of the courts, we placed the message highlighting gender inequality in sports. E.g.: tennis court: blue (the largest portion) – tournaments that pay bigger prizes to men. Pink (only a small square) – tournaments that pay equal prizes to men and women. The idea was executed electronically during ESPN’s broadcasting of women’s sports. In parallel, the project took place in real courts in parks, gymnasiums, and clubs. Then, the “Inequality Courts” were photographed and turned into posters and print ads.
Every week, we’ll give you an overview of the best deals for designers, make sure you don’t miss any by subscribing to our deals feed. You can also follow the recently launched website Type Deals if you are looking for free fonts or font deals.
25 Hand-Drawn Modern Script Fonts
This amazing bundle from Moriztype Studio features a gorgeous set of 25 professional modern script fonts at one ginormous discount. With the included extended license, you can create as many invitations, signs or note cards as you like for yourself or your business.
15 unique infographic sets in 1 low-priced mega bundle! You’ll have loads of infographic elements to play with including pie charts, arrows, maps, clocks and more, for just about any industry out there. These elements are all fully customizable too, so the sky’s the limit with what you can put together.
TT Lakes Font Family Bundle of 54 Unique Typefaces
Made up of 3 different families (Lakes, Lakes Condensed, Lakes Compressed), you’ll take home 54 unique typefaces chock full of features such as fractions, ordinals, numerals, superscripts, case sensitive forms and support of more than 70 languages.
Easily Create Stunning Web Animations with Lucid 3
Creating animations is easier than you think! With The Escapers amazing Mac app Lucid 3, you can now whip up stunning CSS3 animations for your Web pages. Create your own or work with a number of pre-built animations, all of which are highly customizable and easy to use.
Taiwanese-American illustrator Maggie Chiang creates lovely illustrations of both real and less real places. You can discover her work on her website or Instagram, but also occasionaly in exhibitions and other shows.
With all the excitement around CSS Grid, I haven’t seen as much talk about the new fr CSS length unit (here’s the spec). And now that browser support is rapidly improving for this feature, I think this is the time to explore how it can be used in conjunction with our fancy new layout engine because there are a number of benefits when using it; more legible and maintainable code being the primary reasons for making the switch.
To get started, let’s take a look at how we’d typically think of building a grid in CSS. In the example below, we’re creating a four column grid where each column has an equal width:
If you’ve never seen that repeat() function after the grid-template-columns property then let me introduce you to one of the neatest features of CSS Grid! It’s a shorthand, essentially, allow us to more succinctly describe repeating values. We could have written grid-template-columns: 25% 25% 25% 25%; instead, but it’s cleaner using repeat(), particularly when you have more verbose widths (like a minmax() expression).
The syntax is essentially this:
repeat(number of columns/rows, the column width we want);
There are actually a couple of issues with what we’ve done so far, though.
First, in order to use this neat CSS function, we had to do a tiny bit of math. We had to think to ourselves what is the total width of the grid (100%) divided by the number of columns we want (4), which brings us to 25%. In this instance, the math is pretty darn easy so we don’t have to worry about it but in more complex examples we can completely avoid doing the math and let the browser figure that out for us. We do have calc() available to us, so we could have done repeat(4, calc(100% / 4), but even that’s a little weird, and there is another problem anyway…
The second issue is a problem with overflow. Because we’ve set each column to 25% and a grid-column-gap to 10px then that pushes grid element wider than 100%. It isn’t how you’d expect things to work from just looking at the code above but that’s how percentages work. What we’re really saying with the code above is „set each column to 25% the width of the viewport and have a 10px gap between them.” It’s a subtle difference, but it causes a big issue with layout.
We’ve inadvertently caused some horizontal scrolling here:
The fr unit (a „fraction”) can be used when defining grids like any other CSS length such as %, px or em. Let’s quickly refactor the code above to use this peculiar new value:
That will look just the same as the example above because in this instance we’re setting each of our four columns to one fraction (which happens to be 1/4 or 25%). But! There’s no overflow on the x-axis anymore because setting each column to 1fr takes that 10px into account automatically and subtracts it from the total width available for each column.
Why the heck should I learn how to use this fancy new CSS length if I can mostly stick to the units like percent or pixels, you wonder? Well, let’s dig into a more complex CSS Grid example to explain why fr is a better alternative. In a new example, let’s say we want our navigation on the left followed by a twelve column grid which should look like this:
This is a pretty typical scenario for a lot of UIs and so using the fr unit prevents us from either making a separate grid div or fumbling about with calc. Because if we didn’t use fr in the example above then we’d somehow have to figure out the following:
the width of each column = ((width of viewport - width of nav) / number of columns) * 1%
That’s possible for sure, it’s just awfully painful to read, and if we changed the width of the nav then we’d have to do that dumb calculation all over again. Instead, the fr unit tidies all of that up into a super readable line of code:
What we’re doing here is setting a fixed width in pixels for the first column and then creating twelve separate columns which are set at one „fraction of the free space” (literally how the spec phrases it). But there’s no crazy calculations or anything! It’s super readable and if the width of that left nav changes then the width of our columns on the right will adjust themselves automatically.
With just a little bit of legwork we’ve made our interface more maintainable for the future and we’ve ensured that our code is more legible for the next developers that are coming up behind us.
Information from other folks
Some of the fun and power of the fr unit comes from mixing it with other units. Imagine a fixed sidebar and main content area that takes up the rest of the space: grid-template-columns: 200px 1fr; easy!
I’m not sure if „data massaging” is a real thing, but that’s how I think of what I’m about to describe.
Dave and I were thinking about a bit of a redesign for ShopTalk Show. Fresh coat of paint kinda thing. Always nice to do that from time to time. But we wanted to start from the inside out this time. It didn’t sound very appealing to design around the data that we had. We wanted to work with cleaner data. We needed to massage the data that we had, so that it would open up more design possibilities.
We had fallen into the classic WordPress trap
Which is… just dumping everything into the default content area:
We used Markdown, which I think is smart, but still was a pile of rather unstructured content. An example:
If that content was structured entirely differently every time (like a blog post probably would be), that would be fine. But it wasn’t. Each show has that same structure.
It’s not WordPress’ fault
We just didn’t structure the data correctly. You can mess that up in any CMS.
To be fair, it probably took quite a while to fall into a steady structure. It’s hard to set up data from day one when you don’t know what that structure is going to be. Speaking of which…
The structure we needed
This is what one podcast episode needs as far as structured data:
Title of episode
Description of episode
Featured image of episode
MP3
URL
Running Time
Size in Bytes
A list of topics in the show with time stamps
A list of links
Optional: Guest(s)
Guest Name
Guest URL
Guest Twitter
Guest Bio
Guest Photo
Optional: Advertiser(s)
Advertiser Name
Advertiser URL
Advertiser Text
Advertiser Timestamp
Optional: Job Mention(s)
Job Company
Job Title
Job URL
Job Description
Optional: Transcript
Even that’s not perfect
For example: we hand-number the episodes as part of the title, which means when we need that number individually we’re doing string manipulation in the templates, which feels a bit janky.
Another example: guests aren’t a programmatic construct to themselves. A guest isn’t its own database record with an ID. Which means if a guest appears on multiple shows, that’s duplicated data. Plus, it doesn’t give us the ability to „display all shows with Rebecca Murphey” very easily, which is something we discussed wanting. There is probably some way to program out way out of this in the future, we’re thinking.
Fortunately, that structure is easy to express in Advanced Custom Fields
Once you know what you need, ACF makes it pretty easy to build that out and apply it to whatever kind of page type you need to.
I’m aware that other CMS’s encourage this kind of structuring by default. Cool. I think that’s smart. You should be very proud of yourself for choosing YourFavoriteCMS.
In ACF, our „Field Group” ended up like this:
We needed „Repeater” fields for data like guests, where there is a structure that needs to repeat any number of times. That’s a PRO feature of ACF, which seems like a genius move on their part.
Let the data massaging begin
Unfortunately, now that we had the correct structure, it doesn’t mean that all the old data just instantly popped into place. There are a couple of ways we could have gone about this…
We could have split the design of show pages by date. If it was an old show, dump out the content like we always have. If it’s a new show, use the nice data format. That feels like an even bigger mess than what we had, though.
We could have tried to program our way out of it. Perhaps some scripts we could run that would parse the old data, make intelligent guesses about what content should be ported to the new structure, and run it. Definitely, a non-trivial thing to write. Even if we could have written it, it may have taken more time than just moving the data by hand.
Or… we could move the data by hand. So that’s what we ended up doing. Or rather, we hired someone to move the data for us. Thanks Max! Max Kohler was our data massager.
Hand moving really seemed like the way to go. It’s essentially data entry work, but required a little thought and decision making (hence „massaging”), so it’s the perfect sort of job to either do yourself or find someone who could use some extra hours.
Design is a lot easier with clean and structured data
With all the data nicely cleaned up, I was able to spit it out in a much more consistent and structured way in the design itself:
This latest design of ShopTalk Show is no masterpiece, but now that all this structural work is done, the next design we should be able to focus more on aesthetics and, perhaps, the more fun parts of visual design.
All the latest happenings! As I like to do, I round up a bunch of things that have happened in the past few months around here on this site, over at CodePen and ShopTalk, and other sites where I got to be a guest or was involved somehow. There has been some big releases, some redesigns, and a bunch of guest podcasts.
The biggest release ever on CodePen is CodePen Projects. It hasn’t even been out three months yet! As opposed to Pens on CodePen, Projects gives you an editor that is more of a full-on IDE with your own file system.
I was a guest on Eric Siu’s podcast Growth Everywhere, Episode 196 where we talk numbers and growth stuff. (Fair warning on the link: it’s pretty pop-up heavy.)
I also had a lot of fun on the Email Design Podcast, Episode 60, where I got to chat with Kevin Mandeville and Jason Rodriguez specifically about email stuff. That’s not something I get to talk about much, but I actually find myself doing quite a bit lately with email, and it’s a very weird world that somehow feels completely different than „normal” front-end development.
I have moved back home to Milwaukee, after spending the last 7 months in Miami. Bittersweet! Farewell, friends old and new in Miami. Hello, friends old and new in Milwaukee.
We’re less than a month away from the 10 year anniversary of CSS-Tricks! We’ll definitely do something. No rooftop party or anything, but definitely come see what we got on July 4th.
I redesigned my personal site. It’s nothing special to look at, but I think it’s going to serve my needs very well. The new site needed to clearly show: this is who I am, this is what I do, this is where I exist other places on the web, and most importantly, these are the things I want you to do.
The most fun little bit is the radio buttons by the bio area, which allow you to customize the length, first person or third, and what format it’s in.
ShopTalk also has a brand new website. Also designed and implemented by me, so, brace yourselves for utilitarian. This one was driven by backend data. I think I’ll write about that soon.
We recently did a podcast called On Podcasting where I got to chat with Chris Enns about podcasting equipment. I figured it was about time to get some advice and update my gear. I bet if you factor in all the ShopTalk, CodePen Radio, guest appearances, and videos I’ve recorded, I’m around 1,000 episodes of stuff. Probably about time I have some decent gear. I pulled the trigger on the major upgrade. I’ll have to post about that soon as well.
My public speaking schedule for the rest of the year is:
If you like ethical homeware and value ecological projects, you should directly head to Folkk’s Kickstarter page and support them. Initiated by Nova Iskra, the project aims to connect craft artisans with designers to produce quality homeware that’s both modern and traditional.
Folkk is a design-driven project that goes with human values. It aims to empower artisans and create quality, long lasting products, not industrial plastic shit you’ll throw away a few weeks later. On the company’s website, you will find a presentation of the current designers and artisans, the goal of the Kickstarter campaign is to enable these artisans to keep on working and pass their knowledge, but also to start working with new artisans and designers.
You can see below a small selection of designs produced by Folkk’s designers and artisans, don’t forget you can obtain these by supporting the Kickstarter campaign.
This tutorial will show you how to use textures, layer styles, and brushes to create a colorful, delicious ice-cream scoop text effect. Let’s get started!
Create a 1000 x 800pxNew Document, click the Create new fill or adjustment layer icon at the bottom of the Layers panel, and choose Gradient.
Create the GradientFill using the Colors#7e4569 to the left, #5a1961 in the middle, and #311737 to the right.
Change the Style to Radial and the Scale to 150%, and check the Dither box.
Step 2
Create the text, each letter in a separate layer, in All Caps using the font Neretto Sans. Set the Size to 150 pt and the Color to White.
Step 3
For each letter you have, select its layer, and press Command-T to enter Free Transform Mode.
Rotate and move the letters slightly to create a dynamic result, and hit the Return key to accept the changes.
Step 4
In order to keep things organized, match each layer’s name with its letter, and add numbers for any repeated ones.
Step 5
For each letter’s layer you have, Duplicate it, and change the copy’s Fill value to 0.
2. How to Select and Add Texture Images
Step 1
Open the Ice cream scoop images, and pick the Quick Selection Tool.
Click the Add to selection icon in the Options bar, and check the Auto-Enhance box if you want to get a precise selection, though this is optional as it might slow things down a little bit.
Click-drag to select a scoop image, and go to Edit > Copy.
Step 2
Back to the original document, go to Edit > Paste.
Right-click the pasted image’s layer and choose Convert to Smart Object.
Place the scoop image on top of the letter you want to add it to, right-click the scoop image’s layer again, and choose Create Clipping Mask to clip the image to the letter.
Step 3
Press Command-T, and Transform the scoop image until you like how it looks inside the letter.
Hit the Return key to accept the changes.
Step 4
Repeat the same steps to select the other scoop images and add them to the rest of the letters you have.
You can use the same image more than once, but Transform it to make it look different.
3. How to Style a Text Layer
Double-click the first letter’s original text layer to apply the following Layer Style:
Step 1
Add a Bevel and Emboss with these settings:
Size: 35
Check the Anti-aliased box
Highlight Mode:
Color: #ff988a
Shadow Mode: Color Burn
Color: #daaf98
Opacity: 35%
Step 2
Add a Contour with these settings:
Contour: Half Round
Check the Anti-aliased box.
Step 3
Add a Texture with these settings:
Pattern: Ant Farm
Step 4
Add an Inner Shadow with these settings:
Blend Mode: Linear Burn
Color: #b27a67
Opacity: 35%
Distance: 0
Choke: 13
Size: 24
Step 5
Right-click the styled layer, choose Copy Layer Style, select the remaining original text layers, right-click any of them, and choose Paste Layer Style.
Step 6
You might notice that the style doesn’t look good for all the different colors.
So you can double-click each letter’s layer, and adjust its Bevel and Emboss’s Highlight Mode and Shadow Mode Colors, as well as its Inner Shadow Color.
Match those colors to the letter’s texture colors, and you can even sample the colors from the texture itself. No specific values are needed, just whichever ones look good.
4. How to Add Dimension
Step 1
Double-click the first letter’s copy text layer to apply a Bevel and Emboss effect with these settings:
Size: 24
Uncheck the Use Global Light box
Angle: 164
Altitude: 53
Check the Anti-aliased box
Highlight Mode: Soft Light
Color: #ffe9e9
Shadow Mode:
Opacity: 0%
Step 2
Copy and Paste the Layer Style to the rest of the copy text layers you have.
Step 3
Place each letter’s layers in a Group with its name.
5. How to Create Stroke Layers
Step 1
Create a New Layer on top of all the first letter’s layers inside its group, and name it Stroke.
Step 2
Press-hold the Option key, and click-drag the letter’s scoop image to create a Copy and place it on top of the Stroke layer.
Step 3
Clip the copy scoop image’s layer to the Stroke layer.
Repeat the same steps to create the other letter’s Stroke layers.
6. How to Stroke a Work Path With a Modified Brush Tip
Step 1
Pick the Brush Tool, and open the Brush panel.
Choose a Hard Round Tip, and use these settings for the Brush Tip Shape and Shape Dynamics tabs.
Step 2
Right-click the first letter’s text layer, and choose Create Work Path.
Make sure to select the Stroke layer afterwards.
Step 3
With the Brush Tool active, hit the Return key once to Stroke the path.
Pick the Direct Selection Tool (A), and hit the Return key one more time to get rid of the work path.
Step 4
Repeat to create the rest of the letters’ strokes.
7. How to Style a Stroke Layer
Double-click the first letter’s Stroke layer to apply the following Layer Style:
Step 1
Add a Bevel and Emboss with these settings:
Size: 7
Uncheck the Use Global Light box
Angle: 167
Altitude: 21
Check the Anti-aliased box
Shadow Mode: Linear Burn
Color: #d5ccb9
Opacity: 65%
Step 2
Add a Drop Shadow with these settings:
Blend Mode: Linear Burn
Color: #6e6e6e
Opacity: 10%
Distance: 0
Size: 10
Step 3
Copy and Paste the Layer Style to all the Stroke layers.
8. How to Create a Sprinkles Brush Tip
Step 1
Create a 100 x 100pxNew Document with a WhiteBackground, pick the Rounded Rectangle Tool, and set the Radius in the Options bar to 15.
Click once anywhere in the document to get the Create Rectangle box, change the Width to 15 and the Height to 35, and click OK.
Make sure that the shape’s Fill Color is Black, and place it in the center of the document.
Step 2
Go to Edit > Define Brush Preset, change the Name to Sprinkles, and click OK.
Step 3
Go back to the original document, pick the Brush Tool and open the Brush panel.
Choose the Sprinkles tip and use these settings:
Brush Tip Shape
Shape Dynamics
Scattering
Color Dynamics
9. How to Use a Sprinkles Brush Tip
Step 1
Create a New Layer on top of all layers and call it Sprinkles.
Set the Foreground Color to #fe0000 and the Background Color to #1b9be6.
Click-drag slightly inside the text area to add the sprinkles.
You can change the color outcome by changing the Foreground and/or Background Colors.
Double-click the Sprinkles layer to apply the following Layer Style:
Step 2
Add a Bevel and Emboss with these settings:
Size: 1
Uncheck the Use Global Light box
Angle: 128
Altitude: 37
Check the Anti-aliased box
Highlight Mode: Vivid Light
Step 3
Add a Drop Shadow with these settings:
Blend Mode: Color Burn
Color: #010101
Opacity: 10%
Distance: 3
Size: 5
Step 4
Click the Add layer mask icon at the bottom of the Layers panel, and select the mask’s thumbnail.
10. How to Create a Mask’s Texture Fill
Step 1
Set the Foreground and Background Colors to Black and White, and go to Filter > Render > Clouds.
Step 2
Go to Filter > Filter Gallery > Sketch > Reticulation, and use these settings:
Density: 12
Foreground Level: 40
Background Level: 5
Step 3
Click the New effect layer icon in the bottom right corner, and apply the Photocopy filter with these settings:
Detail: 7
Darkness: 8
Step 4
Add another New effect layer, and apply the Bas Relief filter with these settings:
Detail: 13
Smoothness: 3
Light: Bottom
This will apply a Layer Mask that blends the sprinkles with the scoops to make the effect look more realistic.
11. How to Add More Sprinkles
Step 1
Create a New Layer on top of the Sprinkles layer, name it Sprinkles 2, and Copy and Paste the Sprinkles layer’s Layer Style to it.
Set the Foreground Color to #fe0000 and the Background Color to #01ffe5, and add some more sprinkles to the text.
Step 2
Add another New Layer on top of all layers, name it Sprinkles 3, Paste the same Layer Style to it, and add some more sprinkles around the text.
Step 3
Put all the sprinkle layers in a Sprinkles group.
12. How to Style a Drip Layer
Step 1
Create a New Layer on top of all the first letter’s layers, and name it Drip.
Press-hold the Option key to click-drag the letter’s scoop image on top of the Drip layer, and Clip it to it.
Right-click the scoop image and choose Convert to Smart Object.
Double-click the Drip layer to apply the following Layer Style:
Step 2
Add a Bevel and Emboss with these settings:
Size: 16
Soften: 1
Uncheck the Use Global Light box
Angle: 30
Altitude: 48
Gloss Contour: Cone
Check the Anti-aliased box
Shadow Mode: Vivid Light
Color: #a1a1a1
Step 3
Add a Contour with these settings:
Contour: Rounded Steps
Check the Anti-aliased box.
Step 4
Add an Inner Shadow with these settings:
Blend Mode: Color Burn
Opacity: 35%
Uncheck the Use Global Light box
Angle: 90
Distance: 3
Choke: 33
Size: 3
Step 5
Select the Drip layer’s scoop image, go to Filter > Noise > Median, and change the Radius to 5.
Step 6
Go to Filter > Blur > Gaussian Blur, and change the Radius to 2.
13. How to Paint Drips
Step 1
Pick the Brush Tool, use the same settings of the stroke brush tip, but change the Spacing value under the Brush Tip Shape tab to 1%.
Step 2
Select the Drip layer, and start painting the drips by slowly dragging the brush into the shape you like.
Step 3
Use the Eraser Tool to get rid of any areas you don’t like.
Step 4
Repeat all the steps to add drips to the rest of the letters you have.
14. How to Add Shadows and a Background Texture
Step 1
Double-click the first letter group you have to apply a Drop Shadow effect with these settings:
Blend Mode: Color Burn
Opacity: 7%
Distance: 45
Size: 20
Step 2
Copy and Paste the Layer Style to the rest of the letter groups.
Step 3
Place the MGrunge005 image on top of the Gradient Fill layer, resize it as needed, and change its layer’s Blend Mode to Soft Light and its Opacity to 25%.
15. How to Make Global Adjustments
Step 1
Create a New Layer on top of all layers, name it High Pass, and press the Shift-Option-Command-E keys to create a stamp layer.
Right-click the High Pass layer and choose Convert to Smart Object.
Step 2
Go to Filter > Other > High Pass, and change the Radius to 1.5.
Step 3
Change the High Pass layer’s Blend Mode to Soft Light and its Opacity to 50%.
Step 4
Add a Gradient Map layer on top of all layers, and create the Gradient Fill using the Colors#55456b to the left, #79566e in the middle, and #d4977c to the right.
Check the Dither box, and change the Gradient Map layer’s Blend Mode to Soft Light and its Opacity to 50%.
Congratulations! You’re Done
In this tutorial, we created a couple of text layers, and added ice-cream scoop textures to them.
Then, we used brushes and layer styles to style the textured letters and add strokes, drips, and sprinkles to them.
Finally, we used textures and adjustment layers to finish off the effect.
Please feel free to leave your comments, suggestions, and outcomes below.