Archive

Archive for the ‘’ Category

Santa’s High-Tech Holiday Logistics: A UX Fairy Tale

December 25th, 2024 No comments

Santa Claus is a master UX designer, seamlessly combining advanced technology, rigorous testing, and a touch of magic to deliver billions of gifts in one night. From analyzing questionable TikTok trends to perfecting chimney entry systems, his operation is a festive blend of humor, innovation, and holiday cheer.

Categories: Designing, Others Tags:

Email Accessibility: How To Embrace This Design Trend For 2025 And Beyond

December 25th, 2024 No comments

Email accessibility is one of those few email design trends that are old but relevant even today! Email marketing experts hope to see senders paying close attention to building accessible emails. 

Not quite surprising, as the European Accessibility Act (EAA), effective June 28, 2025, mandates all digital products, including emails, be accessible to everyone, especially individuals with disabilities. 

Apart from being legally compliant, accessible emails help businesses avoid discrimination lawsuits, broaden their audience, and boost engagement and satisfaction.

Yes, of course; email accessibility is not necessarily increasing significant value to your organization’s profitability. But it does provide a way for you to humanize your brand. 

The implication is that it is cheaper in the long run to retain this audience than to acquire them in the future, according to Chad White, the head of Research, Oracle Digital Experience Agency.

Yet, there’s a glaring gap:  Only 8% of brands actively follow accessibility best practices, despite 77% saying it’s a priority. 

The good news is that creating accessible emails isn’t a question of requiring advanced code or the design overhaul. By having clean, user-friendly email designs, you shall be creating emails that are accessible across devices friendly and to those with assistive technologies.

In this blog, we will walk you through the best practices you have to follow to create more accessible emails in 2025 and beyond. 

Top 5 Effective Strategies To Design Accessible Emails In 2025

Email accessibility is the practice of designing and structuring email content so that it is easily accessed, read, and interacted with by everyone, including people with disabilities or those using assistive technologies. 

The veteran email marketing agency Email Uplers asserts email accessibility to be one of the 13 design trends shaping the email marketing sphere in 2025

That’s why Matt Helbig from Really Good Emails said this—which we love so much we are sharing it here- “Treat the inbox as a sacred, personal, and safe place. You should be responsible for what you send to your audience in this place.” 

If the thought of not being able to email someone doesn’t get you to embrace email accessibility, we don’t know what does.

If you’re planning to design an accessible email campaign by the year 2025, here are some tips you’ll need to follow. 

  1. Create Copy That’s Clear and Concise

Not just accessibility, but even from the usability point of view, it is never advisable to overload the email copy with as much information as possible. They render your sent emails inaccessible  to recipients with cognitive issues, reading difficulties, visual impairments, and similar issues. 

Instead:

  • Follow the standards set by WCAG guidelines. 
  • Opt for a subject line that is clear, inclusive, and easy to understand for all recipients, including those using screen readers. Also, don’t overdo emojis; one or two max, preferably at the end. Choose them to signal purpose but not replace words. 
  • Ask your copywriter to choose short, easier-to-read sentences over long, complicated ones. Avoid complicated sentence structures. Simplicity is always desirable. 
  • Minimize on the use of complex terms and jargon.  
  • Assume that the audience is an 8th grader so avoid using very complex language.
  • Translate email copy into local languages if you send campaigns to global audiences.
  • Keep the layout easy to navigate. Break up the longer text into smaller sections. Left-aligned text is easier to read.
  • There is also a word on font size; the experts suggest a font size of no less than 16 to make the email readable on a smartphone screens. Set the line spacing to 150%. 
  • Some good options for accessible fonts are Sans Serif, Comic Sans, OpenDyslexic, Arial, Calibri, Open Sans Verdana, Tahoma, Century Gothic, etc. 
  • Check the readability level with the help of online tools for checking readability of the copy. Yoast, Grammarly, and Hemingway Editor are things most copywriters cannot afford to work without. 
  1. Prioritize High Contrast Between Text and Background 

Appropriate color contrast is non-negotiable for email accessibility. Anything outside of that makes your emails hard to read for those with vision impairment or colour blindness. 

How to get it right?

  • Follow WCAG guidelines. It recommends a contrast ratio of at least 4.5:1 for standard text and 3:1 for larger text. These ratios generally work well to ensure readability for most users.

Image Source: Email On Acid

  • Choose colors thoughtfully. Black text on a white background offers a perfect 21:1 ratio. But you can still use colors like red, yellow, or green, provided they offer contrast as per accessibility standards.
  • Test your accessible email designs. Tools like WebAIM’s Contrast Checker help you ensure your emails meet the required contrast levels.
  • Don’t rely on color alone. You can make important elements stand out with other visual cues like bold font weights, larger sizes, or underlines. 
  1. Add Alt Text to All Images 

Make alt text a design norm for making images accessible in emails. Users with visual impairments can not see the images and will need alternative text that communicates with them about them. 

