How to Create Diverse Women Avatars in Adobe Illustrator

Post pobrano z: How to Create Diverse Women Avatars in Adobe Illustrator

Final product image
What You’ll Be Creating

Let’s celebrate International Women’s Day by making a dedication! Follow this tutorial and let’s learn together how to design fancy women avatars. 

I’ll show you how to use and transform simple geometric shapes in order to create a variety of portraits, making them as diverse as possible! We’ll be using various warp effects, the Shaper Tool, the Pathfinder panel, and other tools and functions to vary the age, nationality, complexion and style of the characters.

By the end of this tutorial, you’ll be able to create hundreds of fancy avatars by simply mixing and combining the elements of the characters that we’ll be creating here. Want to see how it works? Check out this Flat Women Avatar Constructor and try it yourself—it’s really fun! 

Apart from that, you can apply these techniques to create any other type of flat avatars, vary the appearance of the character, and try out various styles of flat portraits. For example, check out these profession avatars at GraphicRiver. Feel inspired? Let’s get started!

1. How to Create a Woman With Cornrows

Step 1

Let’s start off by creating a face from a rounded rectangle. You can use either the Rounded Rectangle Tool or the Rectangle Tool (M) to make an 80 x 110 px dark-brown shape with 30 px Corner Radius. 

You can find the Corners option panel in the control toolbar on top while the shape is selected with the Direct Selection Tool (A). Another way to adjust the Corners value is either to set it in the Transform panel (Window > Transform) or to do it manually by pulling the circle markers of the Live Corners of the shape with the Direct Selection Tool (A).

Make a rounded rectangle of 14 x 22 px for the nose and place it right in the center of the face. In order to make sure that we’ve centered everything perfectly, select both shapes and click the face shape once again to make it a Key Object. Click the Horizontal Align Center and—voila!—the nose is exactly where it should be.

creating a face from a rounded rectangle

Step 2

Take the Ellipse Tool (L) and make a 13 x 13 px dark-brown circle for the eye. Select its bottom anchor point with the Direct Selection Tool (A) and delete it by pressing the Delete key (or Backspace if you’re on Mac). Now we have this cheerful look! 

Select the eye, hold down Alt-Shift, and drag it to the opposite side of the face, thus creating a copy of the second one.

make eyes from semi-circles

Let’s work on the eyes a bit more. Use the Rectangle Tool (M) to make a 5 x 2 px shape for the eyelashes. Place it by the outer corner of the eye and align both shapes to the bottom edge. Do the same for the opposite eye.

add the eyelashes with rectangles

Step 3

Let’s make another ellipse for the mouth. Create a 25 x 12 px shape and use the Scissors Tool (C) to click the left and right anchor points and split the shape apart.

make a mouth from the ellipse

Step 4

Use the Anchor Point Tool (Shift-C) to move the anchor handles, forming the upper lip. 

Step 5

