Create an 850 x 630 pxNew Document. You can, of course, use another size for your PSD file,but you have to proportionally adjust all the sizes used in this tutorial.
Add the Brick Wall in a New Layer. Resize the image if needed according to your canvas size.
2. How to Add the Graffiti Art
Step 1
In a New Layer, add the Graffiti Wall texture. Resize the image if needed according to your canvas size.
Step 2
Click the second icon at the bottom of the Layers panel to add a Layer Mask to the Graffiti Wall layer.
Set the Foreground Color to #000000 and pick the Brush Tool. Use the Grunge Brush to paint inside the mask to hide some of the graffiti effect and to reveal the brick wall.
3. How to Create the Graffiti Portrait Effect
Step 1
Add the Man Portrait in a New Layer. Use the Magic Wand Tool to select the background of this image. Set the Tolerance to 10 and check Contiguous. Keep the Shift key pressed to make multiple selections. Press Delete to remove the selected background.
Press Control-D to deselect.
Step 2
Press Control-J to Duplicate the Man Portrait layer twice, and call the new layers Man Portrait 1 and Man Portrait 2. Hide the two newly created layers. Clicking the eye icon next to any layer on the Layers panel will hide/show the layer.
Step 3
Return to the Man Portrait layer and add a Stroke layer style of 4 px, Position center, Color#000000.
Step 4
Go to Filter > Artistic > Cutout and choose the Number of Levels 8, Edge Simplicity 0 and Edge Fidelity 3.
Step 5
Go to Layer > New Adjustment Layer > Posterize and set the Levels to 5. Click on the third button from the left to add this adjustment as a Clipping Mask for the layer below.
Step 6
Go to Layer > New Adjustment Layer > Brightness/Contrast and set the Brightness to 117 and the Contrast to -50. Click on the third button from the left to add this adjustment as a Clipping Mask for the layer below.
Step 7
Go to Layer > New Adjustment Layer > Hue/Saturation and set the Hue to 129 and the Saturation to 100. Click on the third button from the left to add this adjustment as a Clipping Mask for the layer below.
Pick the Brush Tool and use the Grunge Brush to paint inside the Hue/Saturation Mask using the color #000000 to reveal the original color below.
Step 8
Create a New Layer. Copy and paste the Graffiti Wall image in this layer. Right-click on the layer and choose Create Clipping Mask.
Change the Blend Mode of the Graffiti Effect layer to Lighter Color.
Click the second icon at the bottom of the Layers panel to add a Layer Mask to the Graffiti Effect layer. Pick the Brush Tool and use the Grunge Brush to paint inside the Layer Mask using color #000000 to hide some details.
Step 9
Click the eye icon next to Man Portrait 1 layer to show the layer. Set the Foreground Color to #000000 and the Background Color to #ffffff.
Step 10
Go to Filter > Sketch > Photocopy and set the Detail to 3 and the Darkness to 50.
Step 11
Go to Filter > Artistic > Cutout and set the Number of Levels to 3, Edge Simplicity to 3 and Edge Fidelity to 3.
Step 12
Go to Image > Adjustments > Levels and set the Input Levels.
Step 13
Set the Blend Mode of the Man Portrait 1 to Multiply.
If you want, you can repeat the same process but with different settings for the Man Portrait 2 layer, but this step is optional.
4. How to Create the Brick Effect
Step 1
Press Shift-Control-N to create a New Layer above all the other layers.
Press Shift-Control-Alt-E to Merge all the visible layers. Call this layer Brick Effect.
Step 2
Add a Layer Mask to the Brick Effect layer.
Step 3
Go to Image > Trim and trim the canvas based on transparent pixels.
Step 4
Go to Brick Wall layer and make a selection using the Rectangular Marquee Tool. Press Control-C to make a Copy of the selection.
Step 5
Go back to the Brick Effect layer and on the Channels tab click on the eye icon next to the Brick Effect Mask to make it visible. Press Control-V to Paste the selection in this mask.
Step 6
Return to the Layers tab and press Control-D to Deselect. Also click on the Brick Effect Layer Thumbnail.
Step 7
Open the Layer Style Window of the Brick Effect layer and add a Bevel and Emboss.
Congratulations! You’re Done!
In this tutorial, you’ve learned how to create a graffiti effect in Photoshop from scratch using brushes and textures. I hope you’ve enjoyed this tutorial.
In
this new tutorial you will learn how to draw a colorful salad on a
plate, but let’s choose a different angle because that means more fun.
At the beginning, we will create a simple plate, and after that it’s
time to get creative in arranging the ingredients of this salad:
rocket leaves, pieces of red and yellow peppers, onion rings, tasty
slices of tomatoes, radishes, and black olives. At the end, it’s all
about the shadows in order to give it a more realistic look. Let’s
start the fun!
If
you are hungry for more food icons or vector icons in general, then
run over to GraphicRiver and you’ll surely find what are you looking
for there.
1. How
to Create a New Document
Launch Illustrator and
go to File
> New to
open a blank document. Type a name for your file, set up the
dimensions, and then select Pixels as Units and RGB as Color
Mode.
Make sure that Align
New Objects to Pixel Grid is
not checked.
Next,
go to Edit
> Preferences > General and
set the Keyboard
Increment to 1
px and
while there, go to Units to
make sure they are set as in the following image. I usually work with
these settings, and they will help you throughout the drawing process.
2. How
to Draw a Simple Plate
Step
1
Let’s
start with an ellipse about 610 x 75 pxFilled with the Linear Gradient shown (1). Next, draw another ellipse slightly bigger only
at the bottom and send it behind the first (2).
Step
2
To
create the center of the plate, draw a new ellipse about 480 x 58 px (1). Now, select the first ellipse and Copy and Paste in Place
(Shift-Control-V) in order to make a copy of it (2). While this copy
(the black ellipse) and the red ellipse stay selected, press Intersect in the Pathfinder panel. Fill the new shape with the Linear Gradient shown (3).
Step
3
Grab
the Pen Tool (P) and draw a shape like the one below. The important part is
the curve at the bottom which is a bit lower than the rest of the
ellipses and creates the thin border. Use the Gradient shown and then
send this shape behind everything.
Step
4
Next,
draw the bottom of the plate like in the following image. Use the Gradient shown and then send this shape behind everything.
Step
5
Draw
another shape like earlier, where the bottom curve is a bit lower than
the rest of the plate, in order to create a darker thin border (1).
Continue
with the last ellipse at the bottom of the plate about 280 x 58 pxFilled with the Linear Gradient shown, and then send it behind
everything (2).
Step
6
To
add a highlight on the bottom of the plate, draw a very thin shape
with the Pen Tool (P) following the bottom edge, and Fill it with the Linear Gradient shown.
Step
7
Now,
follow the outer edge of the plate and draw two new thin shapes as
shown. After that, the plate is ready, and you can see the final result
in the image below (3).
3. How to Draw the Rocket Leaf (Arugula)
It’s
time to draw the components of this tasty salad, and the first
ingredient is rocket, also known as arugula. Take the Pen Tool (P) and draw a leaf shape similar to the one below. Once you are happy with the shape, Fill it with the Linear Gradient shown (1).
Next,
draw a thin shape through the middle of the leaf and Fill it with the Gradient
shown (2).
That’s
it! The leaf is ready. Group (Control-G) the two shapes and name the
group “rocket”.
4. How
to Draw the Onion Ring
Step
1
Use
the Ellipse Tool (L) to draw two shapes and arrange them as shown in the
next image (1). The size is not important because you will scale all of the ingredients later anyway. While the two ellipses stay
selected, go to Object > Compound Path > Make (Control-8) and Fill the resulting shape with a pale purple (2).
Select
the ring and then Copy and Paste in Back (Control-B) to make a copy
of it. Move this copy 2-3 px downwards with the help of the Down
Arrow key on your keyboard (3).
Select the original ring again and
then Copy and Paste in Place (Shift-Control-V) to make another copy
of it. Having this new copy of the ring selected along with the black
ring, press Minus Front in the Pathfinder panel. Send the resulting
two shapes in the back (4) and Fill them with the two shades of
purple shown (5).
Step
2
The
onion ring is ready. You can create another version, but this is
optional. Just make a Copy of the onion ring and then use only two out of the
three shades of purple.
Group (Control-G) the shapes and name the groups “onion ring 1” and “onion ring 2”.
5. How
to Draw the Piece of Red Pepper
Step
1
Next
on the list of ingredients is the red pepper. Draw a shape similar to
the one below with the help of the Pen Tool (P) and
use red as the Fill color (1). While this shape stays selected, go to Object > Transform > Scale, type 105% in the Scale field, and
then hit Copy. As a result, you will get a slightly bigger shape. Use
a darker shade of red to Fill it and send it behind the first (2).
Grab
the Pen Tool (P) again and draw a new shape in front of the two Filled with a lighter shade of red (3). Fix the ends of the pepper if
necessary and alignthe points with the Direct Selection Tool (A).
The piece of red pepper is ready now (4).
Step
2
This
step is optional, but if you want more color in your salad, you can
create a piece of yellow pepper. Simply make a Copy of the red
pepper and replace the Fill colors.
Group
(Control-G) the shapes and name the groups “red pepper” and
“yellow pepper”.
6. How
to Draw the Slice of Tomato
Step
1
Use
the Pen Tool (P) to draw the tomato slice and Fill it with a dark
shade of red. While the shape stays selected, add a New Fill in the Appearance panel above the first and use an orangey-red color. Select this Fill attribute, go to Effect > Distort & Transform >
Transform and apply the settings shown. As a result, you will get the
darker edge at the bottom of the slice.
Step
2
Next,
draw a similar but smaller shape on top and Fill it with red. Add a New Fill below the first and use a darker shade of orange. With this
Fill attribute selected in the Appearance panel, go to Effect >
Distort & Transform > Transform and apply a 1 px Vertical
Move.
Step
3
Take
the Pen Tool (P) again and draw a shape like the one in the next image, Filled
with dark orange (1). Continue with a similar shape but slightly
smaller, filled with white. Set the Blending Mode to Soft Light (2).
You can see the result in the image below (3).
Step
4
For
the seed of the tomato, you need two tear-drop shapes. Fill the
bigger one with dark orange and the smaller one with yellow. Group
(Control-G) the two shapes and Multiply to obtain more seeds; then Rotate and arrange them on the tomato slice.
Step
5
Now,
draw a curved path next to the bottom edge of the slice (1). Give it
a 5 pt red Stroke; then go to Effect > Blur > Gaussian Blur and
apply a Radius of 2 px. Reduce the Opacity to 70% (2).
Select
the slice shape and then Copy and Paste in Place (Shift-Control-V) in
order to make a copy of it in front of everything. Set this copy to
stroke-none and fill-none. Now, select the curved path along with the
copy of the slice and go to Object > Clipping Mask > Make
(Control-7). Name the resulting group “tomato slice” and you are
done (3). You can see the final result in the image below (4).
7. How
to Draw the Slice of Radish
Use
the Pen Tool (P) to draw the slice shape, and after that, draw a
similar shape but bigger only at the bottom in the back (2).
Select
the blue shape and then Copy and Paste in Place (Shift-Control-V) to
make a copy of it in front of everything. Having this copy selected
along with the orange shape, press Minus Front in the Pathfinder
panel. As a result, you will get the shape at the bottom as the skin
of the radish (3). Fill the two shapes with the Radial Gradients
shown, Group (Control-G) them, and the slice of radish is ready (4).
8. How
to Draw the Black Olive
The
olive is pretty easy, and you only need two shapes: a 50 x 38 px
ellipse (1) and the highlight shape on the upper left side (2). Fill
them with the Radial Gradients shown; then Group (Control-G) them, and
you can see the final result in the image below (3).
9. How
to Compose the Salad
Step
1
First,
select the “plate” group and Rotate it as shown in the following
image to make things more interesting. And now, it’s finally time to
compose the delicious salad. Grab the “rocket” group and make a
few copies. Arrange them as shown below, or you can put your
creativity to the test.
There
are plenty of shadows in this salad, and you can choose to add them at
the end once you see the final picture, but that might be a bit
overwhelming because there are so many components involved. In order
to make things easier to understand, I will show you the settings
for the Drop Shadow effect as we go along. The settings are slightly
different from step to step because they depend on the position of
each ingredient.
Some
of the ingredients don’t even need a shadow. From the three rocket
leaves in the image below, only one has the Drop Shadow effect
applied because the other two will be covered with the rest of the
ingredients by the end so it’s not really necessary.
Step
2
Next,
grab the “red pepper” group and move it on the plate. Apply the Drop Shadow effect to create a shadow. The same thing goes for the
“yellow pepper” group.
It
looks weird for the moment, but at the end we’ll use a Mask to hide
the ingredients that go over the edge of the plate.
Step
3
Duplicate and arrange more rocket leaves. For the leaves that are up in the
air, you don’t need to apply the Drop Shadow effect because the
shadow should exist only on the plate and not outside and around the
plate.
Step
4
Next,
put an olive on the plate and apply the Drop Shadow effect.
Also, put
an onion ring and a yellow pepper on the left side but without the
shadow this time, because they go over the edge of the plate. We will
create more detailed shadows later in the tutorial for ingredients
like these.
Step
5
Following
the technique explained in the previous steps, place more leaves and
other ingredients on your plate.
Step
6
Arrange
another piece of red pepper, another slice of tomato, more olives and
another copy of the onion ring plus a bunch of leaves in between and
on top, as many as you want.
In
the image below, you can see the Drop Shadow settings for the onion
ring on the right side and for the rocket leaf on top of it.
Don’t
add a shadow under the slices of tomato because we’ll take care of that
later in the tutorial.
Step
7
It’s
time to arrange a few radish slices. Scale them so they are not the
same size because that is more natural. Add more leaves on top and
start to go upwards with the ingredients.
Step
8
Add
another piece of yellow pepper and another slice of tomato up in the
air between the leaves. The
last two ingredients are the red pepper and another onion ring.
10. How
to Add Shadows Between the Ingredients
Step
1
If
you are happy with your salad and the position of each ingredient, you
can now add more detailed shadows between them for a realistic
look.
Focus
on the slices of tomato and draw a path following the bottom edge,
one for each slice that you have. Give them a 3 pt black Stroke and
then apply a 3 px Gaussian Blur. After you are done, send each path
right behind the corresponding slice of tomato.
Step
2
Now,
focus on the ingredients that are up in the air and especially on the
areas where they overlap because you need a shadow there. Take your
time, zoom in as much as you need, and draw a small path where two
ingredients are overlapping following their contour, but don’t go over
the edges (into the white background). You can see a few examples in
the close-ups. The more paths you draw, the more detailed and
realistic your salad will be.
Select
a 2 pt black Stroke for all these paths and apply a 2 px Gaussian
Blur. Some of them are at 100% Opacity, and some of them are at 75%
Opacity, depending on the area and the colors. Don’t forget to move
each path between the two ingredients that are overlapping in the Layers panel because the correct order is very important in this case.
11. How
to Clean Up the Edge of the Plate
Step
1
Select
the ellipse from the inside of the plate and then Copy and Paste in
Place (Shift-Control-V) in order to make a copy of it in front of
everything (1). Grab the Scissors Tool (C) and click on the two end
points of this copy to cut the shape in two and keep only the half in
front (2). Use the Pen Tool (P) to close this path and create a new
shape around the salad (3).
Step
2
Set
the shape from the previous step to Stroke–None and Fill-None. Now,
select all the ingredients of the salad along with this shape and go to Object >
Clipping Mask > Make (Control-7). Now, the front side of the plate
is clean, as it should be.
Step
3
If
you want to add a leaf that goes over the edge of the plate for a
more realistic look then now is the time to do it, outside the mask.
Arrange it in the desired place and then apply the Drop Shadow
effect.
12. How
to Add Highlights on the Salad
Focus
on one of the tomato slices and draw two short paths as shown in the next
image. Stroke them with the Black Blend Art Brush from another
tutorial of mine dedicated to Blending Brushes and how useful they are: How to Create a Set of
Multi-Use Blend Brushes. I use these brushes all the time to add
highlights and details in my drawings. Set the color as
indicated and set the Stroke Weight to 0.75 pt. Keep the bigger path at 100% Opacity but for the shorter path reduce the Opacity to 50% to
make it more discreet.
Do
the same thing for the rest of the tomatoes to make them shinier.
You can also do this for the other ingredients if you want but for
me, this was enough.
13. How
to Create the Shadow Under the Plate
Step
1
Use
the Pen Tool (P) to draw a shape like in the next image on a New Layer behind the plate, and give it a white Fill. Continue with a
similar but smaller shape Filled with light gray and set it to 75%
Opacity.
Step
2
Draw
another ellipse under the bottom of the plate and Fill it with gray.
The last ellipse is much smaller and filled with a darker gray.
Step
3
While
the four shapes stay selected, go to Object > Blend > Blend
Options and choose 50 Specified Steps. Hit OK; then go back to Object
> Blend > Make (Alt-Control-B).
Set
the resulting blend group to Blending Mode Multiply and reduce the Opacity to 75%, but this depends on the color of your background.
Congratulations!
You’re Done
The colorful salad on the plate is ready now. Grab a fork!
Let
me know if you enjoyed this tutorial, and don’t forget to share an
image of your recreation with us if you decide to have fun with it. I would love to see it.
In this tutorial, I’ll show you how to create a color dust explosion effect on any photo. At the end of the tutorial, you’ll have an action which will automate the entire process with a single click.
I’ll try to explain everything in much detail so that everyone can follow along, even if this is your first time with Photoshop.
First, open the photo on which you want to work. To open your photo, go to File > Open, choose your photo, and click Open. Now, before we get started, we need to check a few things:
Your photo should be in RGB Color mode and 8 Bits/Channel. To check this, go to Image > Mode.
Your photo should be the Background layer. If it is not, go to Layer > New > Background from Layer.
Click the fly-out list of the Layers panel and click Panel Options….Make sure that both Use Default Masks on Fill Layers and Add „copy” to Copied Layers and Groups are checked.
Step 2
The effect works best with images of size 2500–4000 px width. If your image is smaller, increase it by going to Image > Image Size. You can always reduce it to your original size after the effect has been applied.
2. How to Load the Brushes
Step 1
Go to Edit > Presets > Preset Manager… In the Preset Manager window, select Preset Type: Brushes and click Load…
Browse and select the Color Dust Brushes.atn file that came with the downloadable attachment. Then, click Done.
Step 2
Press B on the keyboard to select the Brush Tool. Make sure both Opacity and Flow are set to 100%.
3. How to Make the Effect Area Layers
Add a New Layer above the Background layer. Name the new layer subject.
Now, make a Selection around your main subject. You can also choose the Brush Tool (B) and brush over your photo using a Hard Round Brush.
4. How to Start Recording the Action
Step 1
Now, let’s start preparing the base for our action. We’ll put it in a separate set for easier management.
Go to Window > Actions or press F9 on the keyboard to open up the Actions panel. Then, click the Create new set icon, name the set Color Dust Photoshop Action, and click OK. We’ll place the action inside this set.
Step 2
Click the Create new action icon and name it Color Dust.
Click Record to start recording all the subsequent steps in Photoshop.
From this point onwards, everything you do will be recorded, so please be careful and keep an eye on the Actions panel. If you make a mistake, click the Stop playing/recording icon, and Delete the unnecessary step from the Color Dust action. Then click the Begin recording icon again to continue. The last thing you’d want is to have a messy action filled with unwanted steps.
5. How to Create the Background
Step 1
Select the Background layer, and hide the subjectlayer by toggling the eyeball icon off. Then, press D on the keyboard to reset swatches.
Step 2
Go to Layer > New Fill Layer > Solid Color… Name it BG Color, enter the hex color code #ffffff, and click OK.
Step 3
Press Control-G to add the BG Color layer in a new Group. Then, go to Layer > Rename Group… and rename the group Color Dust. We’ll add all our further layers into this group to keep everything organized.
Step 4
Select the subject layer, right-click on the layer thumbnail, and select Select Pixels. Then select the Background layer and press Control-J to Copy the selection into a New Layer.
Create a New Layer, rename it Base Image, and drag it above the BG Color layer (inside the Color Dust group).
Step 5
Create a New Layer and name it temp-sub.
Again, select the subject layer, right-click on the layer thumbnail, and select Select Pixels. Go to Select > Modify > Smooth…, enter Sample Radius: 50 pixels and click OK.
Then, select the temp-sub layer and press Alt-Delete or to Fill the selection with the Foreground Color.
Press Control-D to deselect the current selection.
Hide the temp-sub layer by toggling the eyeball icon off.
6. How to Create the Emitter Guide Layers
Step 1
Select the Base Image layer. Create a New Layer and name it emitter-1.
Select the temp-sub layer, right-click on the layer thumbnail, and select Select Pixels.
Select the emitter-1 layer. Press M on the keyboard to select the Rectangular Marquee Tool. Then, right-click on the image and select Make Work Path…. Enter Tolerance: 3.0 pixels and click OK.
Step 2
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-emitter-1 brush. Make sure both the Opacity and Flow are set to 100%.
Step 3
Press P on the keyboard to select the Pen Tool.
Then, right-click on the image and select Stroke Path… Make sure Simulate Pressure is not checked. Click OK.
Again, right-click on the image with the Pen Tool and select Delete Path.
Step 4
Now, your image should look like below.
Hide the emitter-1 layer by toggling the eyeball icon off.
Step 5
Create a New Layer and name it emitter-2.
Select the temp-sub layer, right-click on the layer thumbnail, and select Select Pixels.
Select the emitter-2 layer and go to Select > Transform Selection.
Keep Reference point location at Center, enter Width: 50%, Height: 1%, and click the Tick button on the top toolbar or press Enter to confirm.
Step 6
Press M on the keyboard to select the Rectangular Marquee Tool. Then, right-click on the image and select Make Work Path…. Enter Tolerance: 3.0 pixels and click OK.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-emitter-2 brush. Make sure both the Opacity and Flow are set to 100%.
Step 7
Now Stroke the path with the selected brush. Your image should look like below.
Hide the emitter-2 layer by toggling the eyeball icon off.
Step 8
Create a New Layer and name it emitter-3.
Select the temp-sub layer, right-click on the layer thumbnail, and select Select Pixels.
Select the emitter-3 layer and go to Select > Transform Selection. Keep Reference point location at Top-Right, enter Width: 40%, Height: 40%, and click the Tick button on the top toolbar or press Enter to confirm.
Again, go to Select > Transform Selection.
Keep Reference point location at Bottom-Left, enter Width: 1%, Height: 1%, and click the Tick button on the top toolbar or press Enterto confirm.
Step 9
Make a path from the selection and Stroke it with the selected brush. Your image should look like below.
Hide the emitter-3 layer by toggling the eyeball icon off.
Step 10
Create a New Layer and name it emitter-4.
Select the temp-sub layer, right-click on the layer thumbnail, and select Select Pixels.
Select the emitter-4 layer and go to Select > Transform Selection.
Keep Reference point location at Bottom-Left, enter Width: 30%, Height: 30%, and click the Tick button on the top toolbar or press Enter to confirm.
Again, go to Select > Transform Selection.
Keep Reference point location at Top-Right, enter Width: 1%, Height: 1%, and click the Tick button on the top toolbar or press Enter to confirm.
Step 11
Make a path from the selection and Stroke it with the selected brush. Your image should look like below.
Hide the emitter-4 layer by toggling the eyeball icon off.
Step 12
Create a New Layer and name it emitter-5.
Select the temp-sub layer, right-click on the layer thumbnail, and select Select Pixels.
Select the emitter-5 layer and go to Select > Transform Selection.
Keep Reference point location at Bottom-Right, enter Width: 30%, Height: 30%, and click the Tick button on the top toolbar or press Enterto confirm.
Again, go to Select > Transform Selection.
Keep Reference point location at Top-Left, enter Width: 1%, Height: 1%, and click the Tick button on the top toolbar or press Enterto confirm.
Step 13
Make a path from the selection and Stroke it with the selected brush. Your image should look like below.
Hide the emitter-5 layer by toggling the eyeball icon off.
Step 14
Create a New Layer and name it emitter-6.
Select the temp-sub layer, right-click on the layer thumbnail, and select Select Pixels.
Select the emitter-6 layer and go to Select > Transform Selection.
Keep Reference point location at Top-Left, enter Width: 40%, Height: 40%, and click the Tick button on the top toolbar or press Enter to confirm.
Again, go to Select > Transform Selection.
Keep Reference point location at Bottom-Right, enter Width: 1%, Height: 1%, and click the Tick button on the top toolbar or press Enterto confirm.
Step 15
Again, make a path from the selection and Stroke it with the selected brush. Your image should look like below.
Hide the emitter-6 layer by toggling the eyeball icon off.
Step 16
Select the emitter-1 layer. Hold Shift and select the emitter-6 layer. Press Control-J to Duplicate all selected layers.
Show the emitter-1 copy, emitter-2 copy, emitter-3 copy, emitter-4 copy, emitter-5 copy and emitter-6 copy by toggling the eyeball icons on.
Step 17
Press Control-E to Merge the selected layers. Go to Layer > Rename Layer… and rename it emitter-7.
Now, your image should look like below.
Hide the emitter-7 layer by toggling the eyeball icon off.
7. How to Create the Background Color Dust
Step 1
Select the BG Color layer.
Go to Layer > New Fill Layer > Solid Color…. Name it BG Fill Dust 1, enter the hex color code #000000, and click OK.
Step 2
Go to Layer > Layer Mask > Delete.
Again, go to Layer > Layer Mask > Hide All.
Now, go to Layer > Layer Mask > Unlink.
Step 3
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-4c brush. Make sure both the Opacity and Flow are set to 100%.
Step 4
Select the emitter-7 layer, right-clickon the layer thumbnail, and select Select Pixels.
Step 5
Select the BG Fill Dust 1 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Press D on the keyboard to reset swatches. Make sure your Foreground Color is white while the layer mask is selected.
Step 6
Press M on the keyboard to select the Rectangular Marquee Tool. Then, right-click on the image and select Make Work Path…. Enter Tolerance: 3.0 pixels and click OK.
Step 7
Press P on the keyboard to select the Pen Tool.
Then, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-click on the image with the Pen Tool and select Delete Path.
Step 8
Now, your image should look like below.
Step 9
Go to Layer > New Fill Layer > Solid Color…. Name it BG Fill Dust 2, enter the hex color code #000000, and click OK.
Step 10
Repeat Step 2 for the BG Fill Dust 2 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-3d brush. Make sure both the Opacity and Flow are set to 100%.
Step 11
Select the emitter-7 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Fill Dust 2 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Step 12
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Step 13
Go to Layer > New Fill Layer > Solid Color…. Name it BG Dust 1, enter the hex colour code #00ce7e, and click OK.
Step 14
Repeat Step 2 for the BG Dust 1 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-1 brush. Make sure both the Opacity and Flow are set to 100%.
Step 15
Select the emitter-1 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 1 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Step 16
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Step 17
Go to Layer > New Fill Layer > Solid Color…. Name it BG Dust 1 Col 2, enter the hex colour code #0db9ea, and click OK.
Step 18
Repeat Step 2 for the BG Dust 1 Col 2 layer.
Go to Layer > Create Clipping Mask to add the BG Dust 1 Col 2 layer as a Clipping Mask to the BG Dust 1 layer.
Step 19
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-4c brush. Make sure both the Opacity and Flow are set to 100%.
Select the emitter-7 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 1 Col 2 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Just like before, make a path from the selection and Stroke the path with the selected brush.
Press Control-I to Invert the layer mask color.
Now, your image should look like below.
Step 20
Go to Layer > New Fill Layer > Solid Color…. Name it BG Dust 2, enter the hex color code #ef16a5, and click OK.
Step 21
Repeat Step 2 for the BG Dust 2 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-2 brush. Make sure both the Opacity and Flow are set to 100%.
Step 22
Select the emitter-3 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 2 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Step 23
Go to Layer > New Fill Layer > Solid Color…. Name it BG Dust 3, enter the hex color code #ffea5a, and click OK.
Step 24
Repeat Step 2 for the BG Dust 3 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-4a brush. Make sure both the Opacity and Flow are set to 100%.
Step 25
Select the emitter-3 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 3 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then, make a path from the current selection. Press P on the keyboard to select the Pen Tool.
Then, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-clickon the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Now, your image should look like below.
Step 26
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-3d brush. Make sure both the Opacity and Flow are set to 100%.
Press P on the keyboard to select the Pen Tool.
Then,right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again,right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-clickon the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Now, right-click on the image with the Pen Tool and select Delete Path.
Now, your image should look like below.
Step 27
Select the emitter-4 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 3 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the current selection. Press P on the keyboard to select the Pen Tool.
Then, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again,right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Now, your image should look like below.
Step 28
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-4a brush. Make sure both the Opacity and Flow are set to 100%.
Press P on the keyboard to select the Pen Tool.
Then, right-clickon the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-clickon the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Now,right-clickon the image with the Pen Tool and select Delete Path.
Now, your image should look like below.
Step 29
Go to Layer > New Fill Layer > Solid Color…. Name it BG Dust 4, enter the hex color code #0df0ed, and click OK.
Step 30
Repeat Step 2 for the BG Dust 4 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-3c brush. Make sure both the Opacity and Flow are set to 100%.
Step 31
Select the emitter-5 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 4 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Step 32
Go to Layer > New Fill Layer > Solid Color…. Name it BG Dust 5, enter the hex colour code #eb18a8, and click OK.
Step 33
Repeat Step 2 for the BG Dust 5 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-4a brush. Make sure both the Opacity and Flow are set to 100%.
Select the emitter-2 layer,right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 5 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the selection and Stroke the path with the selected brush.
Change the Blending Mode of the layer to Darken.
Now, your image should look like below.
Step 34
Go to Layer > New Fill Layer > Solid Color…. Name it BG Dust 6, enter the hex color code #0db9ea, and click OK.
Step 35
Repeat Step 2 for the BG Dust 6 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-3a brush. Make sure both the Opacity and Flow are set to 100%.
Select the emitter-4 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 6 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Step 36
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-3b brush. Make sure both the Opacity and Flow are set to 100%.
Select the emitter-6 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the BG Dust 6 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Your BG Dust layers should look like below.
8. How to Create the Overlay Color Dust
Step 1
Select the Base Image layer.
Go to Layer > New Fill Layer > Solid Color…. Name it OL Dust 1, enter the hex color code #00ce7e, and click OK.
Step 2
Go to Layer > Layer Mask > Delete.
Again, go to Layer > Layer Mask > Hide All.
Now, go to Layer > Layer Mask > Unlink.
Step 3
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-4b brush. Make sure both the Opacity and Flow are set to 100%.
Step 4
Select the temp-sub layer, right-click on the layer thumbnail, and select Select Pixels.
Step 5
Select the OL Dust 1 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Press D on the keyboard to reset swatches. Make sure your Foreground Color is white while the layer mask is selected.
Step 6
Press M on the keyboard to select the Rectangular Marquee Tool. Then, right-click on the image and select Make Work Path…. Enter Tolerance: 3.0 pixels and click OK.
Step 7
Press P on the keyboard to select the Pen Tool.
Then, right-clickon the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-clickon the image with the Pen Tool and select Delete Path.
Step 8
Now, your image should look like below.
Step 9
Go to Layer > New Fill Layer > Solid Color…. Name it OL Dust 2, enter the hex color code #eb18a8, and click OK.
Step 10
Repeat Step 2 for the OL Dust 2 layer.
Select the emitter-5 layer, right-clickon the layer thumbnail, and select Select Pixels.
Select the OL Dust 2 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Step 11
Go to Layer > New Fill Layer > Solid Color…. Name it OL Dust 3, enter the hex color code #0db9ea, and click OK.
Step 12
Repeat Step 2 for the OL Dust 3 layer.
Select the emitter-4 layer, right-click on the layer thumbnail, and select Select Pixels.
Select the OL Dust 3 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the selection and Stroke the path with the selected brush.
Now, your image should look like below.
Step 13
Go to Layer > New Fill Layer > Solid Color…. Name it OL Dust 4, enter the hex colour code #ffea5a, and click OK.
Step 14
Repeat Step 2 for the OL Dust 4 layer.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-5 brush. Make sure both the Opacity and Flow are set to 100%.
Step 15
Select the emitter-7 layer,right-click on the layer thumbnail, and select Select Pixels.
Select the OL Dust 4 layer icon. Then, select the layer mask (this is to make sure that the layer mask is always selected at this step).
Then make a path from the current selection.
Press P on the keyboard to select the Pen Tool.
Then, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Now, right-clickon the image with the Pen Tool and select Delete Path.
Now, your image should look like below.
Your layers structure should look like below.
9. How to Make Image Adjustments
Step 1
Select the Base Image layer and press Control-J to Duplicate it.
Go to Layer > Rename Layer… and rename it Overlay Image. Change the Blending Mode of the Overlay Image layer to Luminosity.
Go to Layer > Layer Mask > Hide All. Select the Base Image layer and go to Layer > Layer Mask > Reveal All.
Step 2
Select the emitter-7 layer, right-clickon the layer thumbnail, and select Select Pixels.
Press B on the keyboard to select the Brush Tool. Expand the brush selector drop-down menu and select the br-color-dust-3e brush. Make sure both the Opacity and Flow are set to 100%.
Step 3
Press M on the keyboard to select the Rectangular Marquee Tool. Then, right-click on the image and select Make Work Path…. Enter Tolerance: 3.0 pixels and click OK.
Select the layer thumbnail of the Base Image layer and then select its Layer Mask. This is to make sure that the layer mask always gets selected at this point.
Press D on the keyboard to reset swatches. Then, press X on the keyboard to switch swatches and set your Foreground Color as Black.
Press P on the keyboard to select the Pen Tool.
Then,right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-clickon the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Now, your image should look like below.
Step 4
Select the layer thumbnail of the Overlay Image layer and then select its layer mask. This is to make sure that the layer mask always gets selected at this point.
Press D on the keyboard to reset swatches and set your Foreground Color as White.
Press P on the keyboard to select the Pen Tool.
Then, right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Again,right-click on the image and select Stroke Path…. Make sure Simulate Pressure is not checked. Click OK.
Now, right-click on the image and select Delete Path.
Your image and layers structure should look like below.
10. How to Make Additional Adjustments
Step 1
Select the OL Dust 4 layer.
Go to Layer > New Adjustment Layer > Levels… and name it Overall Levels.
Enter the following input levels – Shadow input level: 20 and Highlight input level: 245.
Step 2
Go to Layer > New Adjustment Layer > Curves… and name it Overall Curves.
Select the Blue channel and enter the following values.
Now, your image and layers structure should look like below.
11. How to Tidy Up Your Groups
In the next steps, we’ll organize the layers into logical groups and color code them for ease of use.
Step 1
Select the temp-sub layer. Hold Shift and select the emitter-1 layer.
Press Delete on the keyboard to delete all eight selected layers.
Step 2
Select the Overall Levels layer, hold Shift and select the Overall Curves layer.
Press Control-G to Group the layers. Go to Layer > Rename Group… and rename it as Overall Adjustments.
Right-click on the Overall Adjustments group and select Slot Color: Gray.
Step 3
Select the OL Dust 4 layer, hold Shift and select the OL Dust 1 layer.
Press Control-G to Group the layers. Go to Layer > Rename Group… and rename it as Overlay Dust Elements.
Right-clickon the Overlay Dust Elements group and select Slot Color: Yellow.
Step 4
Select the Overlay Image layer, hold Shift and select the Base Image layer.
Press Control-G to Group the layers. Go to Layer > Rename Group… and rename it as Image Elements.
Right-click on the Image Elements group and select Slot Color: Blue.
Step 5
Select the BG Dust 6 layer, hold Shift and select the BG Dust 1 layer.
Press Control-G to Group the layers. Go to Layer > Rename Group… and rename it BG Dust Elements.
Right-click on the BG Dust Elements group and select Slot Color: Red.
Step 6
Select the BG Fill Dust 2 layer, hold Shift and select the BG Color layer.
Press Control-G to Group the layers. Go to Layer > Rename Group… and rename it BG Elements.
Right-click on the BG Elements group and select Slot Color: Green.
12. How to Finish Recording the Action
Stop recording by clicking the Stop button.
13. How to Customize Your Result
Now, I’ll show you how to change the color of the dust elements.
Step 1
Double-click on the BG Color layer thumbnail and enter the hex color code #000000. Click OK.
Double-click on the BG Fill Dust 1 layer thumbnail and enter the hex color code #ffffff. Click OK.
Double-click on the BG Fill Dust 2 layer thumbnail and enter the hex color code #ffffff. Click OK.
Step 2
Double-click on the BG Dust 1 layer thumbnail and enter the hex color code #000000. Click OK.
Double-click on the BG Dust 1 Col 2 layer thumbnail and enter the hex color code #436c78. Click OK.
Double-click on the BG Dust 2 layer thumbnail and enter the hex color code #38b2ff. Click OK.
Double-click on the BG Dust 3 layer thumbnail and enter the hex color code #ffea5a. Click OK.
Double-click on the BG Dust 4 layer thumbnail and enter the hex color code #49b0ff. Click OK.
Double-click on the BG Dust 5 layer thumbnail and enter the hex color code #eb18a8. Click OK.
Double-click on the BG Dust 6 layer thumbnail and enter the hex color code #ffffff. Click OK.
Step 3
Double-click on the OL Dust 1 layer thumbnail and enter the hex color code #ffffff. Click OK.
Double-click on the OL Dust 2 layer thumbnail and enter the hex color code #eb18a8. Click OK.
Double-click on the OL Dust 3 layer thumbnail and enter the hex color code #ffffff. Click OK.
Double-click on the OL Dust 4 layer thumbnail and enter the hex color code #ffea5a. Click OK.
This is what we’ll get.
Feel free to experiment with different colors. You can also select the Layer mask of any color dust layer and press Control-T to bring up the Free Transform tool. Then, you can resize and rotate the elements.
Awesome, You’ve Done It!
Here is your final result!
You can now apply the effect onto any other image. Open the image, select Color Dust Photoshop Action, and click Play from the Actions panel.
Things to remember before playing the action:
Make sure that you have installed the Brush.
Make sure that the Brush Opacity and Flow are set to 100%, like step 2 – How to Load the Brushes.
Make sure you have created the subject layer, made a selection of your main subject and filled it with any color, just like Step 1 of 3 – How to Make the Effect Area Layers.
Make sure the width of the image is set between 2500-4000 pixels, like Step 2 of 1 – How to Set Up Your Document.
Make sure Use Default Masks on Fill Layers and Add „copy” to Copied Layers and Groups are checked under Panel Options…, like Step 1 of 1 – How to Set Up Your Document.
We have reached the end of the tutorial. Here you’ve learned how to
add a color dust explosion effect on any photo and also automate it in a
one-click Photoshop action.
I hope you’ve enjoyed this tutorial and found it helpful. Feel free to leave your comments below, and thanks for reading.
Thanks to the partnership with HomeAway, Leroy Merlin chose holiday homes with negative reviews and transformed them in new showrooms for its products helping hosts to rent them more easily. This way Leroy Merlin’s logo became a guarantee of quality and style.
Inspired by Gothic and Islamic architectural patterns, Eric Standley’s layered laser-cutting are just stunning. The artist stacks cutted paper on top of each other to enter a third dimension.
You can see it everywhere: Heads buried in their mobile devices, completely oblivious to the world around them. Sitting in their cars, staring down while the light has already turned green, with their kid looking up at them forlornly, waiting to be pushed on the swing, or as you dive out of the way before getting barreled over on the footpath. We are utterly obsessed with our phones, often to the exclusion of everything else that is going on in the world. Time on mobile devices comprises 65% of all time spent consuming digital media. That’s a huge proportion, and it’s getting bigger. It’s no wonder that apps are such huge business, with legions of companies competing for all that attention. Today we’ll look at a few prominent ways in which app developers are vying for that decisive edge.
Augmented Reality (AR)
AR has been hot ever since Pokemon Go took the world by storm. Digital minds all over the world have since been experimenting with new and exciting ways to AR-infused apps to the marked. One app developer in Melbourne devised a way to assist travelers to get their luggage and to their gate in unfamiliar airports. Another company in New York devised a slick app that allows you to superimpose tattoo designs on your body through your phone’s camera so you can see what it will look like before taking the plunge. Whatever the application, the potential for this amazing technology is limited only by our imaginations.
Wearable Technology
Technologies that can be worn on the body have enormous power to integrate with mobile and desktop apps. Fitbit is a great example of this and has been a great success that has spawned numerous copycat products. Breakthrough technologies such as Apple Watch and Google Glass have underwhelmed commercially and in terms of winning hearts and minds. However, it is almost certainly just a matter of time in until someone gets the right recipe.
Instant Apps
It’s Murphy’s law of Apps. You download a seemingly amazing app that promises to be your next best friend, only to have it sit on your device unopened and unloved for months. Eventually, you delete it, casting it into digital oblivion. Then, the very next day you encounter precisely the situation in which you could have used the app, and you curse in frustration. Instant apps promise to change all this. Rather than clutter your device with a million apps that you rarely if ever use, instant apps can be accessed instantly from the Cloud, without downloading or installation.
Artificial Intelligence (AI)
AI is one of those controversial topics that is at once exciting and yet downright scary. The specter of machines that can learn how to think like us and take over the world might be the stuff of science fiction. However, with AI started to take over people’s jobs, predict our online behaviors and outsmart human hackers, it is clear that we need to think very carefully about how we use this sensitive technology. Like most things, there is plenty of opportunity to use it to better our lives. AI applications that understand how kids learn and tailor educational programs to their individual needs are just one way that we can harness AI to make a positive impact.
Internet of Things
Ever since Mark Zuckerberg announced that he would build an app to interface with the bot that pretty much controls his entire house, the world has realized that IoT is not just a catchy buzzword. We can expect to see the intersection between those ubiquitous icons on our phones and the things that we use every day continue to grow.
We’d love to hear what you think are some other exciting trends that will impact the mobile technology world!
This last week at Google I/O, Addy Osmani announced some amazing developer resources for creating Progressive Web Applications (PWAs) that prioritize performance with JavaScript Frameworks.
This was truly a team effort- a lot of people worked on these projects to get them going, and it’s a really valuable contribution to the community. A lot of people want better performance for their framework of choice but can’t get buy-in for time and resources to devote to this kind of endeavor. The ability to start with a baseline of high performance and good lighthouse scores is incredibly valuable, allowing developers to enjoy both the productivity and ergonomics of exciting frameworks, without sacrificing speed and user experience.
Here are some of the highlights!
Addy created a site to explore some of the templates that they built out with the different PWA solutions, as a successor to the very popular TodoMVC, called HN PWA. You can explore all of the demos and the GitHub repo here. He then went through some major company implementations of each of the frameworks rebuilt as PWAs. Throughout a lot of the case studies that Addy features, the heavy-hitters in building for better web experiences lied in link rel=preload, requestIdleCallback(), and HTTP2 Server Push. There were many mentions the PRPL pattern, in essence prioritizing what you’re going to use first, by Pushing critical resources for the initial URL route, Rendering the initial route, Pre-caching remaining routes, and Lazy-loading and create remaining routes on demand. A lot of the performance wins were framed within the ability to be interactive on mobile within 5 seconds and trying to lower the overhead of the framework itself so that you had more time in that 5 seconds for your own application code.
React
React announced that Create React App will now be a PWA by default! This is a big win here. They now employ service workers with an offline-first caching strategy, code-splitting with dynamic import(), helpful overlays for errors, and it gives you 1.5s of headroom for your application code. More information on the release here.
Preact
Now has a CLI! Announced at the event, this is a pretty amazing development worth playing around with. You can find the project here. Among other really nice features you can read through in the readme, it has a 100/100 Lighthouse score out of the box, as well as a whopping 3s of headroom to work on your own application code.
If you’re not familiar with Preact, it’s an extremely fast 3kb React alternative with the same API, including the use of components & virtual DOM. It’s similar to React, but the small filesize is central to the software design. The only caveat mentioned is that due to its emphasis on slim builds, there may be offerings in the React ecosystem that still need work for seamless integration. That said, Preact was the clear winner in performance here, so I wouldn’t be surprised to see the community rally around this solution.
Vue
Vue announced a PWA template, offered directly from Vue-cli, which you can access easily with vue init pwa.
Among a lot of great offerings, it gives you two 2s of headroom for application code on mobile, code-splitting with dynamic import(), service worker for offline caching, and JS chunks are preloaded or prefetched.
If you’re not familiar with Vue, I’ve written up a guide here. I think Vue is an amazing piece of software, and the ability to strike all of the lighthouse credentials out of the gate is pretty incredible. This workflow makes it so easy to create beautiful and complex apps.
There are many more details that I didn’t get to in this post, and Addy is a great speaker. He even created a video game for his talk. It’s a worthwhile watch the whole way through, you can view it here:
This article by Mark Dalgleish will go down as one of the most important front-end development articles of 2017.
It’s about the hot topic that is „CSS in JavaScript”. Mark walks us through how that’s actually not a simple and singular idea, but a continuum of concepts and implementations. There are lots of projects that all approach it in different ways. It’s likely that the best ways are the projects that actually generate real CSS. These things are a far cry from „inline styles”.
Regular ol’ CSS isn’t going anywhere, but these CSS in JS ideas aren’t either. There is some serious benefits to them for a lot of projects. Scoped styles preventing styling mistakes. Performance gains through critical styles. Only shipping the minimum amount of styles needed. Stylesheets that nobody is afraid of and don’t become the proverbial „append only” stylesheets. Not to mention that if you are going to be styling in a JavaScript environment, you get the possibility of dynamic styles and porting those styles to other platforms and such.
There are many ways to make icons for a website. Inline SVG is scalable, easy to modify with CSS, and can even be animated. If you’re interested in learning more about the merits of using inline SVG, I recommend reading Inline SVG vs Icon Fonts. With ever increasing browser support, there’s never been a better time to start working with SVGs. Snap Animation States is a JavaScript plugin built around Snap.svg to help create and extend icon libraries with scaleable, editable SVG icons. Snap Animation States makes it easy to load and animate those SVGs with a simple schema.
Getting Started
Lets start with a basic SVG hamburger menu. This one was made using Affinity Designer, but there are many other free (Inkscape) and paid for (Adobe Illustrator) options available for making vector images.
Although this is a pretty basic SVG, it still takes up multiple lines in an HTML document. This can be a pain to write if you want to use the SVG in multiple locations across several different web pages. And what if you have to modify your SVG? Then you’re scrambling to remember all the places you used the SVG so you can update it. It’s not very clean or reusable. This is what Snap Animation States is all about solving.
Let’s continue to use the same SVG, but this time we’ll use the plugin to load it to the DOM. The schema for the plugin requires at least two properties: selector:".some-css-selector", and svg:"svg string". Check out the following demo:
You’ll notice in the Pen above that I call icon-hamburger just like I would call a font icon. Just remember that the selector property needs a CSS selector as its value.
There’s more we can do since this plugin is an extension of Snap.svg, a JavaScript library used to create and animate SVGs. So let’s see what’s needed to give this hamburger icon some basic animation.
When I created my SVG, I added classes to the elements I knew I would be animating.
In my schema, I can start to include the properties needed for animation, and I start by giving it transitionTime: 250. The transition time is applied to each step in the transform chain and can be overridden later by an individual transform.
Now it’s time to include my animation states. I start by setting the property states:{}. The property names for this object should correlate to the state the animation will lead to. In this case I’m going to name my properties open and closed. The property values for this object are arrays of transform objects. So far, the additions to the schema should look like this:
Each transform object has either an id, a waitFor, or a combination of the two. Each id needs to be unique. Objects with an id represent a link in a chain of animations. waitFor always needs to reference a link id that precedes it. In this case there’s an object with id:"top-lower" and an object with waitFor:"top-lower". When the animation starts, id:top-lower will be the first link in the chain, and it will run for 250ms. When it has finished, waitFor:"top-lower" will run for 250ms.
Every transform object must reference an element. The element value can be either a css selector or a direct element reference. For example, one element property has the value of "g" referencing the <g> element in the SVG, while another has the value of ".hamburger-bottom", referencing the class I added to the <path> element.
Now that we know the order of animation and the elements that need to be transformed, we just need to define the transform objects. For those of you unfamiliar with how SVG transforms work, you could start with Transforms on SVG Elements. Otherwise, simply put, imagine that the SVG element you are manipulating starts at the points [0, 0] on an x/y axis. Something else to remember is that x goes left to right, while y goes from top to bottom. In the example above, we see:
This transform object is referring to the top line of the hamburger menu. y: 20 is telling the plugin that, starting at the element’s point of origin [0, 0], I want to move the top line down 20px. The reverse is true for:
The element that’s being rotated starts at a rotation of 0 degrees. r: 45 is telling the plugin to rotate from 0 degrees to 45 degrees and vice versa for r: -45.
Our second state in the states object looks like this:
You’ll notice that for all of the elements being transformed, their y and r values are set to 0. This is because this state’s purpose is to return the SVG elements to their original state. Since 0 was the point of origin, we’re just performing a transform on each of the elements that will return them to their origin.
We’re almost done. Now that the animation states are defined, I have to decide what’s going to initiate these animations. This requires one more property on the schema: events. events takes an array of objects, since you may want to initiate your animation with more than one event. For the hamburger icon, it’s going to look like this:
The object in the array may include the following properties:
event: designed to listen for javascript events. The hamburger icon listens for a 'click’ event on <i class="icon-hamburger"</i> since that’s what the selector in the schema references.
state: takes either a string or an array. If the state here is "open", then when <i class="icon-hamburger"></i> is clicked, only the „open” animation would run on a click event. Since the value of state is an array, the click event will actually toggle between the „open” and „closed” animations. The array is only designed to take two values and enable toggling.
The last property is optional: selector. By default this value is your schema selector + „animate”. In this case it would be icon-hamburger-animate. You can change the selector if you want by declaring it here. It’s purpose is to enable the javascript events to be tied to either a parent or sibling element of your SVG. For example, if I had an SVG that I wanted to animate inside of a button when the button was clicked, I would need to do this:
Was it worth it? You may be thinking, that’s a lot of work to just have a single icon. And I would agree with you. Which is why I created a Gulp plugin to help with the heavy lifting.
Gulp Animation States
So far, we have a single icon that we can use wherever I’ve included the schema. Ideally, the schema for icon-hamburger would be saved to a js file that gets bundled up and included site-wide, which means that I could call icon-hamburger wherever I want. What if this js file was autogenerated and contained the schema and plugin call for as many SVG icons as you had access to? You could have easy access library of SVG icons! That’s the purpose of Gulp Animation States. Make sure to check out the documentation here.
Let’s begin with the file structure. Say I went to IcoMoon and generated all the SVG files I needed for my new project. I would want to drop all these newly generated files into a folder in my project. Let’s call that folder `svg`. My file structure would look something like this:
Using Gulp Animation States I can combine all the SVG files in my `svg` folder into a single js file with the selector for each icon set according to the file name of the SVG. The file contents would look something like this:
var iconFolder = {"selector": ".icon-folder","svg": "<svg>Content</svg>"};
SnapStates(iconFolder);
var iconHamburger= {"selector": ".icon-hamburger","svg": "<svg>Content</svg>"};
SnapStates(iconHamburger);
var iconMic= {"selector": ".icon-mic","svg": "<svg>Content</svg>"};
SnapStates(iconMic);
var iconWall= {"selector": ".icon-wall","svg": "<svg>Content</svg>"};
SnapStates(iconWall);
var iconWrench= {"selector": ".icon-wrench","svg": "<svg>Content</svg>"};
SnapStates(iconWrench);
This file could be bundled up with the rest of a website’s key JavaScript, enabling SVG icon usage wherever it’s wanted. But what about the animations? How do they get included in this JavaScript file?
We already have the animation for the hamburger icon, so we’ll use that. In the `svg` folder, we need to create a new file called `icon-hamburger.js`. Note that it has the same name as it’s corresponding SVG file. Here is the new file structure:
The Gulp plugin will look for js files with the same name as the SVG file it’s creating a schema for. Demonstrating the output again with the animation states:
var iconFolder = {"selector": ".icon-folder","svg": "<svg>Content</svg>"};
SnapStates(iconFolder);
var iconHamburger= {"selector": ".icon-hamburger","svg": "<svg>Content</svg>", "transitionTime":250,"states":{"open":[{"id":"top-lower","element":".hamburger-top","y":20},{"id":"bottom-raise","element":".hamburger-bottom","y":-20},{"waitFor":"top-lower","element":"g","r":45},{"waitFor":"top-lower","element":".hamburger-bottom","r":-45}],"closed":[{"id":"top-angle","element":"g","r":0},{"id":"bottom-angle","element":".hamburger-bottom","r":0},{"waitFor":"top-angle","element":".hamburger-top","y":0},{"waitFor":"bottom-angle","element":".hamburger-bottom","y":0}]},"events":[{"event":"click","state":["open","closed"]}};
SnapStates(iconHamburger);
var iconMic= {"selector": ".icon-mic","svg": "<svg>Content</svg>"};
SnapStates(iconMic);
var iconWall= {"selector": ".icon-wall","svg": "<svg>Content</svg>"};
SnapStates(iconWall);
var iconWrench= {"selector": ".icon-wrench","svg": "<svg>Content</svg>"};
SnapStates(iconWrench);
Using Gulp Animation States, you manage to retain smaller, bite-sized files that you can easily edit when you need to change something. Those bite-sized pieces compile nicely into a single file that can be bundled with other key components of your site, allowing quick and easy calls to include an SVG in your HTML document.
Further Examples
The hamburger icon was fairly simple, so let’s look at a few more complex icons. We’ll start with a speaker icon.
You’ll notice that, overall, the schema is mostly the same. You’ll notice the property easing is new. easing has a default value of easeinout. Besides that, the only changes worth noticing are in my transform objects.
s is for scale, and just like in css, an object’s scale always starts at 1. The attr property allows you to modify any attribute on an SVG element, in this case, the opacity. Finally, remember in the beginning of the article how I mentioned that transitionTime can be overridden by an individual transform? Well, here is how it’s done. I didn’t even declare transitionTime in the main schema. That’s because I wanted each transform to have a unique transition time.
The first major difference I want you to see is that I’m not declaring svg in the schema. The SVG is inside the <i class="icon-new-document"></i>. This is mostly for demo purposes, so as not to bloat the schema that I want you to be viewing. However, the plugin does allow for this functionality. The use case is for those users who only have a few SVG icons that they need in their document and don’t want to use the gulp plugin.
The transform objects are what I really want to focus on here. There’s a lot of new stuff going on here.
If you’ve looked at the Pen, you’ll have noticed that hovering over the new document icon causes the lines to shrink and grow. Each of those lines is a path, and a path can be drawn. The first transform object above includes drawPath. drawpath takes either a number or an object with properties min and max. The number represents a percentage. Let’s say that the transform object had drawPath: 0. That would mean that I want the current path to be drawn to 0% of its length. The transform object really has drawPath: { min: 25, max: 75 }. When the value of drawpath is an object, I’m telling my plugin that I want the path to be drawn to a random percentage between the min and the max. In this case it would be a random number between 25 and 75. If you hover over the icon again, you can see that the line length changes each time the animation occurs. The same principle of setting a random number with min and max applies to transitionTime.
The last newcomer to this animation schema is repeat. repeat takes an object with four valid properties.
loop: takes a Boolean value. If set to true, the animation and all of the transforms further down the chain will repeat until told otherwise. In order to break out of a loop you must either set a loopDuration or change to another animation state.
loopDuration: takes an integer. If I set loop to true and loopDuration to 5000, then the animation chain will repeat itself for 5000ms. If the duration of the animation loop isn’t exactly 5000ms, then the loop will continue its final animation past the set time.
times: takes an integer. If I set times to 2, then my animation will run a total of 3 times. Once because the animation always runs at least once and then 2 more times.
delay: takes an integer. Represents the amount of time you want between the end of the animation and the beginning of the repeat loop.
Next, I want to illustrate a longer animation chain.
Take a look at the shake state. The first and last transform objects have either an id or a waitFor property. Every other transform object has both an id and a waitFor property.
Each of the three middle transform objects is referencing the id of the preceding transform object with their waitFor. The first animation starts a chain that leads to the reset value r:0 at the very end.
Finally, I want to demonstrate how we would draw lines by setting stroke-dashoffset and stroke-dasharray.
For a more detailed explanation of stroke-dasharray, view stroke-dasharray. For my purposes, let’s say that stroke-dasharray is basically setting the length of the path that I don’t want to show. Now, my path certainly isn’t 1000px long. It’s a bit of an exaggeration, but it’s an exaggeration that makes sure that no portion of my path is shown prematurely. The path is drawn to completion in the following transform.
When I set drawPath back to 0 it will adjust the stroke-dasharray and stroke-dashoffset accordingly. The last thing I want to point out about this line is the id. It’s an array instead of a string. The first value in the array is the name of the id. The second value will always be an integer representing a timeout. If I only used this transform object in the animation I would only see a path being drawn 600ms after the mouseover event.
For more examples and further documentation you can check out my demo page.
Conclusion
There may be many of you that are still on the fence about whether switching your icon system to something new is a good thing. There are pros and cons to the different icon systems currently available. I’ve tried to create a simple way for you to make the move to SVG icons. I hope you find it useful.