Image Source: Mailjet

Rather, you should use alt text for all recipients, not just those visually impaired. Whether they have slow internet, have images turned off, or have security settings. For instance, if the image is blocked due to slow internet access, the recipient will never be aware of its content.

Alt text helps them access the content and provides context to the visuals.

Best Practices for Using Alt Text for Email Accessibility:

  • Alt text should describe images’ content and function. That, too, in a way that gives the reader a clear picture of what it is in a descriptive yet concise manner. 
  • Do not write alt text that exceeds 100 characters. Screen readers typically don’t read after that. 
  • Informative images are to offer additional information to subscribers beyond the copy. The alt text about such images should explain what is written on and inside the image if not explained in another section. 
  • Active images are meant to prompt certain actions from subscribers. For such images, use alt text that describes the action the image performs. For example, “Click here to read more” or “Add to cart.”
  • Decorative images (e.g., a background image) have the sole purpose of designing the email. They are not for providing any further information to subscribers. Do not enter anything in the alt text area as, for example, alt =”” otherwise it will read out the source of the image and be very annoying to the users. 
  • Do not begin the alt text with “image of” or “picture of.” The screen reader already knows that what is being read to him is an image. Rather, one should pay attention to what an image is supposed to perform.
  1. Leverage ARIA Attributes for Enhanced Accessibility

ARIA stands for Accessible Rich Internet Applications. 

These attributes are the descriptive information that only the assistive technologies such as the screen readers can understand.  Since they are hidden, your email design stays the same even if you implement them in the actual email code. 

You can make good use of ARIA to make your emails more accessible to a broader audience in different ways. 

Use attribute role=”presentation” for tables used in email layouts. This way, you cue the screen readers to treat these tables as structural elements rather than data tables. This makes a huge difference in how screen readers interpret the table and improves the reading experience, especially for visually challenged users. 

Next, you can apply aria-hidden=”true” to conceal decorative elements like spacers, shadows, or any content that does not add value. This keeps screen readers from focusing on unnecessary items. 

We also recommend you to apply roles like role=”header”, role=”footer”, or role=”article” to define different blocks in your email. This ensures accessibility when some email clients do not fully support HTML5 tags like

or

However, be mindful that ARIA isn’t universally supported across all email clients. Some may interpret these attributes differently. Hence, you should test your emails to ensure the attributes work as intended. 

  1. Use Semantic HTML for Accessible Email Design

Semantic HTML provides meaning to your accessible email codes by accurately describing the element you are coding. This gives meaningful structure to your email content, helping assistive technologies navigate and consume content easily. 

How to apply semantic HTML effectively:

  • Headings for Structure

Use

to

tags to define headings and subheadings where

is the largest and main title and

is the smallest sub-title. 

  • Paragraphs for Text

Use

tags for blocks of text, such as descriptions. These tags ensure that the content is read correctly and maintains proper spacing. For shorter pieces of inline text, consider using .

  • Quotes for Testimonials

If inserting customer quotes, do it with the help of a

tag and indicate that the content is a quote. Use it with the tag to give attribution for the source. 

  • Links for CTAs

Categories: Others Tags:

Generate Hilariously Bad Christmas Movies

December 25th, 2024 No comments

Xmas.Piclooks.com is a quirky website that generates hilariously bad Christmas movie posters and plots along with equally absurd fake reviews. Perfect for spreading holiday laughs, it’s a festive parody of all the over-the-top holiday movie clichés we love to mock.

Categories: Designing, Others Tags:

Santa Tracker 2024: Keeping the Magic Alive in the Digital Age

December 24th, 2024 No comments

Santa Tracker 2024 brings holiday magic to life with cutting-edge features like augmented reality, personalized messages from Santa, and real-time weather updates, making it more interactive and engaging than ever. This beloved tradition continues to unite families worldwide, blending technology and festive cheer to keep the Christmas spirit alive.

Categories: Designing, Others Tags:

A CSS Wishlist for 2025

December 23rd, 2024 No comments
Flex Wrap leaving empty space or filling it completely

I wish for a more native way of balancing wrapping elements:

Flex wrap balancing elements

It’s definitely annoying.

10. An easier way to read/research CSSWG discussions

I am a big fan of the CSSWG and everything they do, so I spent a lot of time reading their working drafts, GitHub issues, or notes about their meetings. However, as much as I love jumping from link to link in their GitHub, it can be hard to find all the related issues to a specific discussion.

I think this raises the barrier of entry to giving your opinion on some topics. If you want to participate in an issue, you should have the big picture of all the discussion (what has been said, why some things don’t work, others to consider, etc) but it’s usually scattered across several issues or meetings. While issues can be lengthy, that isn’t the problem (I love reading them), but rather not knowing part of a discussion existed somewhere in the first place.

So, while it isn’t directly a CSS wish, I wish there was an easier way to get the full picture of the discussion before jumping in.

What’s on your wishlist?

