- Add Title Attribute from CSS
- Styling HTML Title attribute using CSS
- Set title to an element with CSS
- HTML title attribute making css :hover not work
- How to change title attribute css in input ?
- Edit: You can style the title element
- Is it possible to define a title attribute by class name?
- Better solution to display title-Attributes in disabled a
- Атрибут title html стилизация
- # Table of Contents
- # How to change the Style of the title Attribute using CSS
- # Styling the element’s hover and ::after separately
- # Using a different style for the custom title
- # Showing an element on hover to simulate a custom title
- # Additional Resources
Add Title Attribute from CSS
You can’t. CSS is a presentation language. It isn’t designed to add content (except for the very trivial with :before and :after ).
Styling HTML Title attribute using CSS
You can do a custom solution using CSS3.
Take a look at How to change the style of Title attribute inside the anchor tag?. But might I suggest that you use a custom field like ‘data-title’ so the default browser behaviour doesn’t interfere with your custom solution.
Set title to an element with CSS
Do it with jquery. CSS is a presentation language. It isn’t designed to add content, aside from :before and :after
HTML title attribute making css :hover not work
How to change title attribute css in input ?
You’re thinking of a tooltip. The title property only displays that default browser-based tooltip and you can’t style it.
Try a package like jQuery UI.
Edit: You can style the title element
Styling HTML Title attribute using CSS
Is it possible to define a title attribute by class name?
That’s not something that’s within the scope of CSS. Your best bet is to use some JavaScript or JQuery.
Better solution to display title-Attributes in disabled a
You can use the title attribute with disabled links,
you have to modify your code this way:
a.disabled pointer-events: auto;
color: grey;
>
a.disabled:active pointer-events: none;
>
This is an exemple using the attribute title and a custom attribute named data-tooltip to show the tooltip text:
a.disabled
pointer-events: auto;
color: grey;
>
a.disabled:active
pointer-events: none;
>
/* Tooltip **/
[data-tooltip]
position: relative;
z-index: 10;
>
[data-tooltip]::after
pointer-events: auto;
background: #444;
border-radius: 0.25rem;
box-shadow: 0 1rem 2rem -0.5rem rgba(0, 0, 0, 0.25);
color: #fff;
content: attr(data-tooltip);
display: inline-block;
font-size: 0.75rem;
letter-spacing: 1px;
line-height: 1;
max-width: 11rem;
opacity: 0.8;
padding: 0.375rem 0.25rem;
position: absolute;
left: 50%;
bottom: calc(100% + 0.25rem);
text-align: center;
transform: translate(-10%, 0.25rem);
user-select: none;
-webkit-user-select: none;
vertical-align: middle;
visibility: hidden;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
z-index: 999;
>
[data-tooltip]:hover::after
visibility: visible;
opacity: 0.8;
transform: translate(-50%, 0.125rem);
z-index: 9999 !important;
transition: opacity 200ms ease-in-out, transform 500ms ease-in-out;
>
active Link with hover text
disabled link with hidden hover text
Атрибут title html стилизация
Last updated: May 16, 2023
Reading time · 6 min
# Table of Contents
# How to change the Style of the title Attribute using CSS
To change the style of the title attribute using CSS:
- Set the data-title attribute on the element to the value of the title attribute.
- 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.