Table of Contents
Tips we used in the past
Set a real underline style
Home Web Front-end CSS Tutorial Styling Links with Real Underlines

Styling Links with Real Underlines

Apr 17, 2025 am 10:57 AM

Styling Links with Real Underlines

Before discussing how to style the underscore, let’s first think about a question: Should we use underscores?

In graphic design, underscores are often considered to be inadequate enough. There are better ways to emphasize focus, build hierarchies and distinguish titles.

Butterick's "Practical Typesetting" has clear suggestions:

If you want to use underscores, use bold or italics instead. In special cases, such as the title, you can also consider using all capitals, small capitals, or changing the font size. Still don't believe it? I suggest you find a book, a newspaper or a magazine to see if there is any underlined text. This style is mainly associated with supermarket tabloids.

But the network environment is different. Hyperlinks are the defining characteristics of the Internet; they have been underlined since the birth of the Internet. This is a generally understood convention, and its meaning is very clear - underlined to indicate links .

However, many popular websites have already un-underscore: for example, The New York Times, The New York Magazine, The Washington Post, Bloomberg, Amazon, Apple, GitHub, Twitter, Wikipedia. Google's chief designer Jon Wiley explained in 2014 that removing the underscore from the search results page can create a cleaner look. It is worth noting that most of these sites retain a slightly different bright blue (#0000EE) that has been the default setting for browsers since the birth of the web. While this provides visual tips for most users, it may not be enough to pass the WCAG accessibility compliance test.

Color cannot be used as the only visual means to convey information, indicate actions, prompt responses, or distinguish visual elements. — WCAG 2.1

WCAG does not strictly require underscore for links, but it does recommend doing so. Color blind users need to be able to recognize links. You can differentiate them in other ways, such as using bold font weights. Or you can keep this long-established visual assist feature. But if we were to use underscores, we wanted them to look pretty . Medium designer Marcin Wichar describes the perfect underscore as:

[…] Visible but not overly conspicuous – make people realize what content is clickable but not overly attracting attention. It should be at the right distance from the text, comfortably below the text, and even the descending body occupies the same space.

Traditionally, achieving this requires some CSS tricks .

Tips we used in the past

This is a trick that all developers are familiar with: border-bottom . By using border-bottom to simulate underscores, we can control color and thickness. There is one problem with these pseudo-underscores: the distance from the text is too large. They are located below the letter descending body. You can solve this problem by using line-height , but this will bring about its own problems. Similar technologies utilize box-shadow . Marcin Wichary pioneered the most complex technology, using background-image to simulate underscores. These are all useful tips, but no longer needed.

Set a real underline style

Ultimately, thanks to two new CSS properties, we can distinguish links without sacrificing styles.

  • text-underline-offset controls the position of the underline.
  • text-decoration-thickness controls the thickness of underscores, overscores and strikethroughs.

According to WebKit Blog:

You can also specify from-font for both properties, which will extract the relevant metric values ​​from the font file itself used.