We asked! You answered! Here are a few choice selections from the crowd:

  • Rotate direct background-images, like background-rotate: 180deg
  • CSS random(), with params for range, spread, and type
  • A CSS anchor position mode that allows targeting the mouse cursor, pointer, or touch point positions
  • A string selector to query a certain word in a block of text and apply styling every time that word occurs
  • A native .visually-hidden class.
  • position: sticky with a :stuck pseudo

Wishing you a great 2025…

CSS-Tricks trajectory hasn’t been the most smooth these last years, so our biggest wish for 2025 is to keep writing and sparking discussions about the web. Happy 2025!


2024 has been one of the greatest years for CSS: cross-document view transitions, scroll-driven animations, anchor positioning, animate to height: auto, and many others. It seems out of touch to ask, but what else do we want from CSS? Well, many things!

We put our heads together and came up with a few ideas… including several of yours.

Geoff’s wishlist

I’m of the mind that we already have a BUNCH of wonderful CSS goodies these days. We have so many wonderful — and new! — things that I’m still wrapping my head around many of them.

But! There’s always room for one more good thing, right? Or maybe room for four new things. If I could ask for any new CSS features, these are the ones I’d go for.

1. A conditional if() statement

It’s coming! Or it’s already here if you consider that the CSS Working Group (CSSWG) resolved to add an if() conditional to the CSS Values Module Level 5 specification. That’s a big step forward, even if it takes a year or two (or more?!) to get a formal definition and make its way into browsers.

My understanding about if() is that it’s a key component for achieving Container Style Queries, which is what I ultimately want from this. Being able to apply styles conditionally based on the styles of another element is the white whale of CSS, so to speak. We can already style an element based on what other elements it :has() so this would expand that magic to include conditional styles as well.

2. CSS mixins

This is more of a “nice-to-have” feature because I feel its squarely in CSS Preprocessor Territory and believe it’s nice to have some tooling for light abstractions, such as writing functions or mixins in CSS. But I certainly wouldn’t say “no” to having mixins baked right into CSS if someone was offering it to me. That might be the straw that breaks the CSS preprocessor back and allows me to write plain CSS 100% of the time because right now I tend to reach for Sass when I need a mixin or function.

I wrote up a bunch of notes about the mixins proposal and its initial draft in the specifications to give you an idea of why I’d want this feature.

3. // inline comments

Yes, please! It’s a minor developer convenience that brings CSS up to par with writing comments in other languages. I’m pretty sure that writing JavaScript comments in my CSS should be in my list of dumbest CSS mistakes (even if I didn’t put it in there).

4. font-size: fit

I just hate doing math, alright?! Sometimes I just want a word or short heading sized to the container it’s in. We can use things like clamp() for fluid typesetting, but again, that’s math I can’t be bothered with. You might think there’s a possible solution with Container Queries and using container query units for the font-size but that doesn’t work any better than viewport units.

Ryan’s wishlist

I’m just a simple, small-town CSS developer, and I’m quite satisfied with all the new features coming to browsers over the past few years, what more could I ask for?

5. Anchor positioning in more browsers!

I don’t need anymore convincing on CSS anchor positioning, I’m sold! After spending much of the month of November learning how it works, I went into December knowing I won’t really get to use it for a while.

As we close out 2024, only Chromium-based browsers have support, and fallbacks and progressive enhancements are not easy, unfortunately. There is a polyfill available (which is awesome), however, that does mean adding another chunk of JavaScript, contrasting what anchor positioning solves.

I’m patient though, I waited a long time for :has to come to browsers, which has been “newly available” in Baseline for a year now (can you believe it?).

6. Promoting elements to the #top-layer without popover?

I like anchor positioning, I like popovers, and they go really well together!

The neat thing with popovers is how they appear in the #top-layer, so you get to avoid stacking issues related to z-index. This is probably all most would need with it, but having some other way to move an element there would be interesting. Also, now that I know that the #top-layer exists, I want to do more with it — I want to know what’s up there. What’s really going on?

Well, I probably should have started at the spec. As it turns out, the CSS Position Layout Module Level 4 draft talks about the #top-layer, what it’s useful for, and ways to approach styling elements contained within it. Interestingly, the #top-layer is controlled by the user agent and seems to be a byproduct of the Fullscreen API.

Dialogs and popovers are the way to go for now but, optimistically speaking, these features existing might mean it’s possible to promote elements to the #top-layer in future ways. This very well may be a coyote/roadrunner-type situation, as I’m not quite sure what I’d do with it once I get it.

7. Adding a layer attribute to tags

Personally speaking, Cascade Layers have changed how I write CSS. One thing I think would be ace is if we could include a layer attribute on a tag. Imagine being able to include a CSS reset in your project like:

<link rel="stylesheet" href="https://cdn.com/some/reset.css" layer="reset">

Or, depending on the page visited, dynamically add parts of CSS, blended into your cascade layers:

<!-- 
Global styles with layers defined, such as:
 @layer reset, typography, components, utilities;
