CSS - Tooltips

-

Basic Tooltip Syntax

To create a basic tooltip using CSS, you need to set up the correct HTML structure and apply the necessary CSS properties. The HTML structure consists of a container element that holds the target element (the element that triggers the tooltip) and the tooltip itself.

Example: HTML structure for a basic tooltip

<div class="tooltip-container">
  <span class="tooltip-target">Hover over me!</span>
  <span class="tooltip-text">I'm a tooltip!</span>
</div>

The <div> element with the class tooltip-container acts as the container for the tooltip. The target element is a <span> with the class tooltip-target, and the tooltip text is placed inside another <span> with the class tooltip-text.

To style the tooltip using CSS, you need to apply the following properties:

Property Description
position: relative; Set on the container element to establish a positioning context for the tooltip.
display: none; Set on the tooltip text element to hide it by default.
position: absolute; Set on the tooltip text element to position it relative to the container.
top, bottom, left, or right Use these properties to position the tooltip as desired.
Additional styles Apply background color, text color, padding, and borders to customize the appearance of the tooltip.

Example: Basic tooltip CSS

.tooltip-container {
  position: relative;
  display: inline-block;
}

.tooltip-target {
  cursor: pointer;
}

.tooltip-text {
  display: none;
  position: absolute;
  background-color: #000;
  color: #fff;
  padding: 5px;
  border-radius: 4px;
  font-size: 14px;
  white-space: nowrap;
  z-index: 1;
}

.tooltip-container:hover .tooltip-text {
  display: block;
}

The .tooltip-container class sets the positioning context for the tooltip. The .tooltip-target class applies a pointer cursor to indicate interactivity. The .tooltip-text class hides the tooltip and positions it absolutely. When the .tooltip-container is hovered over, the .tooltip-text becomes visible using the :hover pseudo-class and the display: block; property.

You can further customize the styles of the tooltip, such as changing the background color, text color, padding, and border radius, to match your desired design.

Positioning Tooltips

When creating tooltips, you can position them in different places relative to the target element. The most common positioning options are top, bottom, left, and right. By using CSS, you can control the placement of tooltips.

To position a tooltip, use the position property with the value absolute on the tooltip element. Then, use the top, bottom, left, and right properties to specify the distance from the target element.

Example: Top Tooltip

.tooltip-text {
  bottom: 125%;
  left: 50%;
  margin-left: -60px;
}

Example: Bottom Tooltip

.tooltip-text {
  top: 125%;
  left: 50%;
  margin-left: -60px;
}

Example: Left Tooltip

.tooltip-text {
  right: 105%;
  top: 50%;
  margin-top: -15px;
}

Example: Right Tooltip

.tooltip-text {
  left: 105%;
  top: 50%;
  margin-top: -15px;
}
Tooltip Position CSS Properties
Top bottom: 125%;, left: 50%;, margin-left: -60px;
Bottom top: 125%;, left: 50%;, margin-left: -60px;
Left right: 105%;, top: 50%;, margin-top: -15px;
Right left: 105%;, top: 50%;, margin-top: -15px;

In each example, the percentage values for top, bottom, left, and right properties are relative to the size of the target element. The negative margin values are used to center the tooltip either horizontally or vertically, depending on the positioning.

Adjust the values based on the size of your tooltip and the desired spacing between the tooltip and the target element.

Customizing Tooltip Appearance

When creating tooltips, you can customize their appearance to match your website's design or to make them stand out. CSS provides properties that allow you to change the background color, text color, font, borders, padding, and other styling aspects of tooltips.

To change the background color and text color of a tooltip, you can use the background-color and color properties:

Example: Change Tooltip Background and Text Color

.tooltip-text {
  background-color: #000;
  color: #fff;
}

This example will make the tooltip have a black background color and white text color.

To change the font of the tooltip text, you can use font properties such as font-family, font-size, and font-weight:

Example: Change Tooltip Font

.tooltip-text {
  font-family: Arial, sans-serif;
  font-size: 14px;
  font-weight: bold;
}

This CSS rule sets the font of the tooltip text to Arial (with a fallback to sans-serif), a font size of 14 pixels, and bold font weight.