Make a 12 x 25 px dark-brown rounded rectangle for the ear and Send it to Back (Shift-Control-[), beneath the head. 

Group (Control-G) the ears and use the Align panel to center the ears to the head, using the head shape as the Key Object.

make the ear from rounded rectangle

Step 6

It’s time to add those cornrows! Grab the Rounded Rectangle Tool and form a 5 x 25 px black shape with fully rounded corners. Align the cornrow to the center of the head.

Hold Alt-Shift and drag the shape to the left, creating a copy. Move the new cornrow a few pixels down. 

make cornrows from rounded rectangles

Step 7

Create more cornrows on the left side of the head, placing each new one a bit lower than the previous one.

Now select all the cornrows (except the very first one) and double-click the Reflect Tool (O) to open its options window. Flip the cornrows over the Vertical Axis and click the Copy button. Hold down Shift and move them to the opposite side of the head.

use the reflect tool

Step 8

Let’s move on and make a 22 x 38 px rounded rectangle for the neck. Don’t forget to vary the brightness of the elements in order to visually separate one part of the body from another as we’re working with solid colors without shadows and highlights. Pick the dark-brown color from the ears using the Eyedropper Tool (I).

Create an 85 x 105 px bright-green rectangle for the body. Make the corners rounded enough (about 37 pt) to form the shoulders. 

create the neck and body from rounded rectangles

Step 9

We can also make the cornrows longer by adding some more rounded rectangles of 5 x 55 px size and placing them at the back of the head (Shift-Control-[).

Now Group (Control-G) everything together and let’s finish off our first avatar!

add longer cornrows

Step 10

Make a 195 x 195 px blue circle for the icon base and Send to Back (Shift-Control-[). Align the character and the icon base to Horizontal Align Center, and let’s see how we can put the character inside the circle, as if inside a container.

Copy the circle and Paste in Front (Control-C > Control-F). Bring to Front (Shift-Control-]), placing the copy on top of everything. In the image below you can see a copy as a circle with black Stroke and no Fill

Select everything, click the right mouse button, and Make Clipping Mask. There you go! Our first icon is ready. Let’s move on to the next one!

make a clipping mask

2. How to Create a Woman With Buns

Step 1

Let’s copy the character from our first avatar and modify it to create the second lady! Let’s change her skin color. Use the Select Similar Objects feature from the control panel on top to select the elements filled with the same color faster.

recolor the character

Step 2

Make the face more rounded by increasing the value of the Corner Radius. We can also do this by pulling the circle markers of the Live Corners with the Direct Selection Tool (A).

Now select the bottom anchor point with the Direct Selection Tool (A) and make the chin pointed by Converting selected anchor points to corner from the control panel on top. Adjust the shape of the jaw by moving both side anchor points down.

change the shape of the face

Step 3

Change the shape of the nose, by making it narrower (11 x 22 px) and more rounded. And recolor it so that it fits the overall color scheme of the face.

Change the shape of the nose

Step 4

Use the Ellipse Tool (L) to create a 10 x 10 px black circle and add a 12 x 4 px rounded rectangle for the eyelash to give the impression of a single-fold eyelid. Select both shapes and click the eye once again to make it a Key Object. Use the Align panel to Vertical Align Top, combining the edges of the shape.

make the eyes from circles

Step 5

Let’s add some lipstick there! Make a 15 x 12 px rose-pink ellipse and delete its bottom anchor point to form the upper lip. Keeping the shape selected, double-click the Reflect Tool (O), flip the shape over the Horizontal Axis, and click Copy to create the lower lip. Make the copy slightly larger and make its Fill color lighter. 

Add a horizontal stripe between the lips using the Rectangle Tool (M) and make the corners of the mouth by adding a couple of tiny circles there. 

make lips from circles

Step 6

Now let’s make a stylish haircut. Duplicate (Control-C > Control-F) the head shape and change the color of the copy to black. Keeping the shape selected, double-click the Scale Tool (S) and set the Uniform Scale value to 105% and click OK to make the copy a bit larger.

Now grab the Eraser Tool (Shift-E), hold Alt and erase the bottom part of the shape, leaving only a straight-cut fringe.

make a haircut from face shape copy

Step 7

Let’s use the Shaper Tool (Shift-N) to create a small triangle in the center of the forehead. Just draw a freehand triangle silhouette and it will automatically transform into a real vector shape.

Now select both the triangle and the hair and scribble above the triangle with the Shaper Tool (Shift-N) to cut it out. As you may notice, a black stroke from the triangle may remain on the hair. In this case, just select it and set the Stroke color to none in the Color panel. 

make a triangle and cut it out

Step 8

Let’s add some buns! Use the Rounded Rectangle Tool to make a 20 x 7 px lilac shape for the hair band.

Place a 26 x 26 px black circle on top of the band and Send to Back (Shift-Control-[).

Group the parts of the bun and rotate it about 45 degrees, attaching the bun to the head.

Use the Reflect Tool (O) to flip and copy the bun and attach it to the opposite side of the head.

make hair buns

Step 9

Now let’s change the color of the shirt to the same color as we have for the face and duplicate it (Control-C > Control-F). Change the color of the top copy to pink. 

Create a 50 x 65 px rounded rectangle of any color on top of the body and place it as shown in the image below. Select both the new rectangle and the pink shape beneath it and use the Shaper Tool (Shift-N) to scribble above the shape that we want to cut out in order to create the neck of the shirt.

make a shirt with the shaper tool

Step 10

This is how the new shirt looks!

a new shirt

Step 11

Let’s copy the icon base from our previous icon and place our fancy woman with buns inside. I’ve tweaked the colors a bit to make them match, changing the color of the circle to pink and the woman’s shift to lilac.

Great work! Let’s move on and create our third avatar!

finish up with the avatar

3. How to Design a Cheerful Young Woman Avatar

Step 1

Let’s use the copy of our first character and change its appearance. First of all, delete the elements of the mouth and create a 35 x 25 px ellipse with dark-brown stroke and no fill. Use the Scissors Tool (C) to click both side anchor points and split the shape apart. Open the Stroke panel (Window > Stroke), and set the Weight to 3 pt, Cap to Round Cap.

make the mouth from the ellipse

Step 2

Replace the eyes with circles and add the eyelashes by creating a small rounded rectangle and rotating it 45 degrees.

make the eyes from the circles

Step 3

Let’s rotate the eyebrows as well, creating a cheerful and slightly surprised facial expression. Select the brow and double-click the Rotate Tool (R) to open the options panel. Set the Angle to 30 degrees and click OK

Do the same for the opposite brow, rotating it -30 degrees.

Make the skin color lighter and add a bindi to the forehead with the Ellipse Tool (L).

Use the Live Corners function to make the face more rounded.

rotate the eyebrows and reshape the head

Step 4

How about adding some more accessories? Create a 9 x 9 px ellipse with yellow Stroke and no Fill, depicting a golden ring. Attach it to the right side of the nose and place it behind the nose by dragging the shape down in the Layers panel. 

make a nose ring from circle

Step 5

Now we’ll draw the hair. Copy the face shape and Paste in Back (Control-C > Control-B). Fill the bottom copy with dark-brown color for the hair. 

Drag the top copy (which is for the face) down a bit, making the top part of the hair visible. 

Now that the chin is too low, select both copies and use the Shaper Tool (Shift-N) to scribble above the bottom part of the face in order to delete it.

And there we have it, some nice slick hair! Let’s add details to the hairdo.

make the head from the face shape

Step 6

Use the Rectangle Tool (M) to add a narrow part in the center of the hair shape. Select both the hair shape and the rectangle part and scratch out the unneeded piece. Change the color of the rectangle to the same skin color as we have for the face.

make a hair part from rectangle

Step 7

Let’s zoom out and take a look at our character. Everything looks fine at this stage; however, I’ve decided to make the parting a bit narrower. The shape is still easily editable and accessible from the Layers panel. 

make the parting narrower if needed

Step 8

Now let’s add a low ponytail to the hairdo. Here is a quick and easy way to make it from a rectangle. Create a 30 x 84 px shape on the right side of the head. Select the bottom left and the top right anchor points of the rectangle using the Direct Selection Tool (A) and pull the Live Corners marker to make both corners fully rounded. 

Now we can Send the ponytail to Back (Shift-Control-[) and position it as we need.

make a ponytail from rectangle

Step 9

Let’s also change the dress of our character. Copy (Control-C) and Paste in Place (Shift-Control-V) the body shape. Change the color of the copies to skin color.

Now grab the Shaper Tool (Shift-N) and draw an upside down triangle above the body for the V-neck. Once your freehand triangle turns into a vector shape, select it together with the top body shape and use the body as the Key Object to Horizontal Align Center of both shapes. 

make a dress with v-neck 1

Step 10

While both shapes are still selected, use the Shaper Tool (Shift-N) and scribble over the triangle to cut it out.

Now we can change the color of the top copy to bright orange for the dress.

make a dress with v-neck 2

Step 11

Use the copy of the circle icon base from our previous icon to replace the character inside the Clipping Mask. Change the color of the icon to green—and there we have it! 

Our fashionable young woman avatar is ready! 

Just a few more words before we finish…

fill the circle with green color

Step 12

So, let’s take a look at all the variety of facial shapes and forms that we can create using just a rectangle. We can make the face wide and angular if we round the corners just a bit. Otherwise, we can make the face fully rounded by setting the Corner Radius to its maximum.

We can also vary the shape of the chin by making it less or more pointed. Moreover, we can change the shape of the jaw by changing the position of the side anchor points of the shape.

We can also edit the top and bottom parts of the face separately from each other, making the head shape look even more interesting. If we take a look at the bottom example, the forehead is far more rounded than the jaw. 

And this is just a small part of all the variations that we can build from one shape. There are round faces, oval faces, square, triangular… Use your imagination and photo references, or look at the people around you to see how really different they are!

vary the face shapes made from rectangle

Step 13

The last but not the least thing I want to mention here is the age of the characters. We can easily depict women of different generations by just adding such minor details as wrinkles.

Use the Arc Tool (or the Pen Tool (P) or the Pencil Tool (N) if you find it more comfortable to work with) to make some tiny arched lines for the eyes, the corners of the mouth and the chin. Vary the Weight in the Stroke panel to make the wrinkles thicker or thinner and apply them to the face, making the person look older.

Don’t forget the change the facial expressions to make our characters more diverse. Change the position of the lips, the angle of the brows and the eyes to make the person look cheerful or grumpy.

create wrinkles with the arc tool

Congratulations! Our Flat Women Avatars Are All Done!

Great job! Our fancy avatars are finished!

I hope you’ve discovered some new interesting tips and tricks while following this tutorial that will help you with your future illustrations.

Flat Women Avatars

Try to draw as many different flat portraits as you can come up with!

Don’t forget that you can get a Flat Women Avatar Constructor with premade elements that will help you to get hundreds of combinations just in a few clicks. Apart from that, you’ll get the whole pack of fancy avatars that were demonstrated in this tutorial.

Flat Women Avatars

22 Attention To Detail Designs

Post pobrano z: 22 Attention To Detail Designs

When it comes to design, you can take two approaches; complex or simple. A simple approach would look something like the nike logo, or a minimalistic mockup. This can be very appealing and definitely has its time and its place.

But on the contrary is a more complex design. An example of this would be something like the Starbucks logo, or a detailed sketch. Again, more complex designs definitely have their time and place.

I’ve gone ahead and put together a collection of detailed designs as examples to use for your inspiration. Enjoy!

Credit to respective artists.


credit:Mattis Kun

credit:Tobias Saul

credit:Greg Coulton

credit:Greg Coulton

credit:Lukas Haen

credit:Matt Wilson & ? Studio—JQ ?

credit:Charlie Davis

credit:Tom Lane

credit:Joseph Veazey

credit:Charlie Drawing

credit:Whitney Noble

credit:Matt Leckie

credit:Nerina van der Walt

credit:Matthew Chamberlain

credit:Luis Pinto

credit:Jay Sawyer

credit:Rod Hunt

credit:Sara Galvao

credit:LIAM CREEK

credit:Lauren Doyle

credit:Christopher Gregory

credit:Christopher Gregory


Why Your Contact Page Isn’t Meeting Your Audience’s Standards

Post pobrano z: Why Your Contact Page Isn’t Meeting Your Audience’s Standards
first image of the post
Your website is an online representation of who you are. If it keeps the user’s experience in mind and appropriately represents your brand, you’ll be able to create a strong connection with your audience. However, if it is sloppy, difficult to navigate and doesn’t consider the needs of your user, you probably won’t see much […]

Woman Interrupted: Portrait of silence

Post pobrano z: Woman Interrupted: Portrait of silence
Print
Woman Interrupted

You probably remember that during the 1st US presidential debate, Donald J. Trump interrupted Hillary Clinton 51 times. Clinton interrupted him only nine times.
Unfortunately, this behavior, that we call MANTERRUPTION, is widespread in boardroom meetings and across the professional world.

For the International Women’s Day on March 8th, the Brazilian ad agency asked female artists to rally around the issue and design posters about MANTERRUPTION.

Advertising Agency:BETC, Sao Paolo, Brazil
CCO:Erh Ray
Cso:Gal Barradas
Creative Diretor:Erh Ray, Rodolfo Barreto
Head Of Art:Daniel Schiavon
Creative:Rodolfo Barreto, Daniel Schiavon, Nathalie Lourenço, Jose Bortolini
Strategy:Gal Barradas, Rodolfo Barreto, Daniel Schiavon
Project Manager:Thiago Carneiro
Production:Teteu Savioli, Julia Ramos
Tech Developer Partner:Brave
Technology Support Partners:OneDayTesting, WeWrite
Production Companies:Honey Bunny Films, Sentimental Filmes, Comando S Audio
Communication & PR Director:Camila Nakagawa
Pr Agency:Giusti Comunicação

How to Draw Spring Flowers With Colored Pencils

Post pobrano z: How to Draw Spring Flowers With Colored Pencils

Final product image
What You’ll Be Creating

In this tutorial, I’ll show you the process of creating a nature-inspired artwork that depicts a peony and cherry blossoms, popular symbols of spring and flourishing.

To draw this beautiful floral composition, we will use colored pencils. They are a powerful artistic tool, and the great news is that pencils are very simple to use. 

What You Will Need

  • Two sheets of paper
  • A graphite pencil (I recommend an HB type)
  • A sharpener 

And pencils of different colors:

  • Chocolate brown
  • Medium grey
  • Raspberry red
  • Rosy
  • Lilac
  • Rich blue
  • Emerald green
  • Light green
  • Yellow
  • Creamy (or light beige)
  • White

My colored pencils are aquarelle, but this feature doesn’t really matter. We’ll work without washing the strokes. 

Colored pencils a graphite pencil and a sharpener

1. How to Make a Pencil Sketch of the Flowers

Step 1

I outline the composition in a general way. With a pencil, I sketch an oval shape for the peony and smaller round shapes for the cherry flowers.

Sketching a rought oval shape and small circles

Step 2

I outline the core of the peony and fill it with small circles to mark the texture.

Adding the core of the peony

Step 3

I draw the first central petals of the peony. I also outline them with a blue pencil; I will be applying a new color to each new group of petals so you can easily differentiate them.

The option of adding any colors to your sketch is entirely up to you.

Drawing the first petals of the peony

Step 4

I draw a couple of new petals in front of the existing ones and outline them with a red pencil.

Adding the front petals

Step 5

I draw an overlapping petal and a group of several rear petals. I mark them with the green color. 

Adding a new group of petals

Step 6

I add several foreground petals and outline them with yellow.

Drawing the foreground petals

Step 7

I imagine that the petals arrange themselves around the core of the flower, and add another layer. Then I mark the new group with a lilac pencil.

Adding a new layer of petals

Step 8

One more layer of petals, and this time I outline them with red.

Drawing more petals

Step 9

The peony is almost complete. I add several more petals that hide underneath and outline them with a blue pencil.

Completing the peony sketch

Step 10

It’s time to mark the central parts of the cherry blossoms. I draw small circles with a pencil.

It is not necessary to put these circles exactly into the geometrical centers of the flowers. The blossoms are facing in slightly different directions; moreover, they are organic objects that can’t look equal.

Marking the central parts of the cherry flowers

Step 11

Each cherry flower has five petals, and I add them with pencil lines. It is also a great trick to diversify our floral composition with a small cherry bud.

Adding the petals

Step 12

I add new details, such as a twig line, a couple of leaves, and new flowers.

Refining the details adding more leaves

Step 13

I draw a peony leaf in the foreground. I also add stamens of the cherry blossoms; they look like small circles.

Our pencil sketch is complete. You can leave it as it is now or mark shady areas, as I did for the central part of the peony, separating the petals with shadows.

Drawing the stamens of the cherry blossoms

2. How to Apply Pencil Strokes

Step 1

Colored pencils can help you achieve amazing results. There are several principles to remember, and one of them is the importance of creating layers of color. An overlap of tints and shades creates a much more interesting, impressive result than just one color.

The first way you can apply your tool is by making lines with soft rubbing strokes, holding your pencil at an angle. The lines can be directional…

An example of shading with a colored pencils direcional lines

… or rounded. This kind of stroke is perfect for smooth textures and a base color layer.

An example of shading soft circular texture

Step 2

Another excellent method is hatching. It is very similar to drawing with an ordinary pencil or pen; the point of your colored pencil should be sharp.

Hatching works best for adding details and drawing refined objects or textures.

Hatching with a colored pencil

3. How to Draw Flowers With Colored Pencils

Step 1

I make a clean copy of my pencil sketch, transferring only general contours with very light lines.

For this step, I recommend using a grey pencil from your colored pencils set, and not a graphite pencil. Lines made with a graphite pencil can mix with the color and make it seem dirty.

The lines that you see in the image below are barely visible in real life. I intensified them while editing the scan so you could see them distinctly. 

Transferring the contours to a clean copy

Step 2

I use a pencil of the creamy color to cover the peony shape with soft rubbing strokes.

Applying the creamy color to the peony as a base

Step 3

With the lilac pencil, I add color to the central parts of the cherry flowers. I draw the hatches from the core to the petals.

Adding the lilac color to the cherry blossoms

Step 4

I apply the light green color to the leaves and the twig.

Marking the green objects in the drawing

Step 5

I create an additional layer of the yellow color on the peony, accenting the upper parts of the petals.

Adding the yellow color to the peony

Step 6

I add the rosy color, aiming at the dark places of the flower. It helps me in separating the petals one from another.

The point is about applying a body of color, not just a single line. 

Applying the rose color to the core of the peony

Step 7

I continue increasing the contrast with the rosy color.

The bending parts of the petals are spotlit, so I avoid making them too bright. 

Continuing with the rosy color

Step 8

I complete the process of applying strokes with the rosy pencil.

To create a unified look for the artwork, I also add several hatches to the cherry flowers. 

Completing with the rosy strokes

Step 9

It is time to increase the contrast even more. I add the raspberry red color to the peony, accentuating the shadows between the petals.

Increasing contrast

Step 10

I apply hatches with the emerald green pencil to add details.

Accenting greenery with the darker shade

Step 11

I use the grey pencil to mark the contours of the cherry flowers. It’s important not to overdo the drawing; the cherry blossoms should stay light.

Outlining the contours of the cherry blossoms

Step 12

It is time for blending with the white pencil. I apply it on top of the grey strokes and shade them. The result is a smoother color transition.

This method is also known as burnishing, and I highly recommend using it in your drawings.  

The result of burnishing technique

Step 13

I make my artwork feel more natural by adding thin hatches made with the brown pencil to the shadows. I also create a drop shadow under the peony. 

Adding brown strokes and creating a drop shadow

Step 14

I apply an additional layer of the creamy color to the peony. It looks more warm-colored now.

Adding a new layer of the creamy color

Step 15

I add some yellow strokes to the core of the peony and to the drop shadow.

Adding more yellow

Step 16

To make my artwork more interesting, I vary the range of colors with an inclusion of blue strokes.

I add thin hatches to the petals of the flowers and to the drop shadow. 

Drawing with the bright blue pencil

Step 17

With the medium grey, I intensify the drop shadow.

It is also great to add thin hatches to the petals to balance this bright artwork.

Accenting the drop shadow

Step 18

I evaluate my drawing. It looks nice enough, but I feel that adding several strokes of the blue color to the upper parts of the peony’s petals is a great final touch.

Applying more blue hatches

Your Artwork Is Complete

Congratulations, we’ve created a beautiful spring artwork! I hope you became inspired by the flowers and enjoyed the process of drawing with colored pencils.

I wish you much success with this wonderful technique and your creative projects!

The result of the work

Woman Interrupted: Woman Interrupted App

Post pobrano z: Woman Interrupted: Woman Interrupted App

Online, Mobile
Woman Interrupted

Advertising Agency:BETC, São Paulo, Brazil
CCO:Erh Ray
Cso:Gal Barradas
Creative Diretor:Erh Ray, Rodolfo Barreto
Head Of Art:Daniel Schiavon
Creative:Rodolfo Barreto, Daniel Schiavon, Nathalie Lourenço, Jose Bortolini
Strategy:Gal Barradas, Rodolfo Barreto, Daniel Schiavon
Project Manager:Thiago Carneiro
Production:Teteu Savioli, Julia Ramos
Tech Developer Partner:Brave
Technology Support Partners:OneDayTesting, WeWrite
Production Companies:Honey Bunny Films, Sentimental Filmes, Comando S Audio
Communication & PR Director:Camila Nakagawa
Pr Agency:Giusti Comunicação

Netflix: Santa Clarita Diet

Post pobrano z: Netflix: Santa Clarita Diet

Outdoor
Netflix

Advertising Agency:Doner, Los Angeles, USA
Evp:Zihla Salinas, Jason Gaboriau
Managing Director:Zihla Salinas
Chief Creative Officer:Jason Gaboriau
Vp:Sara Schwartz
Brand Leader:Sara Schwartz
Design Director:Drew Brooks
Senior Art Director:Lauren Culbertson
Copy Writer:Ryan Sims
Designer:Sophie Gosseto
Writer:Ariana Delfini
Jr Art Director:Sierra Moore
Producer:Leslie Harro
Content Producer:Tayo Ola
Editor:Anthony Foster, Mike Merkwan, James Connelly
Production Company:Logan
Director:Grady Hall
Executive Creative Director:Alexei Tylevich
Vfx Supervisor:Stephan Kosinski
Cg Supervisor:Brandon Thomas
Creative Director:Kaan Atilla
Executive Producer:Matt Winkel
Line Producer:Steve Gould
Post Producer:Dan Lombardo
Associate Producer:Ryan Hitch
Production Coordinator:Joe Mackedanz, Jesse Silva
Flame:Carl Edwards
Compositor:Robert Hubbard, Jon Sadonsky
Roto:Kyle Hause
Design:Eunha Choi, Eun Kim, Josh Childers, Amy Wang, Alex Hanson
2D Animation:Scott Ulrich, Ivan Cruz
Previz:Brian Weaver
Previz Editor:Ruben Proenca

The Document Outline Dilemma

Post pobrano z: The Document Outline Dilemma

For the past few weeks there has been lots of talk about HTML headings in web standards circles. Perhaps you’ve seen some of the blog posts, tweets, and GitHub issue threads. Headings have been part of HTML since the very first websites at CERN, so it might be surprising to find them controversial 25 years later. I’m going to quickly summarize why they are still worth discussing, with plenty of links to other sources, before adding my own opinions to the mix. If you’re up-to-date on the debate, you can jump straight to the „Bigger Dilemma” section.

The Story So Far…

HTML uses headings (<h1>, <h2>, <h3>, and so on until <h6>) to mark up titles for a subsequent section of text. The numbers (or levels) of the heading elements are supposed to logically correspond to a tree-like structure of nested sections, like books that have chapters with sections and sub-sections.

However, HTML markup did not originally have a way to reflect this nested logical structure in a nested DOM structure. Unlike nested lists, nested headings weren’t actually nested in elements that defined the parent sections. Heading elements of different levels were all sibling elements, and also siblings to the paragraphs they provide a title for. The „sections” were a purely logical structure, not a DOM structure, containing all markup that starts with a heading and continued until you reached another heading of the same or higher level.

As Brian Kardell points out, this made perfect sense in the „flat earth markup” of early HTML, where tags were just typographic instructions inserted into a flow of text. The concept of an HTML page as a tree structure came later, when so-called Dynamic HTML needed a document object model (DOM) to describe that flow of text and tags as a data structure that scripts could access.

Not to spoil the ending, but HTML now has a <section> element which can (optionally) be used to create a nested DOM structure to match your logical heading structure. The <main>, <header>, <footer>, <article>, <aside>, and <nav> elements all also help create a nested document structure that is reflected in DOM nesting.

But there was another problem with the originally heading model: it couldn’t easily be remixed in template systems. Because the heading level is expressed by the tag name (<h1> versus <h4>), rather than by the context in which it’s used, you can’t easily re-use the same content in a different context where the level would be different. For example, a blog might use the same set of article headlines and intro paragraphs in many contexts: as stand-alone blog post pages; as abstracts on a main index page; or as abstracts on an archive page which also has headings dividing the list by month or year. What heading level should the article title be?

Early proposals for sectioning elements also included a level-free <h> or <heading> element, that would be assigned a level based on context. (In fact, the idea goes back to the earliest discussions of HTML.) But when sectioning elements were finally added to HTML, they were designed to work with the existing heading elements. However, the specifications defined a „Document Outline Algorithm” which would re-calculate the heading levels for the existing numbered heading tags, based on section nesting.

With the Document Outline Algorithm, you could (theoretically) use an <h1> for all headings, and the browser would figure out the level of each heading based on its nesting within <article>, <section>, and related elements. The outline algorithm would ensure that the top heading in the page would be a level 1, and that all other headings would be nested in a consistent order, with no levels skipped. The WHATWG version of the outline also defines rules for dealing with multi-part headings in <hgroup> elements, so the sub-headings do not create sub-sections. (The W3C version of HTML 5 instead declared <hgroup> obsolete: multi-part headings should be marked up as paragraphs inside a section <header> or spans inside the main heading element.)

Browsers modified their default styles so that headings inside of nested sections would have progressively smaller font sizes (just like how the default style for <h3> has smaller font than <h2>, which is smaller than <h1>). But they didn’t change the way they exposed heading levels to the accessibility APIs that are used by screen readers. And screen-reader users are the only ones who really experience heading levels as part of the user interface.

Screen readers announce the numbered level when reading headings, and they allow users to quickly scan through headings of a given level. According to a WebAIM survey, two-thirds of screen-reader users scan headings as the first step of trying to find information on a long web page. For these users, the only effect of the Document Outline Algorithm was that some new pages (eagerly adopting the new spec) were presented as flat lists of level-one headings, with no structure at all.

Why won’t browsers use the outline algorithm for accessible heading levels? Many arguments have been made, but the most compelling one is that it could alter the way existing web sites are presented to screen-reader users, and it’s not clear that those alterations would mostly be positive.

Adrian Roselli has compiled a good overview of the discussions about the problems caused by the unimplemented outline specification, in „There is No Document Outline”. The latest W3C HTML specs only use the document outline algorithm to suggest how authors should synchronize their numbered heading tags with their nested sectioning elements. The WHATWG HTML specs still have the full outline algorithm described as a normative requirement, although there is an open issue where many suggest removing it altogether. As WHATWG spec editor Domenic Denicola puts it:

At some point we cannot claim that user agents are broken. They are instead rejecting our change request.

The Current Debate

The latest flurry of debate was sparked when Jonathan Neal filed an issue on the W3C HTML spec re-proposing the elusive <h> element. The key to the proposal is that an <h> heading element could have a nesting level defined by sectioning elements, while still allowing the existing numbered heading tags to have the level determined by their tag name. Authors would opt in to the outline algorithm by using the new tag. Until browsers supported <h>, a JavaScript (or server-side) polyfill could calculate the heading levels and add them into the DOM with ARIA attributes: role="heading" and aria-level="3" tell the browser to treat an element as a level-3 heading for accessibility purposes, regardless of tag name or nesting, so the page author ends up fully responsible for any heading confusion.

There’s a lot of good discussion on that issue page, and in longer linked blog posts. The main argument in favour of adding a new element is that it wouldn’t change the meaning of existing content. In addition to Neal’s arguments on GitHub, Brian Kardell’s proposal of a custom element and polyfill approaches the issue from this point of view. On the other side, Jake Archibald argues for fixing the elements we already have:

The work needed to fix the existing web is a subset of creating a new element that does the same thing, but doesn’t fix the existing web.

In other words, if the outline algorithm is so great that it’s worth a new element, why not just implement the outline algorithm for existing elements instead?

If you’re still having a hard time understanding why no one can agree about what to do with something as seemingly simple as HTML heading, Brian Kardell has helpfully stripped away all the technical details in a second post.

The Bigger Dilemma

There is a hidden assumption below all the discussion of how to create a document outline for a web page. Discussing how to create the document outline assumes that the structure of a web page can be defined as an outline: as a tree where the nesting level of a heading defines its importance.

I personally don’t think a simple nested outline can capture all the levels of meaning that are conveyed by HTML heading levels, as they are used on the web. I’ll get to why in a bit. But there’s a reason that all the discussion has focused on this type of outline: because this is the type of outline screen readers expect.

For most web users, and web authors, the document outline is irrelevant. They do not know and do not care how the headings and sections are nested, they only see what’s on the screen. And what’s on the screen, in most web pages today, is a two-dimensional layout of content, some of it nested, but some of it independent, with each part given implied importance and relationships by layout, colors, and typography.

So, the question we should be debating isn’t „How should we assign outline levels to headings?” It’s: „How can we summarize the meaningful structure of a web page, so that people using assistive technology can easily find content?”

I’d personally love it if browsers added a feature, for all users, to show the outline as a table of contents, and make it possible to quickly navigate to headings with the keyboard. Maybe if they did, more web authors would pay attention to what their outline looked like. But the browsers don’t, and so most authors don’t.

If you do want to see what your website’s heading outline looks like—and how it would theoretically look like using the document outline algorithm—you can use the W3C Nu HTML validator service, with the Show Outlines option checked.

As it currently stands, the document outline is only of daily importance to screen-reader users, and those users are currently used to dealing with the mess of erratic heading levels in web pages. I’m sure many screen-reader users would appreciate heading levels being fixed. But fixing headings for screen-reader users doesn’t just mean creating a tree of neatly nested headings with no skipped level numbers. It means creating a heading structure that accurately reflects the meaning intended by the creators of the web page, the meaning that visual users infer from style and layout. And in order to do that, we need to consider how meaning is communicated to all the users of web pages who aren’t hearing each heading announced with a numerical level.

A Language is Defined by Those Who Speak It

HTML is unique among computer code languages, because it defines so many constructs without assigning them specific behavior. Meaning in computer code is known as the semantic side of the language, as opposed to the syntactic structures of its grammar. But in most programming languages, the semantic aspects of built-in objects are still strongly tied to instructions for the computer. In JavaScript, new Date() and new Promise() have the same syntax—calling a constructor function—but your JS interpreter understands the semantic distinction between the two object names, and behaves very differently for each.

In contrast, an HTML <article> or a <section> doesn’t come with any instructions for what your web browser should do with it (other than the un-implemented outline algorithm). Instead, the difference between the two is all about the meaning of the content, a way to provide machine-readable annotations for the information communicated from one human being, the website author, to another: the reader.

Meaning in human communication is difficult to define, and never static. But most importantly of all, it is defined by the people who use the language. Dictionaries compile summaries of the meanings that are used, but they don’t restrict them. If people start using words in new and different ways, the dictionary (if it’s any good) will update their definitions.

When I was in grade school, a librarian showed off the multi-volume Oxford English Dictionary by introducing us to a selection of wild and crazy words. Google* was the name for the number that would be written as a 1 followed by 100 zeros (10100, in scientific notation). Crazy, right? Who would ever need to know a word like that? But times change. In 2006, the OED added a new definition, google as a verb (meaning to use the Google search engine), which might be used a google times more often than the number quantity in modern English conversation.

*Correction: As Mark notes in the comments, the correct spelling of the word I was shown all those years ago is actually googol. And now I don’t know what to believe anymore.

When it comes to the meaning of HTML tags, the equivalent of dictionaries are the two competing HTML specifications (WHATWG and W3C). And just like dictionaries, they both started out as efforts to describe the language as it was currently used.

The fact that there are two different HTML specifications make discussing changes more difficult, but it also strongly highlights the collective, consensus-based nature of HTML as a language. There is no one defining document setting the rules for HTML. HTML is defined by the people who write it and by the web browsers that interpret it.

But it’s not that simple, of course. HTML isn’t only used by human beings, it is also used by computers. And computers aren’t very good about handling fuzzy and shifting meaning.

Whenever you ask a computer to do something with your content—like, for example, tell the screen reader what headings there are in this website and how they are organized—it needs clear and explicit rules for how to do so. If some web authors are using heading tags in one way, and some authors are using the same tags with different meaning, your browser is going to need additional rules to figure out which is which—or else it’s going to get it wrong, at least some of the time.

The driving force of the web standards movement was a hope that all web browsers would react to web page code in (approximately) the same way. And that means defining new features in standards documents before they can be used on the web. Instead of being descriptive, like a dictionary (defining how things are), they are prescriptive, like a legal code (defining how things should be).

The slow pace of developing standards, with lots of input from browser teams, is supposed to ensure that the end result is both prescriptive and descriptive, at least for the parts of the language that describe browser behavior. But it doesn’t always work. There are lots of details in both specs that don’t match actual browser behavior. The W3C’s issue repo even has a comfortingly-named Match Reality Better label aimed at fixing these bits.

And that’s just for the features that describe what browsers should do. What about all the HTML elements that define the semantics of content? Shouldn’t those „match reality better,” too?

A few months ago Sara Soueidan suggested to the W3C HTML working group that maybe the <address> element should be valid for all addresses (and not just page-owner contact addresses). Many people before her have certainly made the same complaint. But this time, something happened. Following a little rough data scraping, which suggested that actual usage in the wild wasn’t restricted to the original definition, the definition in the W3C specs was updated.

Does it make any difference? Maybe not. Browsers don’t do anything with <address> except make it italic. And the WHATWG HTML specs still have the old definition. But it means the spec comes a little closer to describing the way code is actually used on the web, not how someone once imagined it might be.

Which brings us back, at last, to headings: How are they actually used on the web? And is it even possible to define a prescriptive set of instructions, for web authors and for web browsers, that ensure that the meaning of headings can be correctly communicated to screen readers (and potentially, other software)?

The Many Meanings of Headings

What is a heading? It’s a short title for a section of a document. The heading for this section is „The Many Meanings of Headings.” So far, so good.

But all headings are not created equal.

There are big headings:

A Big Heading

and there are much smaller headings:

A heading so small it’s barely a heading

If you inspect the code, you’ll see that one of those is an <h1> and the other is an <h6>. Both of them are wrapped in <figure> tags, which—according to the document outline algorithm—should encapsulate them and keep them from messing up the main document outline. But we all know by now that the document outline algorithm isn’t actually used by web browsers, so apologies to any screen reader users who ended up halfway down the article by mistake.

For anyone reading this article with their eyes in a modern browser, the difference between the two headings is communicated by the font size, and possibly the font style. The exact details will depend on whether you’re looking at the website’s CSS or your browser’s reading mode CSS, and on how recently Chris has changed CSS-Tricks’ styles. But unless Chris has really messed things up, it will be pretty clear to visual readers that the <h1> is bigger and more important than the <h6>. We could change the CSS so they looked identical, but at this point it is hard to understand why you would want to do that. If you wanted them to look the same, why not use the same tag name?

So let’s go a step further, and put those two headings together with some filler text in between. Here’s one way we could do that, with a main heading, some text, then a sub-heading and some more text:

See the Pen Heading outlines example #1 by Amelia Bellamy-Royds (@AmeliaBR) on CodePen.

Here’s another way to arrange the same headings and paragraphs:

See the Pen Heading outlines example #2 by Amelia Bellamy-Royds (@AmeliaBR) on CodePen.

And here’s a third:

See the Pen Heading outlines example #3 by Amelia Bellamy-Royds (@AmeliaBR) on CodePen.

If you’re only looking at the result tab of those pens, and using your eyes to do so, you might be forgiven for thinking the second and the third are identical, and very different from the first. Visually, both example #2 and example #3 have a main section with a big heading and a sidebar section with a minor heading. The difference is that one uses <div> elements to create the structure and the other uses HTML sectioning elements.

If you’ve read this far, you probably won’t be too surprised to discover that these two examples create different structures when processed by the HTML document outline algorithm. Under that algorithm, divs are ignored, so Example #2 would be treated the exact same as example #1: a main heading, some paragraph text, then a sub-heading and another paragraph. The outline does not indicate at all that the sidebar is a separate, parallel structure to the main article:

  1. A big heading

    1. A heading so small it’s barely a heading

In contrast, if I run the outline algorithm on Example #3, It tells me that there is an unlabelled main document (no top-level heading), with two equal sibling child elements (both headings treated as level-2). So now it clearly conveys the parallel structure, but not the difference in heading importance:

  1. [body element with no heading]

    1. A big heading
    2. A heading so small it’s barely a heading

I don’t think either of these outlines accurately describes that visual layout. Neither does the outline based on tag names, which not only treats the sidebar as nested in the main article, but also gets distracted by my use of <h6> in a page without any <h2/3/4/5> elements.

If I was asked to describe this layout to someone, I would tell them two things:

  • there are two, side-by-side sections;
  • one of those sections is more important than the other.

The relative importance of the components is a separate piece of information from the nesting structure—or lack thereof, in this simple example. In a more complex example, you’ll have some chunks of content with meaningful nested headings (like this article), and other chunks (like the sidebars, or the comment section below) that have parallel, independent outlines whose inner heading levels are un-related to the ones in the first chunk. Treating each parallel chunk as equal ignores the relative importance they were given in the markup. But tacking those extra headings onto the end of the main article, just because there isn’t a bigger heading in between, seems somehow worse.

Even when components are nested, they often have an importance level that is independent of the number of sections that surround them. I write books on SVG for O’Reilly. The markup we use to create the books is converted to HTML. The book (level-1 heading) has chapters (level-2 headings) with sections (level-3 headings) that sometimes have sub-sections or even sub-sub-sections (level-4 and 5). But it also has examples, and warning notes, and sidebars, all of which can have their own headings which will be styled identically irrespective of whether that component is in a regular section or a sub-sub-section. If we used the “correct” HTML heading elements, they would have different tag names, depending on the section depth, but would be styled identically.

In web design and in content management, we have two very different ways of talking about the level of a heading: the level of importance, or the level of nesting. I think that the main reason web standards folks can’t agree on an algorithm for turning headings into an outline is because people want an algorithm in which both agree, and they often don’t.

Maybe what’s really needed is to stop talking about outlines as if they re-number heading importance levels. Stop telling web developers they are wrong for using the heading levels that make sense for their content. Let context define the outline nesting, but don’t define outline nesting as if it was interchangeable with tag names. Ideally, find a way for browsers to communicate to screen readers both the nested structure of sections and the raw heading-level numbers, so the screen readers can let their users navigate by nesting structure, while still communicating the relative importance of each heading.

Then focus on the real question:

How can we summarize the meaningful structure of a web page, so that people using assistive technology can easily find content?

My instinct is that the outline that uses sectioning elements is usually better for navigation than sections based only on tag names, but that the details need to be improved. In particular:

  • There need to be better rules for collapsing un-named sections, maybe treating them as ARIA groups instead of as additional nesting levels in the outline.
  • There may need to be better rules for handling multi-part headings grouped by an <hgroup> or <header> element.
  • And there probably need to be better rules about which elements (if any) encapsulate their child headings from the main outline altogether.

Show Me the Data

But that’s just my opinion.

In order to get browsers or screen-readers to change their behavior—let alone to convince all the hundreds of thousands of web developers who are using headings in their content—we are going to need more than hunches and opinions. As I argued early on, we need some data. Both Jake and Brian have echoed that call.

But the kind of data we need isn’t the kind that can be collected by a web crawler. We need data about meaning, the kind of meaning that only real human brains can provide.

The HTML sectioning elements have been around for years now. They aren’t theoretical anymore. They are part of the language that you, web developers, use to communicate. If you’re using sectioning elements, hopefully you have a reason why. When you select a heading tag, hopefully you have a reason why. It’s time to review the HTML standards to make sure they reflect the reasons and meaning used by most developers.

So, I’m asking you: run your favorite websites (that you built or that you use) through the two outline builders in the HTML validator.

  • Do either of the outlines make sense?
  • Can you make them make sense, with reasonable tweaks to the markup that you can implement with your build systems or component frameworks?
  • Which outline is better?
  • What aspects of the document structure cause the most problems?

And while we’re at it, one more question:

How would you, as a web user, like to be able to access and navigate documents based on headings or outlines?


The Document Outline Dilemma is a post from CSS-Tricks