-->
<link rel="stylesheet" href="/styles/main.css"> 

<!-- Add only to pages using card components  -->
<link rel="stylesheet" href="/components/card.css" layer="components">

This feature was proposed over on the CSSWG’s repo, and like most things in life: it’s complicated.

Browsers are especially finicky with attributes they don’t know, plus definite concerns around handling fallbacks. The topic was also brought over to the W3C Technical Architecture Group (TAG) for discussion as well, so there’s still hope!

Juandi’s Wishlist

I must admit this, I wasn’t around when the web was wild and people had hit counters. In fact, I think I am pretty young compared to your average web connoisseur. While I do know how to make a layout using float (the first web course I picked up was pretty outdated), I didn’t have to suffer long before using things like Flexbox or CSS Grid and never grinded my teeth against IE and browser support.

So, the following wishes may seem like petty requests compared to the really necessary features the web needed in the past — or even some in the present. Regardless, here are my three petty requests I would wish to see in 2025:

8. Get the children count and index as an integer

This is one of those things that you swear it should already be possible with just CSS. The situation is the following: I find myself wanting to know the index of an element between its siblings or the total number of children. I can’t use the counter() function since sometimes I need an integer instead of a string. The current approach is either hardcoding an index on the HTML:

<ul>
  <li style="--index: 0">Milk</li>
  <li style="--index: 1">Eggs</li>
  <li style="--index: 2">Cheese</li>
</ul>

Or alternatively, write each index in CSS:

li:nth-child(1) { --index: 0; }
li:nth-child(2) { --index: 1; }
li:nth-child(3) { --index: 2; }

Either way, I always leave with the feeling that it should be easier to reference this number; the browser already has this info, it’s just a matter of exposing it to authors. It would make prettier and cleaner code for staggering animations, or simply changing the styles based on the total count.

Luckily, there is a already proposal in Working Draft for sibling-count() and sibling-index() functions. While the syntax may change, I do hope to hear more about them in 2025.

ul > li {
  background-color: hsl(sibling-count() 50% 50%);
}

ul > li {
  transition-delay: calc(sibling-index() * 500ms);
}

9. A way to balance flex-wrap

I’m stealing this one from Adam Argyle, but I do wish for a better way to balance flex-wrap layouts. When elements wrap one by one as their container shrinks, they either are left alone with empty space (which I don’t dislike) or grow to fill it (which hurts my soul):

I wish for a more native way of balancing wrapping elements:

Flex wrap balancing elements

It’s definitely annoying.

10. An easier way to read/research CSSWG discussions

I am a big fan of the CSSWG and everything they do, so I spent a lot of time reading their working drafts, GitHub issues, or notes about their meetings. However, as much as I love jumping from link to link in their GitHub, it can be hard to find all the related issues to a specific discussion.

I think this raises the barrier of entry to giving your opinion on some topics. If you want to participate in an issue, you should have the big picture of all the discussion (what has been said, why some things don’t work, others to consider, etc) but it’s usually scattered across several issues or meetings. While issues can be lengthy, that isn’t the problem (I love reading them), but rather not knowing part of a discussion existed somewhere in the first place.

So, while it isn’t directly a CSS wish, I wish there was an easier way to get the full picture of the discussion before jumping in.

What’s on your wishlist?

We asked! You answered! Here are a few choice selections from the crowd:

  • Rotate direct background-images, like background-rotate: 180deg
  • CSS random(), with params for range, spread, and type
  • A CSS anchor position mode that allows targeting the mouse cursor, pointer, or touch point positions
  • A string selector to query a certain word in a block of text and apply styling every time that word occurs
  • A native .visually-hidden class.
  • position: sticky with a :stuck pseudo

Wishing you a great 2025…

CSS-Tricks trajectory hasn’t been the most smooth these last years, so our biggest wish for 2025 is to keep writing and sparking discussions about the web. Happy 2025!


A CSS Wishlist for 2025 originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags:

How Airlines Leverage UX (and Dark Patterns) to Monetize Seat Selection

December 23rd, 2024 No comments

Airlines use advanced UX strategies and dark patterns, such as urgency cues, visual hierarchy, and hidden free options, to nudge travelers toward paying for seat selection, turning it into a $12.4 billion revenue stream.

Categories: Designing, Others Tags:

Why Term Insurance Policies Are the Best Choice for People in Debt

December 23rd, 2024 No comments

When facing financial challenges, especially debt, securing your family’s future and ensuring that financial obligations are met can feel like an overwhelming task. One of the smartest financial decisions that can offer peace of mind is opting for a term insurance policy. Unlike other life insurance policy, term insurance is often seen as the best option for people in debt, offering significant benefits at an affordable cost. In this blog, we will explore why term insurance policies are the best choice for those burdened with debt and how they can provide crucial financial protection for loved ones.

Understanding Term Insurance Policies

