Use title in css

title

The title global attribute contains text representing advisory information related to the element it belongs to.

Try it

The main use of the title attribute is to label elements for assistive technology.

The title attribute may also be used to label controls in data tables.

While title can be used to provide a programmatically associated label for an element, this is not good practice. Use a instead.

Multiline titles

The title attribute may contain several lines. Each U+000A LINE FEED ( LF ) character represents a line break. Some caution must be taken, as this means the following renders across two lines:

HTML

p> Newlines in code>titlecode> should be taken into account. This span title="This is a multiline title"> example span span> has a title a attribute with a newline. p> hr /> pre id="output">pre> 

JavaScript

We can query the title attribute and display it in the empty element as follows:

const span = document.querySelector("span"); const output = document.querySelector("#output"); output.textContent = span.title; 

Result

Title attribute inheritance

If an element has no title attribute, then it inherits it from its parent node, which in turn may inherit it from its parent, and so on.

If this attribute is set to the empty string, it means its ancestors’ title s are irrelevant and shouldn’t be used in the tooltip for this element.

HTML

div title="CoolTip"> p>Hovering here will show "CoolTip".p> p title="">Hovering here will show nothing.p> div> 

Result

Accessibility concerns

Use of the title attribute is highly problematic for:

  • People using touch-only devices
  • People navigating with keyboards
  • People navigating with assistive technology such as screen readers or magnifiers
  • People experiencing fine motor control impairment
  • People with cognitive concerns

This is due to inconsistent browser support, compounded by the additional assistive technology parsing of the browser-rendered page. If a tooltip effect is desired, it is better to use a more accessible technique that can be accessed with the above browsing methods.

Specifications

Browser compatibility

BCD tables only load in the browser

See also

Found a content problem with this page?

This page was last modified on Jun 13, 2023 by MDN contributors.

Your blueprint for a better internet.

Источник

Use title in css

Last updated: May 16, 2023
Reading time · 6 min

banner

# Table of Contents

# How to change the Style of the title Attribute using CSS

To change the style of the title attribute using CSS:

  1. Set the data-title attribute on the element to the value of the title attribute.
  2. When the user hovers over the element, use ::after to create a pseudo-element that shows the custom title.
Copied!
DOCTYPE html> html lang="en"> head> meta charset="UTF-8" /> style> body margin: 100px; > a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; > a[data-title]:hover::after content: attr(data-title); position: absolute; top: -100%; left: 0; z-index: 100; background-color: aquamarine; width: 250px; > style> head> body> h2>bobbyhadz.comh2> a href="https://bobbyhadz.com" data-title="Example title" >bobbyhadz.coma > body> html>

We first set the data-title attribute on the element to the value of the title we want to show when the user hovers over the element.

Copied!
a href="https://bobbyhadz.com" data-title="Example title" >bobbyhadz.com a>

We set the position of the a element to relative , so we can set the position of the tooltip to absolute .

Copied!
a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; >

The next step is to use the attr() CSS function to get the value of the data-title attribute directly in the stylesheet.

Copied!
a[data-title]:hover::after content: attr(data-title); position: absolute; top: -100%; left: 0; z-index: 100; background-color: aquamarine; width: 250px; >

You can also set the color of the title text.

Copied!
a[data-title]:hover::after content: attr(data-title); position: absolute; top: -100%; left: 0; z-index: 100; background-color: aquamarine; width: 250px; /* 👇️ set color of title text */ color: black; >

::after is used to create a pseudo-element that is the last child of the selected element.

The content of the pseudo-element is the text of the data-title attribute.

Copied!
a href="https://bobbyhadz.com" data-title="Example title" >bobbyhadz.com a>

The next step is to set the position of the element to absolute , so we can use the top and left properties.

If the width of your title text exceeds the width of your element, you might have to increase the value of the width property on hover.

Copied!
a[data-title]:hover::after content: attr(data-title); position: absolute; top: -100%; left: 0; z-index: 100; background-color: aquamarine; /* increase width */ width: 250px; >

You can also increase the width directly on the element.

Copied!
a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; width: 250px; >

We used the custom data-title attribute so that the native title won’t display eventually and interfere with the custom title.

The native title attribute can’t be styled directly using CSS.

However, you can create a custom title that you can style.

The style of the native title attribute is defined by each browser and might slightly vary between browsers.

# Styling the element’s hover and ::after separately

In some cases, you might want to style the element’s :hover and ::after separately.

Here is an example that and uses a box-shadow when styling the custom title.

Copied!
DOCTYPE html> html lang="en"> head> meta charset="UTF-8" /> style> body margin: 100px; > a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; > a[data-title]::after content: attr(data-title); background-color: pink; color: black; font-size: 1.2em; position: absolute; padding: 1px 5px 2px 5px; bottom: 1.1em; left: 50%; white-space: nowrap; box-shadow: 1px 1px 4px #242424; opacity: 0; border: 1px solid #1b1b1b; z-index: 9999999; visibility: hidden; > a[data-title]:hover::after visibility: visible; opacity: 1; transition: all 0.1s ease 0.4s; > style> head> body> h2>bobbyhadz.comh2> a href="https://bobbyhadz.com" data-title="Example title" >bobbyhadz.coma > body> html>

The ::after pseudo-element is styled separately.

