Container Queries are an often requested feature of the web platform. It has become almost cliché to mention it when talking about problems we’d like the web platform to solve. Container Queries would go a long way toward helping web developers do their jobs better and its omission is a huge limitation when developing component-based code for the web.
Everyone wants it, but it sure seems like no one is actively working on it. But I’m not here to soapbox about that. Here I only mean to discover the earliest mention of Container Queries (or Element Queries or any implementations of this similar idea) to learn how long this feature has been requested by web developers. I’m curious: is this length of time customary for a new feature of the web platform? Or is something else going on?
Here are the earliest mentions of Container Queries that the community was able to dig up (in reverse chronological order):
Andy Hume’s work, thus far, seems to be the original! If you have others that pre-date 2014 (even if they aren’t before Andy’s), please reply to this tweet.
Look at all this link rot! We’re so lucky that many of these entries were preserved by The Wayback Machine. You too can donate to the Internet Archive to support their obviously valuable mission.
For comparison, Ethan Marcotte’s original A List Apart article on Responsive Web Design was published 9.6 years ago on May 25, 2010.
The first large-scale Responsive Web Design project at the Boston Globe was launched after container queries were planted8.3 years ago on September 9, 2011. The Boston Globe launch further planted the seeds for responsive image approaches that would result in web browser implementations of both and just three years later in 2014.
Creating a progression of short videos with a carefully targeted campaign on YouTube can set up your brand’s success on the platform.
Every brand has a story to tell. But with the average attention span of adults being eight seconds (according to a study by Microsoft), how do you capture that user in the right moment with the right message?
Effective content marketing has become crucial because of this staggering statistic. As digital advances, content marketing tactics now encapsulate display and video strategies in order to keep a user engaged.
What is YouTube ad sequencing?
YouTube ad sequencing campaigns made its debut in the second half of 2018. However, I am convinced that not enough brands are taking advantage of this tactic.
Video ad sequencing is being able to show users a series of videos in a specific order that you define. The best uses for this type of campaign include:
Building interest
Reinforce messaging
Create a unifying theme for your brand
What goes into a video sequencing campaign?
There are many settings to take into consideration while setting up your campaign for success. The first and most crucial piece is to select the right target audience to view in your first video in the sequence. If you’re not targeting your ideal audience, you will be wasting valuable marketing dollars on users that don’t fit into your key demographics. You’re able to use audiences and demographics within Google Ads, but not keywords, placements or topic targeting. Some of the audience options you can choose from include:
In-Market
Detailed Demographics
Life Events
Similar Audiences
Custom Intent
The next pieces you’ll need to set up include:
Bid Strategy
Logical sequencing
There are only two bid strategies allowed in YouTube ad sequencing: Target CPM and Maximum CPV. The bidding strategy you choose will be dependent on the type of ad format chosen for your campaigns.
Lastly – make sure to pick logical sequencing for your videos. Meaning, if your goal is to tell your brand’s story through a defined sequence of videos, make sure placing those videos in an order that would make sense for the user. Pro tip – I tend to start with a longer video on the first step and narrow users out based on “views” of the first video. From there, I tend to see more engagement throughout the rest of the video sequence.
Want to learn more? Please join me at my SMX East session about YouTube Ad Sequence campaigns where I’ll cover the topic more in-depth on Nov. 13.
Opinions expressed in this article are those of the guest author and not necessarily Marketing Land. Staff authors are listed here.
About The Author
Brooke Osmundson serves as the associate director of paid search at NordicClick Interactive with over six years’ experience. She helps her clients grow their digital strategies using tactics from paid search, social media and programmatic marketing. With her experience and passion in analytics, strategic planning and everything digital, she helps create relevant customer experience strategies at every stage of the user funnel. Brooke has been featured in the Journal of Digital & Social Media Marketing, spoke at SMX West and PubCon Pro, contributed to NordicClick’s 2018 US Search Award for “Best Use of Video in a Search Campaign” and most recently had her client strategy shortlisted for two 2019 US Search Awards. When not working, you can find her enjoying a round of golf, catching up on the latest episodes of Law & Order SVU or completing never-ending house renovations.
Apester, an interactive content creation platform, has launched a new product called Story Strip that allows brands and publishers to display content on their websites in a fashion similar to Instagram and Snapchat Stories.
Story Strips include a multi-slide carousel of content that can be embedded into a website, allowing brands and publishers to create social media-style experiences on their web properties.
Why we should care
For brands, the Story Strip platform provides an engaging way for site visitors to consume content in an environment they’ve become familiar with via Snapchat and Instagram Stories. Publishers can also use the platform to promote articles and monetize content by inserting ads within the Story Strip.
TV Insider, an entertainment website with early access to the tool, saw 44% growth in interactive content consumption. Time spent on the site increased by 13 to 17 seconds when it used Story Strips to promote Comic Con coverage. TV Insider also monetized its Story Strip content and reported an 87% increase in daily revenue.
More on the news
Samantha Westfall, digital managing editor for TV Insider, said the tool, “Drove readers to our existing content in a fun way.”
In addition to Story Strip, Apester offers a several content creation tools, including a Story composer, and platforms to create polls, quizzes and personality tests.
Apester was founded in 2011 and is used by a number of publishers, including TIME, Rolling Stone, and brands such as Ikea and Virgin.
About The Author
Amy Gesenhues is a senior editor for Third Door Media, covering the latest news and updates for Marketing Land, Search Engine Land and MarTech Today. From 2009 to 2012, she was an award-winning syndicated columnist for a number of daily newspapers from New York to Texas. With more than ten years of marketing management experience, she has contributed to a variety of traditional and online publications, including MarketingProfs, SoftwareCEO, and Sales and Marketing Management Magazine. Read more of Amy’s articles.
It seems that people are finally waking up to the threat of climate change. The most poignant sign of this for me was seeing an infographic I created adorning the main music stage at Reading Festival 2019.
Enter Shikari put climate change center stage at Reading Festival 2019. [Photo: University of Reading/courtesy of the author]
While the majority of those in the crowd may not have grasped its true meaning, or been in the frame of mind to understand it, it was a significant moment. A popular rock band publicly endorsed climate research and literally put it center stage.
Read more coverage of Ed Hawkins’s climate stripes here.
The climate stripes illustrate the global average temperature for every year since 1850 in the form of a colored stripe. Shades of blue represent cooler years and red, warmer years. The overall effect is a striking trend toward hotter temperatures in recent decades, as a result of human-caused climate change.
Global average temperatures 1850-2018—each stripe is one year. Blue stripes are cooler years, red stripes are warmer years. [Image: Ed Hawkins]
The climate stripes follow other visualizations of climate data that I’ve created in recent years, including an animation depicting global temperature rise data as an ever-expanding spiral. This was used in the opening ceremony of the Rio Olympics in 2016—more public recognition of science where you’d perhaps not expect it.
These graphics are simple and bright, but they’re based on solid science and carry a serious message. They translate complex data into an easily accessible format that transcends language and needs almost no context to explain it. The climate stripes have already been used on posters, on placards in the youth climate strikes and on banners and T-shirts around the world.
Helping science to make this leap from the lab to social media is crucial to changing mindsets. My research has often focused on communicating the impacts of climate change to new audiences. The more people that see and understand this huge problem, the better chance we have of solving it.
Earlier in 2019 we created a website that allows people to download climate stripes for around 200 countries and individual U.S. states. This allowed people to share stripes that charted the recent climate history of their own corner of the world. TV weather forecasters around the world joined the campaign and used the stripes to talk about climate change in their regular broadcasts.
Now we have a climate tram in Freiburg, Germany. The warming stripes show the average annual temperatures in Freiburg from 1900 to 2018. It is clearly visible that it is getting warmer. 2018 was the warmest year to date. The idea for the warming stripes came from @ed_hawkins. pic.twitter.com/snBtFs9kvz
Explaining climate science to the public can be tricky. The scientific consensus is that the world is warming, but each region of the world is warming at a very different rate. Most parts of the U.K. are about 1℃ warmer than they were a century ago, while parts of the Arctic are almost 3℃ warmer. The climate stripes can communicate this nuance almost instantly.
If we want climate action to become the demand of a mass movement then we can’t expect discussions to be restricted to po-faced conversations between scientists and politicians. As grave a matter as it is, it needs to become a conversation we have everywhere, whether it be over the fence to our neighbors, on television soaps, or while dancing at festivals. These simple graphics have helped start those conversations.
Climate change is inevitably reported in a negative way, but we can be positive about the story we tell. Infiltrating popular culture is one way scientists can help trigger a step change in attitudes that will lead to mass action. We face some difficult choices, but we still have time to make changes that will create a hopeful future.
Ed Hawkins is professor of climate science at University of Reading. This post originally appeared on The Conversation.
It’s no surprise Story Ads are performing well — Instagram reports 500 million accounts are using Stories on its platform, with one-third of the most viewed Stories coming from businesses and one in five Stories generating a direct message from viewers. Just last month, Instagram confirmed it was experimenting with increasing the ad load in Stories, not surprising considering the amount of activity Stories are generating.
For marketers who haven’t used Story Ads, now might be time to consider adding them as engagement with the content continues to grow across Instagram and Facebook. In the latest installment of Marketing Land’s series on the future of social, we asked advertisers with experience running Story Ad campaigns what’s working for them.
carousel video Story Ads doing exceptionally well as it prompts the user to explore more products.
“With these ads, we are able to showcase more and utilize the most ad real estate as you can use up to ten carousel cards,” said DeFazio, “Our sweet spot tends to be three to five cards as we suspect users don’t want to see too many options.”
Andrew Foxwell, co-founder of the social media advisory firm Foxwell Digital, said user generated content that looks native to platform performs best for the campaigns he is running: “For example, boomerangs and still images that are shot quickly and simply on phones, and generally look like something you’d see posted by a friend versus a more stylized image shared by a brand.”
Foxwell’s agency is also seeing a lot of success with Instagram Story Ads that include polls.
“In one instance, we inserted a discount code directly into a poll, with one choice being ‘Do you love it?’ and the other being ‘Get 15% off with code IG15’ and that specific Story Ad helped us scale one brand from $500 to $15,000 a day.”
According to Sánchez, brands need to continually test their creative against different attribution models to determine what’s going to work best for them.
“I recommend analyzing the performance of the creative mix by using different attribution models and comparing the creative mixes,” said Sánchez, “The conflict in results based on different attribution models makes assessing results challenging. Incrementality is ultimately what matters most, which is why I would recommend understanding the optimal creative mix.”
Instagram versus Facebook
In terms of adoption — both from users and advertisers — Instagram Story Ads have had a sizeable head start over Facebook Story Ads as they were launched more than a year before Facebook’s ad unit. Foxwell said his agency isn’t even recommending Facebook Story Ads to any clients right now since they haven’t proven to be a reliable source for direct-response conversions yet.
“Compared to time spent in the Facebook News Feed, users simply aren’t turning to Facebook Stories as much,” said Foxwell, “You also can’t add a poll on Facebook Story Ads, which has proven helpful for Instagram Story ads.”
DeFazio’s agency is testing Story Ad campaigns on both platforms for e-commerce clients with audiences that include younger and older demographics, but is finding the same results as Foxwell.
“The impression share isn’t there for Facebook, and click-through-rates (CTR) are much lower,” said DeFazio, “For one of our water bottle clients, the CTR was two-times higher on Instagram Story Ads compared to Facebook.”
Take advantage of Facebook’s ad tools
For Story Ad campaigns, Foxwell recommends advertisers take advantage of the Asset Placement Customization tool in Facebook Ads Manager that lets users customize ad assets by placement within the same ad set.
“For example, this tool allows you to target a 2% Lookalike Audience of your best customers with both an image that’s sized properly for a video link post (4:5 aspect ratio) and an Instagram Story asset (16:9). This tactic keeps the learnings at the ad set level, which can help advertisers get through the learning phase more quickly,” said Foxwell.
He also recommends building funnels entirely dependent on Instagram Stories via Facebook’s Campaign Budget Optimization feature.
“We’ll commonly build out a Campaign Budget Optimization (CBO) campaign and have multiple audiences within the same CBO running only to Instagram Stories,” said Foxwell, “We’ve seen this strategy be impactful for incremental results, particularly in the lower part of the sales funnel.”
Build toward the audience
For Foxwell’s clients, most of which are B2C-focused, he has found that Instagram Story Ads perform particularly well if the client is already actively posting organic Stories on the platform — even more so if the client’s target audience is age 45 or younger.
DeFazio doesn’t count out Story Ads when building campaigns aimed at older audiences — instead, her agency is using creative to help drive the results they want to see.
“With accounts where we target older demographics, one thing we’ve noticed that works well, as older audiences get familiarized with ephemeral content, is to educate them in the process by adding overlay text to ‘Swipe Up’ with an arrow pointing to the call-to-action button to click through to the website from a Story Ad.”
History shows that Story content is likely to draw the attention of more people, regardless of their age. In 2017, when Instagram first launched Story Ads, the company reported 150 million users were engaging with Stories. Two years later, that number is now up to 500 million. With more and more users turning to Stories, both to post and consume, Story Ad performance is bound to grow right along with the content’s adoption.
As Sánchez points out, “A big part of the News Feed audience has moved to Stories, and thus, brands need to always be ready to adapt to new consumer behavior.”
Today, the national parks are represented in our visual culture primarily through photographs posted on social media. But long before people posted selfies in Yellowstone, designers were depicting the glories of the nature reserves through maps and brochures that aimed to woo travelers and convince them to visit the American outdoors.
A new book called Parks chronicles the history of these brochures, starting with documents published by the Department of the Interior in 1916 all the way through the wacky layouts of the 1960s to the late 1970s, when the designs start to coalesce around a single look and feel, all thanks to the famed designer Massimo Vignelli. Through these historical documents, the book reveals the evolution of government design in the United States as well as larger graphic design trends—while preserving these visual treasures as an important part of the national parks’ history.
[Photo: courtesy Standards Manual]
The book includes hundreds of images taken from the collection of photographer Brian Kelley, who was first inspired to start collecting paper ephemera related to the national parks while working on a photography project where he documents old growth trees, which are the largest living specimen of a given type of tree. In hunting down these ancient trees, Kelley visited many national parks and came across a few maps that inspired him to start hunting down older maps. He bought brochures and maps off eBay, often from people who had found a box full of them when a family member passed away.
“It’s an object that people really held as an accomplishment, an artifact of all the places they went and explored before social media grabbed everyone’s brains and got us out of nature,” says Jesse Reed, a graphic designer and cofounder of the independent imprint Standards Manual, which is publishing Kelley’s collection.
Standards Manual publishes books on the history of graphic design in the United States, including standards manuals (as the imprint’s name suggests). So far, Standards Manual has published books that document the graphic design standards for America’s bicentennial celebration, NASA, and the New York City Transit Authority, as well as a volume dedicated to the corporate graphic design of the firm Chermayeff Geismar & Haviv. Without Standards Manual to revive some of these historical documents, reminiscent of an era where standards were kept in dense volumes rather than in the cloud, many would likely languish in the obscurity of someone’s basement—which is coincidentally where Reed and his business partner Hamish Smyth found the New York City Transit Authority standards manual that started them down the path of republishing them.
[Photos: courtesy Standards Manual]
For Reed and his partner Hamish Smyth, the collection of national parks brochures and maps fits right into the imprint’s goals, even if it’s not technically a standards manual. “All of [Standards Manual’s books] are in the mindset of preserving the history of graphic design and visual communication,” Reed says. “The maps are an overview of graphic design history in the United States.”
Smyth points out that you can trace the transition of graphic design in the brochures, starting with the traditional layouts of the 1920s brochures with their centered titles, serif fonts, and stunning black and white photographs of landmarks like Yosemite’s Half Dome and Yellowstone’s Old Faithful geyser. But by the time you get to the 1960s, the National Parks Service was hiring independent designers and artists to create unique, one-off images to sell people on each park—one of Death Valley from 1965, for instance, is a bright orange brochure that features only an illustration of a sun peeking down from the top of the page and wavy letterforms that spell out the park’s name on the bottom.
Vignelli came up with a framework called the Unigrid system that provided a set of visual devices to streamline all of the NPS’s maps, pamphlets, and posters. That meant that each title would now run vertically along a brochure’s right side in Helvetica, and designers would work within a modular grid system that dictated where they could place images and text.
It was a boon for the government financially and logistically. “One of the good things about the Vignelli system is that it standardized paper sizes, weights, and types, and it was a grid system where you knew roughly what it was going to look like and how much text you had to have written and how many images might fit,” Smyth says. “It streamlined things quite a lot, and in the end they saved a lot of money from printing by buying things in bulk.” Vignelli’s Unigrid was so successful for the NPS that it’s still in use today.
Storybook is the world’s most popular UI component workshop. It enables structured UI development and testing for every major view layer including React, Vue, Angular, and many more.
Storybook 5.2 introduces Component Story Format (CSF), a new way to author stories based on ES6 modules. Component Stories are simple, easy to read, and decoupled from Storybook’s internal API so you can use them anywhere.
Read on to learn more:
? Why: The big opportunity
? Format: What it is & why it’s better
? Portability: Jest embedding example
? Codemods: How we make it easy to upgrade
⚡ 3 minute install: Get started today
? What’s next?: The way forward
Imagine if developing a component in Storybook automatically unlocked the ability to test it with Jest, import it in Sketch designs, paste it into InVision prototypes, and visually test it in Chromatic. What if your component library was universally accessible inside all your favorite tools?
In the last three years, components have risen to dominate the UI landscape. Everywhere you look there are new component-oriented tools for development, testing, design, and prototyping.
These tools engage in the creation and consumption of components and component examples (a.k.a. stories). But each tool has its own proprietary format because a simple, platform-agnostic way to express component examples doesn’t yet exist.
The “Story” is the source of truth for a component example
Storybook’s popularity stems from its extensive, open source tooling for component development, testing, and documentation. These rich features make it essential to the frontend workflows of powerhouses like Airbnb, Slack, Squarespace, Lyft, Uber, and Dropbox.
However, if you peel everything away, Storybook is built on one core construct: the story.
A story is a code snippet that renders an example of a component in a specific state.
A story uses the production code shipped to users, which makes it the most accurate representation of a component example. What’s more, stories are expressed in the view layer you use to build your app.
Tom Coleman, Norbert de Langen, and I originally set out to simplify writing stories in Storybook. Along the way we realized that creating an expressive, platform-agnostic format would allow developers to use stories in other tools and even independently of Storybook itself. This could improve the experience of everyone using components!
I’m excited to introduce Component Story Format. If you’ve used earlier versions of Storybook, you’re probably familiar with the “classic” storiesOf API:
This tried and true API gets the job done. But after helping tens of thousands of developers capture, document, and test key component states, we’ve come up with a much better way:
CSF has every affordance of the storiesOf API, but brings many additional benefits:
? Simple. Writing stories is as easy as exporting ES6 functions from your story file in a clean, standard format you know and love.
? Portable. Component stories are easily consumed anywhere ES6 modules live, including your favorite testing tools like Jest and Cypress.
? Optimized. Component stories don’t need any libraries other than your components. And because they’re ES6 modules, they’re even tree-shakeable!
☝️ Declarative. The declarative syntax is isomorphic to higher-level formats like MDX, enabling clean, verifiable transformations.
? Future-proof. Component stories hide Storybook’s underlying API, giving maintainers flexibility to improve Storybook without breaking any contracts.
Component stories have no dependence on Storybook, so consuming them is as easy as importing an ES6 module. Consider how we might test interactivity with Jest and react-testing-library.
Here’s a CSF file for a stateful Counter component that increments its count on each click:
With Component Story Format, this integration is simple and natural. Achieving the same result using storiesOf would require a significant restructuring of your code.
What about your existing library of stories? Have no fear. With our entire existing user base depending on Storybook’s classic API, we’ll continue to support storiesOf for the foreseeable future.
That said, we want you to upgrade so we’ve made it incredibly easy. Since everything in the storiesOf API has a direct equivalent in the Component Story Format, you can automatically migrate your existing stories in seconds.
For example, if you suffix your stories with .stories.js, converting your stories is as simple as running the following command in the Storybook CLI:
To load Component Stories, Storybook’s configure API gets a little facelift. Here’s a sample.storybook/config.js:
import { configure } from ‘@storybook/react’;configure(require.context(‘../src/’, true, /.stories.js$/), module);
Finally, you can add a new story to verify it’s working, and then run the automated migration (see above) on your story library. The migration overwrites your files so make sure your stories are in version control.
Or if you want to try it in a fresh project, Storybook’s default setup now ships with Component Stories as default:
cd my-react-vue-angular-project npx -p @storybook/cli@next sb init
And Bob’s your uncle! ?
Component Story Format is a foundational step forward for Storybook that brings immediate benefits including simplicity, portability, and optimizability.
The format’s long-term benefits will be even greater. An open, portable, and standards-based format enables the entire ecosystem of component design and dev tools to work together on behalf of users.
As the most popular component explorer, Storybook is well-positioned to promote a universal standard. More than 20,000 GitHub repos depend on Storybook (that we know of), with usage across every major front-end view layer by the largest companies in the world. It’s installed over 4M times per month on NPM.
Storybook users are already transitioning to CSF so that they can reuse their existing stories outside of Storybook in other tools and libraries.
? Follow us on Medium or Twitter to see how the project evolves.
? If you’re creating a tool that can benefit from CSF or any kind of Storybook integration, we’d love to collaborate. Contact me: michael@hichroma.com.
If Storybook makes your UI development workflow easier, help Storybook get better. You can contribute a new feature, fix a bug, or improve the docs. Join us on Discord, support us on Open Collective, or just jump in on Github.
Let me just frame this for you: we’re going to take a piece of production UI from a Sketch file, break it down into pieces of information and then build it up into a story we tell our friends. Our friends might be hearing, or seeing, or touching the story so we are going to interpret and translate the same information for different people. We’re going to interpret the colors and the typography and even the sizes, and express them in different ways. And we really want everyone to pay attention. This story mustn’t be boring or frustrating; it’s got to be easy to follow, understand and remember. And it’s got to, got to, make sense, from beginning to end.
I’ve asked my colleague Katie to choose a component she has designed in Sketch. I’ll go through and mark it up (we mainly use SCSS, Twig and Craft but the templating language is not very important), then she will respond briefly. Hopefully I’ll get most of it right, and then one or two things wrong, so we can look at how things get lost during handoff.
In white label or framework type front-end, the focus is on building pieces that are as flexible and adaptable as possible, as content and style-agnostic as possible (within the scope of the product), because you simply will never know where the code is going and for what, ultimately it is being used. But recently I moved to a web design agency, which has a complete inversion of this focus. It is particular. It is bespoke. It’s all about really deeply engaging with the particular client you have and the particular clients they have, and designing something that suits them, as a tailor would.
Working so closely with a graphic designer like Katie, with highly finished pixel-spaced UI, instead of directly from wireframes or stories is an adjustment and an education, but there are still lots of things I can bring to the table. Chiefly: document design.
Document design, which admittedly is just the old semantic web with an accessibility hat on, is really looking at graphic design, engaging with it as a system of communication, and translating the underlying purpose of the colors/type/layout into an accessible, linearizable, and traversable DOM. It’s HTML, kids. It’s just HTML. You’d think we all knew it by now… but look around you. You’d be wrong!
Katie has slung me a Sketch file chock full of artboards, and she’s pretty great at writing out what she wants so I don’t have to think too hard:
Event card
First I look through the whole UI file and figure out what is actually a card on this site — it turns out there are six or seven components that use this paradigm. Let’s make some observations:
Zoom out on section of artboardsAnother card, classes this time.
A card is a block of meta data about a page on the site.
It has an image/media and metadata — it’s a media object.
It’s shown in a group of objects.
That group is always typed (there’s no view where there are search results and news articles and classes are all mixed up).
Each object has a single link to a page and no other actions.
Each object has a call to action (Book, etc.).
Each object may have times, categories, badges, and calls to action.
Each object must have media, title, and link.
So a card is the major way my user is going to find their way around this site. They are going to be clicking through guided pathways where they get a set of cards they can choose from, based on top pages like “what’s on” or “classes.” They’re not getting options on this card. It’s not really an interactive element — it’s a guide, an index card, that sets her onto her path: in this case a purchase path where she books a ticket for a show at this arts centre.
Before going on, let me just frame this for you:
Imagine you were looking at a flyer for a show and discussing it on the phone. If you actually wanted to go to this show in real life. What would you do? You wouldn’t just read the flyer out, would you? That’s the text. And it might have all kinds of random stuff on it if you started literally at the top. You wouldn’t start with “Twentieth Century Fox” or “Buy Hot Dog Get Cola Free” or “Comedy Drama Musical Family Friendly.” (I would actually hang up on you if you did!) And you wouldn’t simply describe the color or fonts. That’s the CSS. You’d talk through the information on the flyer. You’d say, “It’s The Greatest Showman and it’s on Tuesday, starts at 7:30. It’s at the Odeon on Oxford Street by the tram.” Right?
This is the document. Keep that person on the phone in your mind.
Count, group, and name
So let’s say we’ll deliver a card as the inside of a list item. We want a group and that group should be countable. We’ve already named the page with an
so we’ll introduce and describe the group with a heading, an . First we’ll name it, then we’ll deliver it, so someone using a screen reader can:
Get the list signaled in the headings overview.
Get a count up front of the number of items on a page.
Know they can skip to the next list item to get the next card.
Know they can skip the group at any point and go to the next page — the pagination is the very next element and it will be labelled as a landmark.
In this particular case, I’m gonna wrap this whole card in an anchor element (). There’s only one link on the card and I want to front load that information so someone can click as soon as they know it’s the right card, instead of having to search forward for the action. A big clickable area is nice too, though of course that can be taken too far and make an interface a sort of booby trap! But these cards are not too enormous and I can see they have a nice gutter around them, so there’s a rest space that will reduce accidental clicking for people with more limited dexterity.
Title
Event card “title” element
Then we’ll jump down a heading level and mark up the name of each show as a heading, an
. The designer has made this type the focus and we will too. Some people browse super fast by jumping to the next heading, then next heading, so I’m not going to put any important information before the heading — they’ll jump right over it. I will put the image there, though, as I know in this case, I can’t get meaningful image descriptions from the API so those images are hidden and have empty alt attributes. Now the user can guess (correctly in my case) that the developer is actually describing the content in some meaningful way and might flip back to headings overview (list headings level 3) and just get a list of the shows.
Now let’s deliver our metadata. Let’s list it:
Badge
Date/Time
Categories
Badge
Event card “badge” element
This seems to be something the venue adds to a card to highlight it. As a developer, I can’t immediately see why a user would look for this, but it’s emphasized strongly by the designer, so I’ll make sure it stays in. Katie has moved the badge up out of the flow, but I know that with a headings jump our user could miss it. So I’ll just put the wording directly after the title, I think. I’ll either put it first or last, so make it easier to account for in a non-visual browse and not be too crazy paving in a tabbing, visual browse.
HAC Highlight.
…But on second thought, I won’t put an after all. It’s the brand color, so it’s really a statement of ownership by this venue, and we’ve already said HAC a million times by now, so the user knows where they are.
A quick aside: the ‘badging’ is very specific to this organisation. They want to show people clearly and quickly which events they’ve programmed themselves, and which are run by other organizations who’ve hired their venue.
Date/Time
Event card “date/time” element
Now date and time. Katie is keying me in to this decision point by styling the dates in bold. Dates are important. I’m going to pop it in an
, because I’m thinking it looks like someone might be quickly scanning a page of events looking for the matinee, for example, or looking for a news article published on a particular day. I don’t always put dates into headings, especially if there are millions on a page, but I do always make sure they’re in a element with a complete value so the or Katie has specified is read out as comprehensible English words “Thursday” instead of garblage. I could also have used hidden completion or with a title.
Categories/ Tags
Event card “categories/tags” element
Next come the categories, and I’m putting them after badge and date. This section is next in the visual order reading top-to-bottom, left-to-right, of course, but it also seems to be deprioritized: it’s been pushed down on the left and the type is smaller. This works for our linear storytelling. As a rule, we don’t want people to sit through repeated or more general content (cinema, cinema, cinema) to get to unique or more specific content (Monday, Tuesday, Wednesday). Remember, we are inside our card: we know it has already been sorted in a few general ways (news, show, class, etc), so it’s likely to have a lot of repeated pieces. We want to ensure that the user will go from specific to general if we can.
There is a primary category that is sorted first and then some other categories sometimes. I won’t deliver this as a countable list as there’s mostly just one category, and loads of lists of one item is not much use. But I will put a little tag beforehand because otherwise, it’s a slightly impenetrable announcement. MOVEMENT! SPOKEN WORD! (I mean, you can work it out retrospectively, but we always try to name things first and then show them, in linear order. This isn’t Memento.) I used to use title="" fairly heavily but I’ve gotten complaints about the tooltip so I route around. Note the use of colon or full stop to give us a “breath.” That’s a nice bit of polish.
Categories:
{% for category in categories.all() %}
{{category}}{% if not loop.last %} / {% endif %}
{% endfor %}
Also I’m hard-coding in my spaces to make sure the categories never run together into complete garblage even with text compression or spaceless rendering turned on somewhere down the pipeline. (This can happen with screen readers and spans and it’s rather alarming!)
There’s a piece of this design I will do in the CSS but haven’t really pulled into the document design: the color-coding on primary category. I am not describing the color to the reader as it seems arbitrary, not evocative. If there were some subtextual element to the color coding beyond tagging categories (if horticultural classes were green, say), then I might bring it through, but in this case it’s a non-verbal key to a category, so we don’t want it in our verbal key.
I’m sorting the primary category to the front of the category paragraph, but I’m not labeling it as primary. This is because there’s a sorting filter before this list that sorts on primary category, and it’s my surmise that it would be easier and less annoying to select a category from that dropdown than to read through each card saying Categories Primary Category Music Secondary Categories Dance. I could be wrong about that! Striking a balance between useful and too much labeling is sometimes a bit tricky. You have to consider the page context. We may be building components but our user is on a page.
Last, the action. The direction to the user, to Book, or Learn More, or whatever it is, has been styled as a button. It’s not actually a button, it’s just a direction, so I’ll mark it up as a span in this case. I definitely want this to come last in the linear document. It’s a call to action and also a signal that we’ve reached the end of this card. The action is the exit point in both cases: if the user acts, we go to the target entry; if they do not, we go to the next card. We definitely never want any data to come after the action, as they might have left by then.
This markup, which counts, groups, and names data, delivers linear and non-linear interactions. The page makes sense if you read it top to bottom, makes sense if you read parts of it out of context, and helps you jump around.
Katie, over to you…
Katie Parry, designer
What an ace article! Really interesting. (I particularly like that “,” “,” etc. on cards are read as “Monday,” “Tuesday”… smart!)
One thing that struck me is that using assistive tech means users get information served to them in a “set” order that we’ve decided. So, unless there’s a filter, someone browsing for dance events, for example, has to sit/tab through a title, badge, dates, and maybe several other categories to find out whether an event’s for them or not. Bit tiresome. But that’s not something you’ve got wrong — it’s just how the internet works. Something for me to think about in the future.
Most of our clients are arts and cultural venues that need to sell tickets for events so I design a lot of event cards. They’re one of the very first things I’ll work on when designing a site. (Before even settling on a type hierarchy for the rest of the site.)
Thinking visually, here’s how I’d describe the general conventions of an event card:
It must look like a list – so people understand how to use it.
It needs to provide enough information for folks to decide if they’re interested or not. (The minimum information is likely an image, title, date, and link.)
It needs to include a clear call to action — usually a link to find out more information.
It needs to be easily scannable, visually.
Making information visually scannable is a pretty straightforward case of ensuring every information type (e.g. image, title, date, category, link) is sitting in the same place on every card and follows a clear hierarchy.
I focus a lot on typography in my work anyway but clearly: titles are styled to be highly prominent; dates are styled the same as each other but are different from titles; categories look different again – so that folks can easily pick-out the information they’re interested in from simply scanning the page. I’m composing the card for the user, saying, “Hey, look here’s the event’s name, this is when it’s on — and here’s where you go to get your tickets!”
The type styles – and particularly the spacing between them – are doing a lot of work, so I will point out here that the spacings are not quite right in the code sample:
Spacing between the title and dates, dates and button, and button and piping don’t match the design.
This is important. Users need to be able to scan information quickly as they aren’t all looking for the same thing in order to make the decision to go to an event. Too much or too little space between elements can be distracting.
Perfect!
Some people just want a general mooch at what’s coming up at their local venue. Others may have seen an advert for a specific show that tickles their fancy, and want to buy tickets. There are people who love music but don’t care for theatre who just want a list of gigs; nothing else. And some folks who feel like going out at the weekend but aren’t that fussed about what it is they go to. So, I design cards to be easy to scan — because most users aren’t at all reading from top to bottom.
Despite the conventions I just laid out, cards certainly don’t all look the same — or work in the same way — across projects.
There is always a tension in web design between making an interface familiar to the user and original to the client. Custom typefaces and color palettes do a lot here, but the other piece of it is through discovery.
I spend time reading-up about a client, including who their audience is by reading what they say on review sites and social media, as well as working directly with the client. Listening to people talk through how they work, what feedback they get from their audience/users often uncovers some interesting little nuggets which influence a design. Developers aren’t typically involved much in discovery, which is something I’d like to change, but for now, I need to make it super-clear to Sally what’s special about this event card for each new project. I write many, many (many) notes on Sketch files, but find they can tend to get lost, so sometimes we have a spreadsheet defining particular functionality.