Before diving into why term insurance is particularly beneficial for people in debt, let’s first understand what it is. A term insurance policy is a type of life insurance that provides coverage for a specific period or “term,” typically ranging from 10 to 30 years. If the insured person passes away during the term, their beneficiaries receive the sum assured (death benefit). Term insurance is the most straightforward type of life insurance, with affordable premiums, and it provides high coverage at low cost, making it an ideal choice for many.

There are several types of life insurance policies available, including endowment plans, unit-linked insurance plans (ULIPs), and whole life insurance. However, when it comes to debt management and financial security, term insurance stands out because of its affordability, simplicity, and straightforward benefits.

How Term Insurance Helps People in Debt

  1. Financial Protection for Family and Dependents

When you are in debt, your primary concern is often the financial well-being of your loved ones. A term insurance policy ensures that your family doesn’t bear the financial burden of your outstanding debts in the event of your untimely death. Whether it’s a mortgage, personal loans, or any other liabilities, term insurance provides a safety net by paying off these debts, preventing your family from inheriting them.

The life insurance plans with term coverage are designed to replace lost income, cover existing debts, and give your loved ones a stable financial future, without the worry of creditors coming after them.

  1. Affordable Premiums for Maximum Coverage

One of the primary reasons people in debt should consider term insurance is its affordability. Since term insurance only provides death benefits and doesn’t include investment components like other types of life insurance (such as whole life or ULIPs), the premiums are generally much lower. This makes it a highly cost-effective way to secure your family’s future while balancing existing debt.

If you’re struggling with paying high premiums for other types of life insurance plans, switching to a term insurance policy can free up resources to pay down your debt while still ensuring that your family has adequate protection.

  1. Simple and Easy to Understand

When it comes to managing debt, simplicity is key. Term insurance policies are easy to understand compared to other life insurance options that often have complicated clauses and investment elements. With term insurance, you pay a fixed premium over the policy term, and if you pass away during this time, your beneficiaries receive the sum assured. There are no surprises, no hidden fees, and no complex terms to navigate. For someone already struggling with debt, the simplicity of a term insurance policy is a big relief.

  1. Customizable Coverage for Your Debt Needs

People in debt often have different financial obligations, which can vary widely. Whether it’s a home loan, car loan, or personal loan, term insurance can be tailored to cover the exact amount of your debt. You can choose a life insurance plan with a sum assured that matches your debt obligations, ensuring that your loved ones will have enough financial support to clear the loans after your death.

Some term insurance policies also allow policyholders to increase coverage during the policy term, providing additional protection in case your debts grow over time. This level of customization makes term insurance a flexible option for debt management.

  1. Guaranteed Financial Security

In a world full of uncertainties, term insurance provides guaranteed financial security for your family. Unlike other types of life insurance, where the returns or benefits may fluctuate based on market conditions or other factors, term insurance offers a fixed sum assured in case of death. This ensures that your family will receive the promised amount, regardless of economic changes or investment performance. For someone in debt, having a guaranteed payout can make all the difference in protecting their family’s financial future.

  1. Tax Benefits for Policyholders

In addition to the basic benefits of a term insurance policy, policyholders can also enjoy tax deductions. Under Section 80C of the Income Tax Act, the premiums paid for life insurance plans are eligible for tax deductions up to ?1.5 lakh annually. This tax-saving benefit can be especially helpful for individuals trying to balance their debt and manage their finances. Additionally, the death benefit received by the beneficiary is tax-free under Section 10(10D), providing further financial relief.

Why Choose Term Insurance Over Other Life Insurance Plans?

When it comes to people in debt, term insurance plans are the most suitable option due to their affordability, simplicity, and tailored coverage. Other types of life insurance, such as whole life or endowment policies, often come with higher premiums and involve long-term commitments, which may not be ideal for someone facing financial stress. Additionally, these policies typically combine life coverage with an investment component, which may not align with the immediate need for debt protection.

Term insurance, on the other hand, focuses purely on providing a death benefit, which is ideal for people looking for a cost-effective way to secure their financial future while paying off existing liabilities.

Conclusion

For people in debt, a term insurance policy offers the right balance of affordability, coverage, and peace of mind. It ensures that your family doesn’t bear the burden of your outstanding debts and offers financial stability during difficult times. By choosing the right life insurance plans and calculating the appropriate sum assured, you can safeguard your loved ones’ future without overburdening your finances today. Always consider your specific debt obligations, financial goals, and risk appetite before making a decision, and use a life insurance calculator to determine the most suitable coverage for your needs.

By opting for a term insurance policy, you take a proactive step in securing your family’s financial security while keeping your debt situation in check.

Featured image by Jakub ?erdzicki on Unsplash

The post Why Term Insurance Policies Are the Best Choice for People in Debt appeared first on noupe.

Categories: Others Tags:

The Design Leader Dilemma

December 23rd, 2024 No comments

Many design leaders find themselves in an impossible situation. On one side, senior management have read articles trumpeting the incredible ROI of user experience design. McKinsey tells us that design-led companies achieve 56% higher returns to shareholders. Forrester reports that every dollar invested in UX brings 100 dollars in return.