Copied!
a[data-title]::after content: attr(data-title); background-color: pink; color: black; font-size: 1.2em; position: absolute; padding: 1px 5px 2px 5px; bottom: 1.1em; left: 50%; white-space: nowrap; box-shadow: 1px 1px 4px #242424; opacity: 0; border: 1px solid #1b1b1b; z-index: 9999999; visibility: hidden; >

We used the attr() function to get the value of the data-title attribute just like in the previous example.

This time we also used the box-shadow CSS property to display a shadow.

We initially set the element’s opacity to 0 and its visibility to hidden .

When the user hovers over the element, the pseudo-element’s visibility is set to visible and its opacity is set to 1 .

Copied!
a[data-title]:hover::after visibility: visible; opacity: 1; transition: all 0.1s ease 0.4s; >

We also set up a transition to make the tooltip visible with a quick animation.

You can play around with the values of the bottom and left CSS properties if you need to position the custom title somewhere else.

Copied!
a[data-title]::after content: attr(data-title); background-color: pink; color: black; font-size: 1.2em; position: absolute; padding: 1px 5px 2px 5px; bottom: -1.6em; left: 70%; white-space: nowrap; box-shadow: 1px 1px 4px #242424; opacity: 0; border: 1px solid #1b1b1b; z-index: 9999999; visibility: hidden; >

Here is an example that shows the difference between the custom title and using the native title attribute.

Copied!
DOCTYPE html> html lang="en"> head> meta charset="UTF-8" /> style> body margin: 100px; > a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; > a[data-title]::after content: attr(data-title); background-color: pink; color: black; font-size: 1.2em; position: absolute; padding: 1px 5px 2px 5px; bottom: -1.6em; left: 70%; white-space: nowrap; box-shadow: 1px 1px 4px #242424; opacity: 0; border: 1px solid #1b1b1b; z-index: 9999999; visibility: hidden; > a[data-title]:hover::after visibility: visible; opacity: 1; transition: all 0.1s ease 0.4s; > style> head> body> h2>bobbyhadz.comh2> a href="https://bobbyhadz.com" data-title="Example title" >bobbyhadz.coma > br /> br /> a href="https://bobbyhadz.com" title="Example title" >google.coma > body> html>

# Using a different style for the custom title

Here is an example that uses a style that more closely resembles the style of a native title attribute.

Copied!
DOCTYPE html> html lang="en"> head> meta charset="UTF-8" /> style> body margin: 100px; > a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; > a[data-title]::after content: attr(data-title); background-color: rgb(255, 226, 231); color: black; font-size: 1.1em; position: absolute; padding: 2px 6px 2px 5px; bottom: -1.6em; left: 70%; white-space: nowrap; box-shadow: 1px 1px 4px #242424; opacity: 0; border: 1px solid #1b1b1b; border-radius: 6px; z-index: 9999999; visibility: hidden; background-image: -moz-linear-gradient( top, #f8f8f8, #bebebe ); background-image: -webkit-gradient( linear, left top, left bottom, color-stop(0, #f8f8f8), color-stop(1, #bebebe) ); background-image: -webkit-linear-gradient( top, #f8f8f8, #bebebe ); background-image: -moz-linear-gradient( top, #f8f8f8, #bebebe ); background-image: -ms-linear-gradient( top, #f8f8f8, #bebebe ); background-image: -o-linear-gradient( top, #f8f8f8, #bebebe ); > a[data-title]:hover::after visibility: visible; opacity: 1; transition: all 0.1s ease 0.4s; > style> head> body> h2>bobbyhadz.comh2> a href="https://bobbyhadz.com" data-title="Example title" >bobbyhadz.coma > br /> br /> a href="https://bobbyhadz.com" title="Example title" >google.coma > body> html>

The code sample uses the background-image CSS property to set the background of the custom title to a gradient.

# Showing an element on hover to simulate a custom title

You can also show an element on hover to simulate a custom title.

Copied!
DOCTYPE html> html lang="en"> head> meta charset="UTF-8" /> style> body margin: 100px; > a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; > a span display: none; > a:hover span position: absolute; top: 30px; padding: 5px 10px 5px 5px; display: block; z-index: 999999; left: 60%; margin: 8px; width: 200px; text-decoration: none; background-color: #f5f5f5; color: black; border: 1px solid gray; > style> head> body> h2>bobbyhadz.comh2> a href="https://bobbyhadz.com" data-title="Example title" >bobbyhadz.com span>Example title textspan>a > br /> br /> a href="https://bobbyhadz.com" title="Example title" >google.coma > body> html>

Notice that we didn’t create a pseudo-element using ::after this time.

Instead, we have a hidden span element nested within the a tag.

Copied!
a href="https://bobbyhadz.com" data-title="Example title" > bobbyhadz.com span>Example title textspan> a>

We set the position of the a element to relative .

Copied!
a position: relative; display: inline-block; margin-top: 50px; font-size: 1.5em; >

The next step is to hide the span element by setting its display attribute to none .

Copied!
a span display: none; >

When the user hovers over the a element, the display property of the span is set to block to show the custom title.

Copied!
a:hover span position: absolute; top: 30px; left: 60%; padding: 5px 10px 5px 5px; display: block; z-index: 999999; margin: 8px; width: 200px; text-decoration: none; background-color: #f5f5f5; color: black; border: 1px solid gray; >

You can use the top and left CSS properties if you need to position the title text somewhere else.

You might also have to adjust the value of the width property depending on the width of your title text.

# Additional Resources

You can learn more about the related topics by checking out the following tutorials:

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.

Источник

Читайте также:  Java android webview loadurl
Оцените статью