To add borders to the tooltip, you can use the border property. You can set the border width, style, and color:

Example: Add Borders to Tooltip

.tooltip-text {
  border: 1px solid #ccc;
}

This code adds a 1-pixel solid border with a light gray color to the tooltip.

Padding can be added to the tooltip using the padding property to create space between the tooltip text and its borders. You can set padding values for all sides or set different values for each side (top, right, bottom, left):

Example: Add Padding to Tooltip

.tooltip-text {
  padding: 5px 10px;
}

This CSS rule adds 5 pixels of padding to the top and bottom, and 10 pixels of padding to the left and right of the tooltip text.

You can also apply other styling properties to tooltips, such as border-radius to create rounded corners, box-shadow to add a shadow effect, or text-transform to change the capitalization of the tooltip text.

Example: Combine Various Styling Properties

.tooltip-text {
  background-color: #f9f9f9;
  color: #333;
  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
  font-size: 12px;
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  text-transform: uppercase;
}

The tooltip has a light gray background color, dark gray text color, a specific font family, smaller font size, padding, a border with rounded corners, a subtle shadow effect, and uppercase text transformation.

Feel free to experiment with different CSS properties and values to create tooltips that match your design preferences and requirements.

Advanced Tooltip Techniques

In this section, you will learn some advanced techniques for creating tooltips, including animated tooltips and responsive tooltips.

Animated Tooltips

To create animated tooltips, you can use CSS transitions or animations. CSS transitions allow you to transition between two states, while animations provide more control over the intermediate steps of the animation.

Example: Creating an animated tooltip using CSS transitions

.tooltip-text {
  opacity: 0;
  transition: opacity 0.3s ease-in-out;
}

.tooltip-container:hover .tooltip-text {
  opacity: 1;
}

The tooltip is initially hidden with an opacity of 0. When you hover over the tooltip container, the opacity transitions to 1, making the tooltip visible. The transition property is used to define the duration and easing function of the transition.

You can also create more complex animations using CSS animations and keyframes:

Example: Creating an animated tooltip using CSS animations and keyframes

@keyframes tooltipFadeIn {
  0% {
    opacity: 0;
    transform: translateY(-10px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.tooltip-text {
  opacity: 0;
  animation: tooltipFadeIn 0.3s ease-in-out forwards;
}

A @keyframes rule named tooltipFadeIn is defined. It specifies the starting and ending states of the animation. The tooltip initially has an opacity of 0 and is translated 10 pixels upwards. At the end of the animation, the opacity becomes 1, and the tooltip returns to its original position. The animation property is used to apply the animation to the tooltip text, specifying the animation name, duration, easing function, and fill mode.

Responsive Tooltips

To make tooltips responsive and adaptable to different screen sizes, you can use CSS media queries and adjust the size and position of the tooltips accordingly.

Example: Making tooltips responsive with CSS

.tooltip-text {
  font-size: 14px;
  padding: 5px;
  white-space: nowrap;
}

@media screen and (max-width: 768px) {
  .tooltip-text {
    font-size: 12px;
    padding: 3px;
    white-space: normal;
  }
}

The default styles for the tooltip text are defined, including font size, padding, and white-space set to nowrap to prevent line breaks. Then, a media query is used to target screens with a maximum width of 768 pixels (typical for mobile devices). Inside the media query, the font size is reduced, padding is adjusted, and white-space is set to normal to allow line breaks if the tooltip text is too long.

You can also adjust the position of the tooltips based on the viewport size:

Example: Adjusting tooltip position based on viewport size

.tooltip-text {
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
}

@media screen and (max-width: 768px) {
  .tooltip-text {
    top: auto;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
  }
}

The tooltip is positioned below the target element by default using top: 100% and centered horizontally using left: 50% and transform: translateX(-50%). Inside the media query for smaller screens, the positioning is changed to display the tooltip above the target element by setting top: auto and bottom: 100%, while still keeping it centered horizontally.

By using CSS media queries and adjusting the styles and positioning of tooltips based on screen size, you can create responsive tooltips that adapt to different devices and provide a better user experience.