Yet the reality I encounter when talking to design leaders is very different. Most are desperately under-resourced, with tiny teams expected to support hundreds of projects across their organizations. The result? We’re spread so thin that we can barely scratch the surface of what needs doing.

The problem isn’t just about resources. It’s about expectations and how we define our role. Too often, we position ourselves (or are positioned by others) as implementors — the people who do the user research, create the prototypes, and run the usability tests. But with the scale of digital touching every corner of our organizations, that’s simply not sustainable.

Time For A New Approach

We need to stop trying to do everything ourselves and instead focus on empowering others across the organization to improve the user experience. In other words, we need to become true leaders rather than just practitioners.

This isn’t about giving up control or lowering standards. It’s about maximizing our impact by working through others. Think about it: would you rather be directly involved in 10% of projects or have some influence over 90% of them?

What Does This Look Like In Practice?

First, we need to shift our mindset from doing to enabling. This means:

  • Offering targeted services rather than trying to be involved in everything;
  • Providing coaching and mentoring to help others understand UX principles;
  • Creating resources that empower others to make better UX decisions;
  • Setting standards and guidelines that can scale across the organization.

Let’s break down each of these areas.

Targeted Services

Instead of trying to be involved in every project, focus on providing specific, high-value services that can make the biggest impact. This might include:

  • Running discovery phases for major initiatives
    By strategically initiating discovery phases for critical projects, you ensure that they start with a strong, user-focused foundation. This can involve tools like the Strategic User-Driven Project Assessment (SUPA), which helps validate ideas by assessing audience value, user needs, feasibility, and risks before committing to major investments. SUPA ensures projects are not just built right but are the right ones to build.
  • Project-Specific UX Guidance
    Regular feedback on design assets throughout a project keeps UX principles front and center. This can be achieved by offering UX audits, periodic check-ins to assess progress, or design reviews at key milestones.
  • Facilitating workshops and problem-solving sessions
    Leading targeted workshops or brainstorming sessions empowers teams to overcome design challenges on their own with your guidance. These tailored sessions help teams understand how to make better user-centered decisions and solve issues themselves, spreading UX capabilities beyond your team.

The key is to be strategic about where you spend your time, focusing on activities that will have the greatest ripple effect across the organization.

Coaching And Mentoring

One of the most effective ways to scale your impact is through coaching. This could include:

  • UX Office Hours
    Designate times where anyone in the organization can drop in to get quick UX advice. This informal setting can solve small issues before they snowball and helps stakeholders learn as they go.
  • One-on-One or Group Coaching
    Scheduled check-ins with individuals or teams are great opportunities to address challenges directly, mentor those who need extra support, and ensure alignment with best practices. Regular 1:1 or group coaching keeps UX priorities on track and provides valuable guidance when and where it’s needed most.
  • Tailored Problem-Solving Sessions
    Providing bespoke guidance for specific challenges that teams encounter empowers them to tackle design obstacles while internalizing the principles of good UX. These problem-solving sessions can be invaluable in ensuring teams can autonomously address future problems.

The goal isn’t to turn everyone into UX experts but to help them understand enough to make better decisions in their daily work.

It’s also important to recognize that others might not initially deliver work at the same level of quality that you would. This is okay. The primary goal is to get people engaged and excited about UX. If we criticize them every time they fall short of perfection, we risk undermining their enthusiasm. Instead, we need to foster a supportive environment where improvement happens over time.

Creating Resources

Develop tools and resources that help others apply UX principles independently. For example:

  • Design Systems
    Create and maintain a comprehensive design system that integrates UX best practices into the UI across the organization. A well-crafted design system ensures that everyone, from developers to designers, aligns on consistent best practices, making it easier for teams to work independently while still maintaining high standards. This includes reusable code components, clear documentation, and alignment between design and development.
  • UX Tool Suite
    Providing teams with pre-selected tools for user research, prototyping, and user testing helps maintain quality and saves time. With tools for everything from user research to usability testing, you provide the resources teams need to conduct UX activities on their own without extensive onboarding.
  • Research Repository
    Maintain a centralized repository of user research findings that can be accessed by anyone across the organization. A well-organized research repository can reduce duplication of effort, provide insights across different initiatives, and allow teams to learn from each other’s findings. This promotes consistent application of user insights across projects.
  • Supplier Lists
    Providing a vetted list of suppliers and external agencies helps ensure consistency when work is outsourced. It provides quick access to high-quality resources, mitigates risk, and builds trust with suppliers who understand your standards.
  • Self-Service Training Resources
    Create a library of on-demand training materials that teams can access when needed. This should include video tutorials, interactive exercises, case studies, and step-by-step guides for common UX tasks like conducting user interviews, creating personas, or running usability tests. Unlike scheduled workshops, self-paced learning allows people to access knowledge exactly when they need it, leading to better retention and practical application.

