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!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

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

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

There are three ways to create a CSS loading rotator: 1. Use the basic rotator of borders to achieve simple animation through HTML and CSS; 2. Use a custom rotator of multiple points to achieve the jump effect through different delay times; 3. Add a rotator in the button and switch classes through JavaScript to display the loading status. Each approach emphasizes the importance of design details such as color, size, accessibility and performance optimization to enhance the user experience.

To deal with CSS browser compatibility and prefix issues, you need to understand the differences in browser support and use vendor prefixes reasonably. 1. Understand common problems such as Flexbox and Grid support, position:sticky invalid, and animation performance is different; 2. Check CanIuse confirmation feature support status; 3. Correctly use -webkit-, -moz-, -ms-, -o- and other manufacturer prefixes; 4. It is recommended to use Autoprefixer to automatically add prefixes; 5. Install PostCSS and configure browserslist to specify the target browser; 6. Automatically handle compatibility during construction; 7. Modernizr detection features can be used for old projects; 8. No need to pursue consistency of all browsers,

Use the clip-path attribute of CSS to crop elements into custom shapes, such as triangles, circular notches, polygons, etc., without relying on pictures or SVGs. Its advantages include: 1. Supports a variety of basic shapes such as circle, ellipse, polygon, etc.; 2. Responsive adjustment and adaptable to mobile terminals; 3. Easy to animation, and can be combined with hover or JavaScript to achieve dynamic effects; 4. It does not affect the layout flow, and only crops the display area. Common usages are such as circular clip-path:circle (50pxatcenter) and triangle clip-path:polygon (50%0%, 100 0%, 0 0%). Notice

Themaindifferencesbetweendisplay:inline,block,andinline-blockinHTML/CSSarelayoutbehavior,spaceusage,andstylingcontrol.1.Inlineelementsflowwithtext,don’tstartonnewlines,ignorewidth/height,andonlyapplyhorizontalpadding/margins—idealforinlinetextstyling

Setting the style of links you have visited can improve the user experience, especially in content-intensive websites to help users navigate better. 1. Use CSS's: visited pseudo-class to define the style of the visited link, such as color changes; 2. Note that the browser only allows modification of some attributes due to privacy restrictions; 3. The color selection should be coordinated with the overall style to avoid abruptness; 4. The mobile terminal may not display this effect, and it is recommended to combine it with other visual prompts such as icon auxiliary logos.

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.

The choice of CSS units depends on design requirements and responsive requirements. 1.px is used for fixed size, suitable for precise control but lack of elasticity; 2.em is a relative unit, which is easily caused by the influence of the parent element, while rem is more stable based on the root element and is suitable for global scaling; 3.vw/vh is based on the viewport size, suitable for responsive design, but attention should be paid to the performance under extreme screens; 4. When choosing, it should be determined based on whether responsive adjustments, element hierarchy relationships and viewport dependence. Reasonable use can improve layout flexibility and maintenance.

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.