UX agency Clearleft boldly uses (pseudo) underscores to clearly attract people's attention to links with colorful styles. Here is an example of a pseudo-underscore:

 <code>a { text-decoration: none; border-bottom: #EA215A 0.125em solid; }</code>

Note that this pseudo-underscore is clearly located below the descending body of the letter "y":

Here is the same paragraph, using DevTools to apply the same style to the true underscore using the new CSS property:

 <code>a { text-decoration-color: #EA215A; text-decoration-thickness: .125em; text-underline-offset: 1.5px; }</code>

You will notice that I used the em unit in the sample code. The specification strongly recommends using it instead of pixels so that the thickness scales with the font.

These properties have been published in Safari and will appear in Firefox 70.

As Microsoft Edge browser migrates to Chromium, we will eventually get cross-browser support for text-decoration-style property, which provides the following options: solid (default), double, dotted, dotted, and wavy lines. Using these new properties in combination opens up a range of possibilities.

However, perhaps the biggest improvement on the underscore on the web is that it can be achieved without the developers doing anything. In the past, the descending feeling was ruthlessly cut off by underscores, which is far from grace. Developers used to solve this disadvantage by applying text shadows that match the background color. text-decoration-skip-ink provides a better way to leave room for the descent body.

Conveniently, it is set to the new default value for underscores; this means that the appearance of underscores has been improved, and most web developers are still unaware of the existence of this property. If you want the underscore to span the glyph, you can set this property to none .

The above is the detailed content of Styling Links with Real Underlines. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Beginner's Guide to RimWorld: Odyssey
1 months ago By Jack chen
PHP Variable Scope Explained
4 weeks ago By 百草
Tips for Writing PHP Comments
3 weeks ago By 百草
Commenting Out Code in PHP
3 weeks ago By 百草

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1509
276
What are common CSS browser inconsistencies? What are common CSS browser inconsistencies? Jul 26, 2025 am 07:04 AM

Different browsers have differences in CSS parsing, resulting in inconsistent display effects, mainly including the default style difference, box model calculation method, Flexbox and Grid layout support level, and inconsistent behavior of certain CSS attributes. 1. The default style processing is inconsistent. The solution is to use CSSReset or Normalize.css to unify the initial style; 2. The box model calculation method of the old version of IE is different. It is recommended to use box-sizing:border-box in a unified manner; 3. Flexbox and Grid perform differently in edge cases or in old versions. More tests and use Autoprefixer; 4. Some CSS attribute behaviors are inconsistent. CanIuse must be consulted and downgraded.

How to create responsive images using CSS? How to create responsive images using CSS? Jul 15, 2025 am 01:10 AM

To create responsive images using CSS, it can be mainly achieved through the following methods: 1. Use max-width:100% and height:auto to allow the image to adapt to the container width while maintaining the proportion; 2. Use HTML's srcset and sizes attributes to intelligently load the image sources adapted to different screens; 3. Use object-fit and object-position to control image cropping and focus display. Together, these methods ensure that the images are presented clearly and beautifully on different devices.

Describe the `opacity` property Describe the `opacity` property Jul 15, 2025 am 01:23 AM

opacity is an attribute in CSS that controls the overall transparency of an element, with values ranging from 0 (fully transparent) to 1 (fully opaque). 1. It is often used for the image hover fade effect, and enhances the interactive experience by setting the opacity transition; 2. Making a background mask layer to improve text readability; 3. Visual feedback of control buttons or icons in the disabled state. Note that it affects all child elements, unlike rgba, which only affects the specified color part. Smooth animation can be achieved with transition, but frequent use may affect performance. It is recommended to use it in combination with will-change or transform. Rational application of opacity can enhance page hierarchy and interactivity, but it should avoid interfering with users.

What is the accent-color property? What is the accent-color property? Jul 26, 2025 am 09:25 AM

accent-color is an attribute used in CSS to customize the highlight colors of form elements such as checkboxes, radio buttons and sliders; 1. It directly changes the default color of the selected state of the form control, such as changing the blue check mark of the checkbox to red; 2. Supported elements include input boxes of type="checkbox", type="radio" and type="range"; 3. Using accent-color can avoid complex custom styles and extra DOM structures, and maintain native accessibility; 4. It is generally supported by modern browsers, and old browsers need to be downgraded; 5. Set accent-col

Describe the `:has()` pseudo-class (Parent selector) Describe the `:has()` pseudo-class (Parent selector) Jul 15, 2025 am 12:32 AM

The:has()pseudo-classinCSSallowstargetingaparentelementbasedonitschildelements.Itworksbyusingthesyntaxparent:has(child-selector)toapplystylesconditionally.Forexample,div:has(img)appliesstylestoadivcontaininganimage.Multipleselectorscanbeusedwithcomma

How does browser default stylesheet affect rendering? How does browser default stylesheet affect rendering? Jul 19, 2025 am 02:08 AM

Browser default styles ensure basic readability by automatically applying margins, fills, fonts, and form element styles, but can cause inconsistent cross-browser layouts. 1. The default margin and fill change the layout flow, such as the spacing of titles, paragraphs and lists; 2. The default font settings affect readability, such as 16px font size and TimesNewRoman font; 3. The form elements are very different in different browsers, so the appearance needs to be reset; 4. Some tags such as strong and em have default emphasis styles and need to be explicitly overwritten. Workarounds include using Normalize.css, reset styles, or globally clear margins and fills, while customizing fonts and form styles for consistency.

How to style the first letter or first line of a paragraph? How to style the first letter or first line of a paragraph? Jul 19, 2025 am 02:58 AM

To beautify the beginning of a paragraph to enhance visual appeal, a common practice is to use pseudo-elements of CSS or manually style the document. In web development, p::first-letter can be used to set the first letter style, such as enlarging, bolding, and discoloring, but it should be noted that it is only suitable for block-level elements; if you want to highlight the entire first line, use p::first-line to add styles; in document software such as Word, you can manually adjust the first letter format or create style templates, and InDesign has a built-in "first-sinking" function suitable for publishing and design; when applying, you need to pay attention to details, such as avoiding complex styles affecting reading and ensuring compatibility and format consistency.

How to style selection highlighting (`::selection`)? How to style selection highlighting (`::selection`)? Jul 16, 2025 am 12:50 AM

Use the ::selection pseudo-element of CSS to customize the highlighting style when the web page text is selected to improve the aesthetics and unity of the page. 1. Basic settings: define background-color and color through ::selection, such as yellow background with dark gray fonts; specific elements such as p::selection can also be limited. 2. Compatibility processing: Add the -webkit- prefix to be compatible with Safari and mobile browsers, and the Firefox and Edge standards are well supported. 3. Pay attention to readability: Avoid excessive color contrast or too fancy, and should be coordinated with the overall design. For example, choose a soft blue base in dark mode to improve visual comfort. Reasonable use can enhance the texture of the interface, ignore details

See all articles