These resources should be practical and accessible, making it easy for teams to do the right thing.

Setting Standards

Create a framework that guides UX decisions across the organization:

  • Design Principles
    Establish core design principles that align with your organization’s values and user-centered goals. These principles help ensure consistency and clarity in decision-making. For example, define around six to ten principles that stakeholders across the organization have voted on and agreed upon, ensuring broader buy-in and consistent decision-making.
  • Policies for UX
    Develop clear policies that standardize processes like work requests, user research and testing, and stakeholder involvement. These policies help set expectations, keep efforts aligned with organizational goals, and make it easier for non-UX professionals to understand and comply with best practices.
  • Project Prioritization Policies
    Having clear guidelines on how projects are prioritized ensures that UX gets the attention it needs in the planning stages, preventing it from being overlooked or marginalized. Establish policies that align project value to user needs and organizational priorities.

The key is to make these standards helpful rather than bureaucratic — they should enable better work, not create unnecessary obstacles.

Bringing It All Together

All of these elements should come together in what I call a UX Playbook — a single source of truth that contains everything teams need to deliver better user experiences. This isn’t just another document to gather dust; it’s a living resource that demonstrates your value as a leader and helps others get started on their UX journey.

The shift from practitioner to leader isn’t easy. It requires letting go of some control and trusting others to carry forward UX principles. But it’s the only way to create lasting change at scale.

If you’re struggling with this transition, I am running a workshop on design leadership in February. I would love to discuss your situation there.

Categories: Others Tags:

Matt Mullenweg, WordPress, and the Battle for Control of the Internet

December 21st, 2024 No comments

Matt Mullenweg’s clash with WP Engine highlights the tension between open-source ideals and centralized control within WordPress, which powers 40% of the internet. The controversy raises critical questions about who holds the reins in shaping the web’s future.

Categories: Designing, Others Tags:

The Little Triangle in the Tooltip

December 20th, 2024 No comments

Tooltips are like homemade food: everyone uses them and everyone has their own recipe to make them. If you don’t remember a particular recipe, you will search for one, follow it, and go on with your day. This “many ways to do the same thing” concept is general to web development and programming (and life!), but it’s something that especially rings true with tooltips. There isn’t a specialized way to make them — and at this point, it isn’t needed — so people come up with different ways to fill those gaps.

Today, I want to focus on just one step of the recipe, which due to lack of a better name, I’ll just call the little triangle in the tooltip. It’s one of those things that receives minimal attention (admittedly, I didn’t know much before writing this) but it amazes you how many ways there are to make them. Let’s start with the simplest and make our way up to the not-so-simple.

Ideally, the tooltip is just one element. We want to avoid polluting our markup just for that little triangle:

<span class="tooltip">I am a tooltip</span>

Clever border

Before running, we have to learn to walk. And before connecting that little triangle we have to learn to make a triangle. Maybe the most widespread recipe for a triangle is the border trick, one that can be found in Stack Overflow issues from 2010 or even here by Chris in 2016.

In a nutshell, borders meet each other at 45° angles, so if an element has a border but no width and height, the borders will make four perfect triangles. What’s left is to set three border colors to transparent and only one triangle will show! You can find an animated version on this CodePen by Chris Coyier

CodePen Embed Fallback

Usually, our little triangle will be a pseudo-element of the tooltip, so we need to set its dimensions to 0px (which is something ::before and ::after already do) and only set one of the borders to a solid color. We can control the size of the triangle base by making the other borders wider, and the height by making the visible border larger.

.tooltip {
  &::before {
    content: "";

    border-width: var(--triangle-base);
    border-style: solid;
    border-color: transparent;

    border-top: var(--triangle-height) solid red;
  }
}

Attaching the triangle to its tooltip is an art in itself, so I am going with the basics and setting the little triangle’s position to absolute and the .tooltip to relative, then playing with its inset properties to place it where we want. The only thing to notice is that we will have to translate the little triangle to account for its width, -50% if we are setting its position with the left property, and 50% if we are using right.

.tooltip {
  position: relative;

  &::before {
    /* ... */
    position: absolute;
    top: var(--triangle-top);
    left: var(--triangle-left);

    transform: translateX(-50%);
  }
}

However, we could even use the new Anchor Positioning properties for the task. Whichever method you choose, we should now have that little triangle attached to the tooltip:

CodePen Embed Fallback

Rotated square

One drawback from that last example is that we are blocking the border property so that if we need it for something else, we are out of luck. However, there is another old-school method to make that little triangle: we rotate a square by 45° degrees and hide half of it behind the tooltip’s body. This way, only the corner shows in the shape of a triangle. We can make the square out of a pseudo-element:

.tooltip {
  &::before {
    content: "";

    display: block;
    height: var(--triangle-size);
    width: var(--triangle-size);

    background-color: red;
  }
}

Then, position it behind the tooltip’s body. In this case, such that only one-half shows. Since the square is rotated, the transformation will be on both axes.

