The GOV.UK team recently published “How and why we removed jQuery from GOV.UK“. This was an insightful look at how an organization can assess its tooling and whether something is still the best tool for the job. This is not a nudge to strip libraries out of your current project right now! Many of us may still be supporting legacy projects and browser requirements that prevent this from being a viable option.
Some of the criticism appears to be that the library size argument is negligible on modern network speeds and caching.
This article also makes the case for improving maintenance. Instead of upgrading disparate outdated versions of code and having to address security updates in a piecemeal approach, removing the dependency reduces this footprint. This is the dream of having the luxury for addressing technical debt.
What caught my eye in particular was the link to the documentation on how to remove jQuery. Understanding how to decouple and perform migration steps are maintenance tasks that will continue to come up for websites and it’s reassuring to have a guide from someone that had to do the same.
Alright, so the last time we checked in, we were using CSS Grid and combining them with CSS clip-path and mask techniques to create grids with fancy shapes.
Here’s just one of the fantastic grids we made together:
CodePen Embed Fallback
Ready for the second round? We are still working with CSS Grid, clip-path, and mask, but by the end of this article, we’ll end up with different ways to arrange images on the grid, including some rad hover effects that make for an authentic, interactive experience to view pictures.
And guess what? We’re using the same markup that we used last time. Here’s that again:
<div class="gallery">
<img src="..." alt="...">
<img src="..." alt="...">
<img src="..." alt="...">
<img src="..." alt="...">
<!-- as many times as we want -->
</div>
Like the previous article, we only need a container with images inside. Nothing more!
Nested Image Grid
Last time, our grids were, well, typical image grids. Other than the neat shapes we masked them with, they were pretty standard symmetrical grids as far as how we positioned the images inside.
Let’s try nesting an image in the center of the grid:
CodePen Embed Fallback
We start by setting a 2✕2 grid for four images:
.gallery {
--s: 200px; /* controls the image size */
--g: 10px; /* controls the gap between images */
display: grid;
gap: var(--g);
grid-template-columns: repeat(2, auto);
}
.gallery > img {
width: var(--s);
aspect-ratio: 1;
object-fit: cover;
}
Nothing complex yet. The next step is to cut the corner of our images to create the space for the nested image. I already have a detailed article on how to cut corners using clip-path and mask. You can also use my online generator to get the CSS for masking corners.
What we need here is to cut out the corners at an angle equal to 90deg. We can use the same conic-gradient technique from that article to do that:
We could use the clip-path method for cutting corners from that same article, but masking with gradients is more suitable here because we have the same configuration for all the images — all we need is a rotation (defined with the variable --_a) get the effect, so we’re masking from the inside instead of the outside edges.
Now we can place the nested image inside the masked space. First, let’s make sure we have a fifth image element in the HTML:
The inset property allows us to place the image at the center using a single declaration. We know the size of the image (defined with the variable --s), and we know that the container’s size equals 100%. We do some math, and the distance from each edge should be equal to (100% - var(--s))/2.
You might be wondering why we’re using clip-path at all here. We’re using it with the nested image to have a consistent gap. If we were to remove it, you would notice that we don’t have the same gap between all the images. This way, we’re cutting a little bit from the fifth image to get the proper spacing around it.
Now, many of you might also be wondering: why all the complex stuff when we can place the last image on the top and add a border to it? That would hide the images underneath the nested image without a mask, right?
That’s true, and we will get the following:
CodePen Embed Fallback
No mask, no clip-path. Yes, the code is easy to understand, but there is a little drawback: the border color needs to be the same as the main background to make the illusion perfect. This little drawback is enough for me to make the code more complex in exchange for real transparency independent of the background. I am not saying a border approach is bad or wrong. I would recommend it in most cases where the background is known. But we are here to explore new stuff and, most important, build components that don’t depend on their environment.
Let’s try another shape this time:
CodePen Embed Fallback
This time, we made the nested image a circle instead of a square. That’s an easy task with border-radius But we need to use a circular cut-out for the other images. This time, though, we will rely on a radial-gradient() instead of a conic-gradient() to get that nice rounded look.
All the images use the same configuration as the previous example, but we update the center point each time.
The above figure illustrates the center point for each circle. Still, in the actual code, you will notice that I am also accounting for the gap to ensure all the points are at the same position (the center of the grid) to get a continuous circle if we combine them.
Now that we have our layout let’s talk about the hover effect. In case you didn’t notice, a cool hover effect increases the size of the nested image and adjusts everything else accordingly. Increasing the size is a relatively easy task, but updating the gradient is more complicated since, by default, gradients cannot be animated. To overcome this, I will use a font-size hack to be able to animate the radial gradient.
If you check the code of the gradient, you can see that I am adding 1em:
It’s known that em units are relative to the parent element’s font-size, so changing the font-size of the .gallery will also change the computed em value — this is the trick we are using. We are animating the font-size from a value of 0 to a given value and, as a result, the gradient is animated, making the cut-out part larger, following the size of the nested image that is getting bigger.
Here is the code that highlights the parts involved in the hover effect:
.gallery {
--s: 200px; /* controls the image size */
--g: 10px; /* controls the gaps between images */
font-size: 0; /* initially we have 1em = 0 */
transition: .5s;
}
/* we increase the cut-out by 1em */
.gallery > img {
mask:
radial-gradient(farthest-side at var(--_a),
#0000 calc(50% + var(--g)/2 + 1em), #000 calc(51% + var(--g)/2 + 1em));
}
/* we increase the size by 2em */
.gallery > img:nth-child(5) {
width: calc(var(--s) + 2em);
}
/* on hover 1em = S/5 */
.gallery:hover {
font-size: calc(var(--s) / 5);
}
The font-size trick is helpful if we want to animate gradients or other properties that cannot be animated. Custom properties defined with @property can solve such a problem, but support for it is still lacking at the time of writing.
This time we clipped the nested image into the shape of a rhombus. I’ll let you dissect the code as an exercise to figure out how we got here. You will notice that the structure is the same as in our examples. The only differences are how we’re using the gradient to create the shape. Dig in and learn!
Circular Image Grid
We can combine what we’ve learned here and in previous articles to make an even more exciting image grid. This time, let’s make all the images in our grid circular and, on hover, expand an image to reveal the entire thing as it covers the rest of the photos.
CodePen Embed Fallback
The HTML and CSS structure of the grid is nothing new from before, so let’s skip that part and focus instead on the circular shape and hover effect we want.
We are going to use clip-path and its circle() function to — you guessed it! — cut a circle out of the images.
That figure illustrates the clip-path used for the first image. The left side shows the image’s initial state, while the right shows the hovered state. You can use this online tool to play and visualize the clip-path values.
For the other images, we can update the center of the circle (70% 70%) to get the following code:
.gallery > img:hover {
--_c: 50%; /* same as "50% at 50% 50%" */
}
.gallery > img:nth-child(1) {
clip-path: circle(var(--_c, 55% at 70% 70%));
}
.gallery > img:nth-child(2) {
clip-path: circle(var(--_c, 55% at 30% 70%));
}
.gallery > img:nth-child(3) {
clip-path: circle(var(--_c, 55% at 70% 30%));
}
.gallery > img:nth-child(4) {
clip-path: circle(var(--_c, 55% at 30% 30%));
}
Note how we are defining the clip-path values as a fallback inside var(). This way allows us to more easily update the value on hover by setting the value of the --_c variable. When using circle(), the default position of the center point is 50% 50%, so we get to omit that for more concise code. That’s why you see that we are only setting 50% instead of 50% at 50% 50%.
Then we increase the size of our image on hover to the overall size of the grid so we can cover the other images. We also ensure the z-index has a higher value on the hovered image, so it is the top one in our stacking context.
.gallery {
--s: 200px; /* controls the image size */
--g: 8px; /* controls the gap between images */
display: grid;
grid: auto-flow var(--s) / repeat(2, var(--s));
gap: var(--g);
}
.gallery > img {
width: 100%;
aspect-ratio: 1;
cursor: pointer;
z-index: 0;
transition: .25s, z-index 0s .25s;
}
.gallery > img:hover {
--_c: 50%; /* change the center point on hover */
width: calc(200% + var(--g));
z-index: 1;
transition: .4s, z-index 0s;
}
.gallery > img:nth-child(1){
clip-path: circle(var(--_c, 55% at 70% 70%));
place-self: start;
}
.gallery > img:nth-child(2){
clip-path: circle(var(--_c, 55% at 30% 70%));
place-self: start end;
}
.gallery > img:nth-child(3){
clip-path: circle(var(--_c, 55% at 70% 30%));
place-self: end start;
}
.gallery > img:nth-child(4){
clip-path: circle(var(--_c, 55% at 30% 30%));
place-self: end;
}
What’s going on with the place-self property? Why do we need it and why does each image have a specific value?
Do you remember the issue we had in the previous article when creating the grid of puzzle pieces? We increased the size of the images to create an overflow, but the overflow of some images was incorrect. We fixed them using the place-self property.
Same issue here. We are increasing the size of the images so each one overflows its grid cells. But if we do nothing, all of them will overflow on the right and bottom sides of the grid. What we need is:
the first image to overflow the bottom-right edge (the default behavior),
the second image to overflow the bottom-left edge,
the third image to overflow the top-right edge, and
the fourth image to overflow the top-left edge.
To get that, we need to place each image correctly using the place-self property.
In case you are not familiar with place-self, it’s the shorthand for justify-self and align-self to place the element horizontally and vertically. When it takes one value, both alignments use that same value.
Expanding Image Panels
In a previous article, I created a cool zoom effect that applies to a grid of images where we can control everything: number of rows, number of columns, sizes, scale factor, etc.
A particular case was the classic expanding panels, where we only have one row and a full-width container.
CodePen Embed Fallback
We will take this example and combine it with shapes!
Before we continue, I highly recommend reading my other article to understand how the tricks we’re about to cover work. Check that out, and we’ll continue here to focus on creating the panel shapes.
First, let’s start by simplifying the code and removing some variables
CodePen Embed Fallback
We only need one row and the number of columns should adjust based on the number of images. That means we no longer need variables for the number of rows (--n) and columns (--m ) but we need to use grid-auto-flow: column, allowing the grid to auto-generate columns as we add new images. We will consider a fixed height for our container; by default, it will be full-width.
Once again, each image is contained in its grid cell, so there’s more space between the images than we’d like:
We need to increase the width of the images to create an overlap. We replace min-width:100% with min-width: calc(100% + var(--s)), where --s is a new variable that controls the shape.
CodePen Embed Fallback
Now we need to fix the first and last images, so they sort of bleed off the page without gaps. In other words, we can remove the slant from the left side of the first image and the slant from the right side of the last image. We need a new clip-path specifically for those two images.
We also need to rectify the overflow. By default, all the images will overflow on both sides, but for the first one, we need an overflow on the right side while we need a left overflow for the last image.
The final result is a nice expanding panel of slanted images!
CodePen Embed Fallback
We can add as many images as you want, and the grid will adjust automatically. Plus, we only need to control one value to control the shape!
We could have made this same layout with flexbox since we are dealing with a single row of elements. Here is my implementation.
Sure, slanted images are cool, but what about a zig-zag pattern? I already teased this one at the end of the last article.
CodePen Embed Fallback
All I’m doing here is replacing clip-path with mask… and guess what? I already have a detailed article on creating that zig-zag shape — not to mention an online generator to get the code. See how all everything comes together?
The trickiest part here is to make sure the zig-zags are perfectly aligned, and for this, we need to add an offset for every :nth-child(odd) image element.
Note the use of the --_p variable, which will fall back to 0% but will be equal to --_s for the odd images.
Here is a demo that illustrates the issue. Hover to see how the offset — defined by --_p — is fixing the alignment.
CodePen Embed Fallback
Also, notice how we use a different mask for the first and last image as we did in the previous example. We only need a zig-zag on the right side of the first image and the left side of the last image.
And why not rounded sides? Let’s do it!
CodePen Embed Fallback
I know that the code may look scary and tough to understand, but all that’s going on is a combination of different tricks we’ve covered in this and other articles I’ve already shared. In this case, I use the same code structure as the zig-zag and the slanted shapes. Compare it with those examples, and you will find no difference! Those are the same tricks in my previous article about the zoom effect. Then, I am using my other writing and my online generator to get the code for the mask that creates those rounded shapes.
If you recall what we did for the zig-zag, we had used the same mask for all the images but then had to add an offset to the odd images to create a perfect overlap. In this case, we need a different mask for the odd-numbered images.
The only effort I did here is update the second mask to include the gap variable (--g) to create that space between the images.
The final touch is to fix the first and last image. Like all the previous examples, the first image needs a straight left edge while the last one needs a straight right edge.
For the first image, we always know the mask it needs to have, which is the following:
That’s all! Three different layouts but the same CSS tricks each time:
the code structure to create the zoom effect
a mask or clip-path to create the shapes
a separate configuration for the odd elements in some cases to make sure we have a perfect overlap
a specific configuration for the first and last image to keep the shape on only one side.
And here is a big demo with all of them together. All you need is to add a class to activate the layout you want to see.
CodePen Embed Fallback
And here is the one with the Flexbox implementation
CodePen Embed Fallback
Wrapping up
Oof, we are done! I know there are many CSS tricks and examples between this article and the last one, not to mention all of the other tricks I’ve referenced here from other articles I’ve written. It took me time to put everything together, and you don’t have to understand everything at once. One reading will give you a good overview of all the layouts, but you may need to read the article more than once and focus on each example to grasp all the tricks.
Did you notice that we didn’t touch the HTML at all other than perhaps the number of images in the markup? All the layouts we made share the same HTML code, which is nothing but a list of images.
Before I end, I will leave you with one last example. It’s a “versus” between two anime characters with a cool hover effect.
CodePen Embed Fallback
What about you? Can you create something based on what you have learned? It doesn’t need to be complex — imagine something cool or funny like I did with that anime matchup. It can be a good exercise for you, and we may end with an excellent collection in the comment section.
That ain’t rhetorical: I’m really interested in finding great use cases for CSS multi-column layouts.
The answer seems straightforward. Use columns when you want to split any content into columns, right? Here is generally the sort of example you’ll find in articles that show how CSS mutli-column layouts work, including our very own Almanac:
CodePen Embed Fallback
Right on. But is this an actual use case? Mmmmmaybe. If the text is relatively brief, then perhaps it’s a nice touch. That’s how I sold it to myself when redesigning my website a few years ago. It’s not that way today, but this is what it looked like then:
But an entire long-form article split into columns? I love it in newspapers but am hesitant to scroll down a webpage to read one column, only to scroll back up to do it again.
I suppose we can use it to place two elements side-by-side, but flexbox is way more suited for that. Plus, a limitation prevents us from selecting the columns to size them individually. The columns have to be the same width.
One thing columns have going for them is that they are the only CSS layout method that fragments content. (That is, unless we’re counting CSS Regions… what happened to those, anyway?!) So, if you wanna split a paragraph up into columns, it’s already possible without additional wrappers.
When else might you need to split a continuous block of content into columns? I remember needing to do that when I had a big ol’ unordered list of items. I like the way lists can make content easy to scan, but long lists can make one side of the page look super heavy. Let’s say, for example, that we were listing out all the post tags for CSS-Tricks in alphabetical groups. A multi-column layout works beautifully for that:
CodePen Embed Fallback
Go ahead and try resizing the viewport width. Three columns are defined but the number will change based on the amount of available space. Gotta love all that responsive goodness without the media query work!
I was working on a demo for the :left pseudo-class and reached for columns because it’s a great way to fragment things for printing demos. So, I guess there’s another use case. And while making a demo, I realized that a multi-column layout could be used to create a masonry grid of items, like an image gallery:
CodePen Embed Fallback
But what else? Are we limited to short paragraphs, long lists, and free-flowing grids?
If a utility class only does one thing, chances are you don’t want it to be overridden by any styles coming from elsewhere. One approach is to use !important to be 100% certain the style will be applied, regardless of specificity conflicts.
The Tailwind config file has an !important option that will automatically add !important to every utility class. There’s nothing wrong with using !important this way, but nowadays there are better ways to handle specificity. Using CSS Cascade Layers we can avoid the heavy-handed approach of using !important.
Cascade layers allow us to group styles into “layers”. The precedence of a layer always beats the specificity of a selector. Specificity only matters inside each layer. Establishing a sensible layer order helps avoid styling conflicts and specificity wars. That’s what makes CSS Cascade Layers a great tool for managing custom styles alongside styles from third-party frameworks, like Tailwind.
A Tailwind source .css file usually starts something like this:
Directives are custom Tailwind-specific at-rules you can use in your CSS that offer special functionality for Tailwind CSS projects. Use the @tailwind directive to insert Tailwind’s base, components, utilities and variants styles into your CSS.
In the output CSS file that gets built, Tailwind’s CSS reset — known as Preflight — is included first as part of the base styles. The rest of base consists of CSS variables needed for Tailwind to work. components is a place for you to add your own custom classes. Any utility classes you’ve used in your markup will appear next. Variants are styles for things like hover and focus states and responsive styles, which will appear last in the generated CSS file.
The Tailwind @layer directive
Confusingly, Tailwind has its own @layer syntax. This article is about the CSS standard, but let’s take a quick look at the Tailwind version (which gets compiled away and doesn’t end up in the output CSS). The Tailwind @layer directive is a way to inject your own extra styles into a specified part of the output CSS file.
For example, to append your own styles to the base styles, you would do the following:
@layer base {
h1 {
font-size: 30px;
}
}
The components layer is empty by default — it’s just a place to put your own classes. If you were doing things the Tailwind way, you’d probably use @apply (although the creator of Tailwind recently advised against it), but you can also write classes the regular way:
Unlike the Tailwind directive, these don’t get compiled away. They’re understood by the browser. In fact, DevTools in Edge, Chrome, Safari, and Firefox will even show you any layers you’ve defined.
You can have as many layers as you want — and name them whatever you want — but in this example, all my custom styles are in a single layer (my-custom-styles). The first line establishes the layer order:
This needs to be provided upfront. Be sure to include this line before any other code that uses @layer. The first layer in the list will be the least powerful, and the last layer in the list will be the most powerful. That means tailwind-base is the least powerful layer and any code in it will be overridden by all the subsequent layers. That also means tailwind-utilities will always trump any other styles — regardless of source order or specificity. (Utilities and variants could go in separate layers, but the maintainers of Tailwind will ensure variants always trump utilities, so long as you include the variants below the utilities directive.)
Anything that isn’t in a layer will override anything that is in a layer (with the one exception being styles that use !important). So, you could also opt to leave utilities and variants outside of any layer:
What did this actually buy us? There are plenty of times when advanced CSS selectors come in pretty handy. Let’s create a version of :focus-within that only responds to keyboard focus rather than mouse clicks using the :has selector (which lands in Chrome 105). This will style a parent element when any of its children receive focus. Tailwind 3.1 introduced custom variants — e.g. <div class="[&:has(:focus-visible)]:outline-red-600"> — but sometimes it’s easier to just write CSS:
Let’s say in just one instance we want to override the outline-color from blue to something else. Let’s say the element we’re working with has both the Tailwind class .outline-red-600 and our own .radio-container:has(:focus-visible) class:
Ordinarily, the higher specificity of .radio-container:has(:focus-visible) would mean the Tailwind class has no effect — even if it’s lower in the source order. But, unlike the Tailwind @layer directive that relies on source order, the CSS standard @layer overrules specificity.
As a result, we can use complex selectors in our own custom styles but still override them with Tailwind’s utility classes when we need to — without having to resort to heavy-handed !important usage to get what we want.
Stucco is a type of mixture that, when applied to a wall, gives it a nice, rough texture. If you want to recreate the effect of this texture in your digital project, in this tutorial I’ll show you how to create a stucco brush in Photoshop—both from a photo and from a stucco texture made from scratch.
And if you want to save time, you can also download a brush set from Envato Elements! One subscription gives you access to millions of creative assets, including this set of stone stamp brushes:
What You’ll Learn in This Stucco Brush Photoshop Tutorial
How to create a Photoshop stucco texture brush
How to create a stucco texture in Photoshop
How to make a stucco texture brush seamless
What You’ll Need
Your stucco Photoshop brush will be most realistic if you make it out of a photo. Here’s the one I’ve used, but you can use your own photo, or a different photo from Envato Elements.
Download the stucco texture and open it in Photoshop. Take the Crop Tool (C) and crop the edges slightly—their level of brightness breaks the uniformity of the whole texture.
Step 2
Go to Edit > Define Brush Preset and give the brush a name.
Step 3
The stucco brush Photoshop is done, so you can now apply the same texture to any background. However, if you just apply it straight away, you may get a „dirty” result like this:
To fix this, change the Blend Mode to Overlay…
… then duplicate the layer (Control-J) and change its Blend Mode to Multiply. Adjust the Opacity to create the level of brightness that looks best on this background.
2. How to Create a Stucco Texture in Photoshop
Step 1
You can also create a stucco Photoshop brush from scratch, without using a photo. Create a New File with these dimensions: 3000 x 3000 px.
Step 2
Go to Filter > Noise > Add Noise, and add as much noise as possible.
Step 3
Go to Filter > Blur > Gaussian Blur, and make the noise slightly blurry, so that the individual points are no longer visible.
Step 4
Go to the Channels tab and take the selection from the RGB channel by Control-clicking its thumbnail.
Step 5
Invert the selection with Control-Shift-I, create a New Layer, and fill it with black.
Step 6
Create a New Layer below and fill it with white.
Step 7
Double-clickLayer 1 and add the following Bevel & Emboss settings:
Style: Inner Bevel
Technique: Chisel Soft
Depth: 1000%
Direction: Up
Size: 13 px
Soften: 5 px
Angle: 90
Altitude: 30
Highlights: Screen, white, 100%
Shadows: Multiply, black, 100%
You can use a different Gloss Contour for a different type of stucco texture!
Step 8
Add a Stroke as well:
Size: 1 px
Position: Center
Blend Mode: Normal
Opacity: 67%
Fill Type: Color
Color: white
Step 9
The stucco texture is done! Now you can just create a brush out of it, like before.
3. How to Create a Seamless Stucco Texture Brush
Step 1
What if you want to paint more freely with your stucco Photoshop brush, without having to worry about the edges? Then you need to create a seamless brush. First, open your stucco texture (the photo or the one we’ve just created). Then make the texture seamless, for example using the method described in this tutorial:
This time, instead of creating a brush right away, go to Edit > Define Pattern.
Step 3
Create a New File—make it quite big.
Step 4
Open the Brushes panel and go to Dry Media Brushes > Kyle’s Ultimate Pastel Palooza.
Step 5
Go to the Brush Settings. Go to the Texture tab and select the stucco texture we’ve just created. Then adjust the settings until the brush works as you expect it to.
Here are the settings I’ve used:
Scale: 190% (it can be smaller, if you have a bigger area to cover)
Brightness: 0
Contrast: -25
Texture Each Tip: checked
Mode: Height
Depth: 7%
Minimum Depth & Depth Jitter: 0%
Step 6
When you’re done, create a new brush by clicking the plus icon on the bottom. Your seamless Photoshop stucco texture brush is all done now! However, keep in mind that this texture has fewer shades of gray than a normal stamp brush, so the effect may look less convincing.
Good Job!
Now you know how to create a stucco texture in Photoshop, as well as how to create a stamp or a seamless brush from it.
Textured Photoshop Brushes Available to Download
Photoshop brushes are really powerful, and they can save you a lot of time—but having to create them first often defeats the purpose. Fortunately, on Envato Elements, you’ll find plenty of professional brushes, ready to download and use! Here are a few great options:
Do you need more control over the chaos? These 20 brushes will work great with a graphics tablet—with them, you can turn every stroke into a detailed texture.
These brushes may look simple, but you’d be surprised what effects you can achieve with them! You can use them to add noise, make a surface look more detailed, or turn smooth surfaces into rough ones.
Realistic photo textures are the best way to quickly add some grunge style to a photo. This set contains as many as 24 brushes based on hand-drafted texture—you just can’t go wrong with them!
If you want to quickly make your image less „clean”, a simple spray brush may be exactly what you need. This set contains 12 of them, each with a slightly different look, but they all come in a high resolution and are easy to control.
More Photoshop Brush Tutorials
If you’re interested in Photoshop brushes, you may also enjoy these tutorials:
In this Adobe Illustrator baseline shift tutorial, you’ll learn what a baseline is, where the baseline shift is, and how to change it in Illustrator.
We’ll use the Alma Mono font from Envato Elements to better exemplify baseline shift in Illustrator and learn how to change the baseline shift in Illustrator.
Interested in learning more about working with fonts in Illustrator? Don’t miss these useful resources:
What You’ll Learn in This Adobe Illustrator Baseline Shift Tutorial
What is a baseline?
What is Baseline Shift?
Where is Baseline Shift in Illustrator?
How to change the Baseline Shift in Illustrator
What Is a Baseline?
A baseline is the invisible line on which letters sit. Using baseline shift in Illustrator, you can move the entire text or selected characters up or down relative to the baseline.
Where Is Baseline Shift in Illustrator?
To adjust the baseline shift in Adobe Illustrator, you need to go to the Character panel.
You can either go to Window > Type > Character or use the Control-T keyboard shortcut to open this panel. As long as you have some text selected, the Character panel can also be accessed from the control panel. All you have to do is click that underlined Character text which will open the Character fly-out panel.
How to Change the Baseline Shift in Illustrator
Select a piece of text or use the Type Tool (T) to select a part of that text, focus on the Baseline Shift box, and edit the existing value to move the selection relative to the baseline. Additionally, you can deselect your text and set a baseline shift value for the text that you’re about to add.
Alternatively, you can use a keyboard shortcut to adjust the baseline shift in Illustrator. Select your text and press Alt-Shift-Up Arrow to increase the baseline shift or Alt-Shift-Down Arrow to decrease the baseline shift value.
Baseline shift can be particularly useful when you’re working with text on a path as it provides a quick way for you to align and move text along that path.
Congratulations! You’re Done!
Now that you know how to change the baseline shift in Illustrator, feel free to use the technique in your future projects.
You can find some great sources of inspiration at Envato Elements, with interesting solutions to improve your design portfolio.
Want to Learn More?
We have loads of tutorials on Envato Tuts+, from beginner to intermediate level. Take a look!
A halftone effect is a technique that makes an image from dots of different sizes and opacities. You might recognize this distinctive look from comic books and newspaper photos.
In the digital era, you can apply the halftone effect to your existing photos, illustrations, or designs, and you don’t have to be a designer to create your own halftone effect. Instead, apply Photoshop actions or premade textures that will help you skip ahead in the process.
This is a great example of the cool results you can get in halftone photography.
One of my favorite places to grab this type of effect is from the library at Envato Elements. This all-you-can-download subscription service has the shortcuts you need to apply halftone effects.
In this roundup, we’ll look at five Photoshop actions and five general-purpose images that can help you apply a halftone effect to your files. Each of these brings a slightly different effect to the table.
5 Best Photoshop Halftone Effects
Photoshop halftone effect actions are the one-click „easy buttons” for applying a style to an existing image. The selections below are a combination of actions and textures that each apply halftones easily.
This is the classic pop-art style effect that can bring the halftone effect in Photoshop to an image with a single click. Download these actions and apply them to create halftone photography.
Here’s another flexible option for applying a pseudo-halftone effect. You can even use a variety of Photoshop halftone effects in this package to vary the size of the dots for complete creative control!
This is a package of ten different effects, but it shines for the halftone effect for Photoshop included in the package. This takes more of a square halftone approach to the effect on your image.
Do you want to create halftone prints? This download includes a number of different texture effects, including a really slick halftone texture you can apply to any typeface.
Brushes are another way of applying the halftone effect, and these illustration brushes can help you apply a halftone effect to any part of an image. Load these halftone brushes into Photoshop and brush over an image to selectively add halftone details. It’s perfect for halftone prints.
5 Halftone Image Effects
Whether you use Photoshop or another app, the images in this section of the roundup are flexible enough to apply to many projects. These textures and premade images feature alpha channels so that you can use them with your existing projects.
This package is a great example of how helpful textures can be. This is a set of ten different halftone effects that you can overlay on any image in either EPS or PNG format.
Here’s another vector texture that you can apply in practically any situation. Thanks to the vector format, you can scale the overlay up to any size and layer it onto any file to add the halftone effect in Photoshop. You can also work with this as a halftone effect in Illustrator.
This halftone print package is flexible and can be used for a variety of images, including the thumbnail for this tutorial! Because it’s packaged as a vector-based halftone effect Illustrator file, you can scale it up to any size and apply the halftone fade to any of your projects.
This paper-style effect still integrates the halftone effect but in a more organic way thanks to the layered paper textures. Try this out for a true paper effect with halftone printing styles for your content.
Halftone effects don’t have to be clean and homogeneous. This package of halftone effects for Illustrator has a „crime scene meets comic book” effect. Drop these in for a touch of halftone without covering your image.
In this tutorial, you will learn how to make a tiny planet in Photoshop. I will explain everything in so much detail that everyone can create the tiny planet Photoshop effect, even those who have just opened Photoshop for the first time.
Do you want to save time with a ready-made effects? Check out Photoshop actions on Envato Elements, where you can find over 1,000 awesome photo effects!
What You’ll Learn in This Little Planet Tutorial
How to set up a photo to transform it into a little planet Photoshop effect
How to transform a photo to a panorama of a tiny planet
How to remove the seam from our little planet effect
How to make final adjustments to the planet Photoshop effect
How to create your own tiny world photo effect
What You’ll Need
To recreate the design above, you will need the following resources:
First, open the photo that you want to work with. To open your photo, go to File > Open, choose your photo, and click Open.
Step 2
Now we need to make sure that once we transform the photo into a planet Photoshop effect, the edges will be aligned as much as possible where they meet. To do so, choose the Crop Tool (C), click on the Straighten icon, and click and hold on the bottom-left edge of the sand and drag to draw a line to the end at the bottom-right edge of the sand.
Step 3
We need to contract the canvas on the top and bottom so that we have more balanced circular panorama. Go to Image > Canvas Size and use the settings below:
2. How to Create a Little Planet Photoshop Effect
Step 1
In this section, we are going to transform a photo into a panorama of a tiny planet. Double-click on the Background layer to create a new layer from the background.
Step 2
Now go to Image > Image Size, click on the link icon to unlink the image aspect ratio, and copy and paste the Height value to the Width value to make the image square.
Step 3
Go to Edit > Transform > Flip Vertical to flip the image vertically.
Step 4
Now go to Filter > Distort > Polar Coordinates and select the Rectangular to Polar option.
Step 5
Press Control-J on your keyboard to duplicate this layer, and then Control-E to merge the original and copy layers into one layer. You can repeat this step a few times until the meeting edge transparency fills in.
Step 6
Now we need to make the edges of the circle panorama Photoshop effect meet seamlessly. To do so, I have used the Spot Healing Brush Tool (J), Healing Brush Tool (J), and Clone Stamp Tool (S). You can use any tool that you prefer, and you can skip over the ocean part in this step.
Step 7
Choose the Elliptical Marquee Tool (M), and Shift-click and drag to draw a selection as shown below.
Step 8
Now choose the Rectangular Marquee Tool (M), and Alt-click and drag to delete the left part of the circle selection.
Step 9
Press Control-J on your keyboard to create a new layer using the selection. Then, go to Edit > Transform > Flip Horizontal to flip the layer horizontally, and position it as shown below. After that, you can add a layer mask to this layer to soften the edges.
Step 10
Now press Control-E on your keyboard to merge the two layers into one. Name this new layer Tiny Planet.
Step 11
You can check once more if any seams need to be adjusted, using the same methods that we have used previously, or make any other changes. Here is my result:
Step 12
Now Right-click on the Tiny Planet layer and choose Convert to Smart Object. Then, press Control-T on your keyboard to transform this layer, and set the Width and Height to 125% and the Angle to 75°.
3. How to Make Final Adjustments to the Tiny World Photo
Step 1
In this section, we are going to make some final adjustments to the little planet effect. Press D on your keyboard to reset the swatches, go to Layer > New Adjustment Layer > Gradient Map to create a new gradient map adjustment layer, and name it Contrast. Then, change the Blending Mode of this layer to Luminosity and set the Opacity to 30%.
Step 2
Now go to Layer > New Adjustment Layer > Levels to create a new levels adjustment layer, and name it Brightness. Then, Double-click on this layer thumbnail and, in the Properties panel, set the Highlight Input Level to 245.
Step 3
Go to Layer > New Adjustment Layer > Vibrance to create a new vibrance adjustment layer and name it Vibrance/Saturation. Then, Double-click on this layer thumbnail and, in the Properties panel, set the Vibrance to +35 and Saturation to +20.
You Made It!
Congratulations, you’ve succeeded! You’ve now learned how to make a tiny planet in Photoshop. Here is the final result of our tiny world photo effect:
5 Creative Photoshop Actions From Envato Elements
If you liked this circle panorama Photoshop effect, you may want to see some cool Photoshop actions. Check out this list of Photoshop actions from Envato Elements.
Create watercolor artworks with just a couple of clicks! This action will do all the work for you, leaving you fully layered and customizable results, along with even 30 color looks to choose from.
With this Photoshop action you can create polygon effect from your photos quick and easy! There are 7 levels of polygon detail to choose from, and there is a lot of options for customizing the results.
Using this plugin, you can create this abstract effect from your photos in an easy way. The script creates a random look, so every time you run it, you will get a unique look!
Discover More Photoshop Tutorials and Resources
Hope you liked this little planet tutorial. Now that you know how to create a tiny planet in Photoshop, here are some other tutorials you may also like:
In this tutorial you will learn how to create an amazing magic dust effect. I will try to explain everything in so much detail that everyone can create it,…
In this tutorial, you will learn how to create an amazing photo effect inspired by the Grand Theft Auto V video game art style. Even if you’re a Photoshop…
In this tutorial, you will learn how to create an amazing pastel photo effect in Adobe Photoshop. Everything will be explained in so much detail that anyone…
Learn how to create an amazing watercolor photo effect in Adobe Photoshop. Everything’s explained in so much detail that anyone can create it, even those who…
Create an ink sketch Photoshop action and Photoshop inking brushes to convert any photo to an ink sketch. Learn it all in this beginner’s Photoshop tutorial.
In this tutorial, you’ll learn how to create a cyberpunk Photoshop effect action to add amazing photo effects to your photos. I’ll explain everything in so…