.tooltip {
  position: relative;

  &::before {
    /* ... */
    position: absolute;
    top: 75%;
    left: 50%;
    z-index: -1; /* So it's behind the tooltip's body */

    transform: translateX(-50%);
    transform: rotate(45deg) translateY(25%) translateX(-50%);
  }
}
CodePen Embed Fallback

I also found that this method works better with Anchor Positioning since we don’t have to change the little triangle’s styles whenever we move it around. Unlike the border method, in which the visible border changes depending on the direction.

CodePen Embed Fallback

Trimming the square with clip-path

Although I didn’t mention it before, you may have noticed some problems with that last approach. First off, it isn’t exactly a triangle, so it isn’t the most bulletproof take; if the tooltip is too short, the square could sneak out on the top, and moving the false triangle to the sides reveals its true square nature. We can solve both issues using the clip-path property.

The clip-path property allows us to select a region of an element to display while clipping the rest. It works by providing the path we want to trim through, and since we want a triangle out of a square, we can use the polygon() function. It takes points in the element and trims through them in straight lines. The points can be written as percentages from the origin (i.e., top-left corner), and in this case, we want to trim through three points 0% 0% (top-left corner), 100% 0% (top-right corner) and 50% 100% (bottom-center point).

So, the clip-path value would be the polygon() function with those three points in a comma-separated list:

.tooltip {
  &::before {
    content: "";

    width: var(--triangle-base);
    height: var(--triangle-height);

    clip-path: polygon(0% 0%, 100% 0%, 50% 100%);
    transform: translate(-50%);

    background-color: red;
  }
}

This time, we will set the top and left properties using CSS variables, which will come in handy later.

.tooltip {
  position: relative;

  &::before {
    /* ... */
    position: absolute;
    top: var(--triangle-top); /* 100% */
    left: var(--triangle-left); /* 50% */

    transform: translate(-50%);
  }
}

And now we should have a true little triangle attached to the tooltip:

CodePen Embed Fallback

However, if we take the little triangle to the far end of any side, we can still see how it slips out of the tooltip’s body. Luckily, the clip-path property gives us better control of the triangle’s shape. In this case, we can change the points the trim goes through depending on the horizontal position of the little triangle. For the top-left corner, we want its horizontal value to approach 50% when the tooltip’s position approaches 0%, while the top-right corner should approach 50% when the tooltip position approaches 100%.

Path to trim right triangles

The following min() + max() combo does exactly that:

.tooltip {
  clip-path: polygon(
    max(50% - var(--triangle-left), 0%) 0,
    min(150% - var(--triangle-left), 100%) 0%,
    50% 100%
  );
}

The calc() function isn’t necessary inside math functions like min() and max().

Try to move the tooltip around and see how its shape changes depending on where it is on the horizontal axis:

CodePen Embed Fallback

Using the border-image property

It may look like our last little triangle is the ultimate triangle. However, imagine a situation where you have already used both pseudo-elements and can’t spare one for the little triangle, or simply put, you want a more elegant way of doing it without any pseudo-elements. The task may seem impossible, but we can use two properties for the job: the already-seen clip-path and the border-image property.

Using the clip-path property, we could trim the shape of a tooltip — with the little triangle included! — directly out of the element. The problem is that the element’s background isn’t big enough to account for the little triangle. However, we can use the border-image property to make an overgrown background. The syntax is a bit complex, so I recommend reading this full dive into border-image by Temani Afif. In short, it allows us to use an image or CSS gradient as the border of an element. In this case, we are making a border as wide as the triangle height and with a solid color.

.tooltip {
  border-image: fill 0 // var(--triangle-height) conic-gradient(red 0 0);;
}

The trim this time will be a little more complex, since we will also trim the little triangle, so more points are needed. Exactly, the following seven points:

The clip-path trim the shape of a tooltip body and little triangle

This translates to the following clip-path value:

.tooltip {
  /* ... */
  clip-path: polygon(
    0% 100%,
    0% 0%,
    100% 0%,
    100% 100%,
    calc(50% + var(--triangle-base) / 2) 100%,
    50% calc(100% + var(--triangle-height)),
    calc(50% - var(--triangle-base) / 2) 100%
  );
}

We can turn it smart by also capping the little triangle bottom point whenever it gets past any side of the tooltip:

.tooltip {
  /* ... */
  clip-path: polygon(
    0% 100%,
    0% 0%,
    100% 0%,
    100% 100%,
    min(var(--triangle-left) + var(--triangle-base) / 2, 100%) 100%,
    var(--triangle-left) calc(100% + var(--triangle-height)),
    max(var(--triangle-left) - var(--triangle-base) / 2, 0%) 100%
  ;
}

And now we have our final little triangle of the tooltip, one that is part of the main body and only uses one element!

CodePen Embed Fallback

More information

Related tricks!


The Little Triangle in the Tooltip originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.

Categories: Designing, Others Tags: