I am not sure if this is expected for CSS :after
pseudo class.
What do I have ?
I am trying to create a tooltip using CSS. Following is the HTML and CSS I am using. Fiddle HERE
HTML
<div class="tooltip tooltip-left">
:(
</div>
CSS
.tooltip {
display:inline-block;
position:absolute;
background: #002663;
height:100px;
width:300px;
color:#fff;
padding:20px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/*TOP*/
.tooltip-top:after {
content:"";
display: block;
position:absolute;
bottom:-20px;
left:50%;
border-top:20px solid #002663;
border-left:20px solid transparent;
border-right:20px solid transparent;
margin-left:-20px;
};
/*LEFT*/
.tooltip-left:after {
content:"";
display: block;
position:absolute;
right: -20px;
top: 50%;
border-left: 20px solid #002663;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
margin-top: -20px;
};
What's so weird?
The tooltip does not contain the arrow in the current fiddle. However if I comment the class .tooltip-top:after
the arrow appears.
Why is this behavior? Cant I declare multiple definitions for :after
pseudo element using different classes applied to same element?
You have a trailing semi colon after the .tooltip-top:after class. Remove it. It's causing the next class not to be read.
.tooltip-top:after {
content:"";
display: block;
position:absolute;
bottom:-20px;
left:50%;
border-top:20px solid #002663;
border-left:20px solid transparent;
border-right:20px solid transparent;
margin-left:-20px;
}; /* <-- This ; is what's causing the problem */
CSS:
[data-tips] {
position: relative;
text-decoration: none;
}
[data-tips]:after,
[data-tips]:before {
position: absolute;
z-index: 100;
opacity: 0;
}
[data-tips]:after {
content: attr(data-tips);
height: 25px;
line-height: 25px;
padding: 0 10px;
font-size: 12px;
text-align: center;
color: #fff;
background: #222;
border-radius: 5px;
text-shadow: 0 0 5px #000;
-moz-box-shadow: 0 0 5px rgba(0,0,0,0.3);
-webkit-box-shadow: 0 0 5px rgba(0,0,0,0.3);
box-shadow: 0 0 5px rgba(0,0,0,0.3);
white-space: nowrap;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
[data-tips]:before {
content: "";
width: 0;
height: 0;
border-width: 6px;
border-style: solid;
}
[data-tips]:hover:after,
[data-tips]:hover:before {
opacity: 1;
}
/* Top tips */
[data-tips].top-tip:after,
[data-tips].top-tip:before {
-webkit-transition: bottom 0.25s ease-in-out, opacity 0.25s ease-in-out;
-moz-transition: bottom 0.25s ease-in-out, opacity 0.25s ease-in-out;
transition: bottom 0.25s ease-in-out, opacity 0.25s ease-in-out;
bottom: 90%;
left: -9999px;
margin-bottom: 12px;
}
[data-tips].top-tip:before {
border-color: #222 transparent transparent transparent;
margin-bottom: 0;
}
[data-tips].top-tip:hover:after,
[data-tips].top-tip:hover:before {
bottom: 100%;
left: 0;
}
[data-tips].top-tip:hover:before {
left: 15px;
}
/* Bottom tip */
[data-tips].bottom-tip:after,
[data-tips].bottom-tip:before {
-webkit-transition: top 0.25s ease-in-out, opacity 0.25s ease-in-out;
-moz-transition: top 0.25s ease-in-out, opacity 0.25s ease-in-out;
transition: top 0.25s ease-in-out, opacity 0.25s ease-in-out;
top: 90%;
left: -9999px;
margin-top: 12px;
}
[data-tips].bottom-tip:before {
border-color: transparent transparent #222 transparent;
margin-top: 0;
}
[data-tips].bottom-tip:hover:after,
[data-tips].bottom-tip:hover:before {
top: 100%;
left: 0;
}
[data-tips].bottom-tip:hover:before {
left: 15px;
}
/* Left tip */
[data-tips].left-tip:after,
[data-tips].left-tip:before {
-webkit-transition: left 0.25s ease-in-out, opacity 0.25s ease-in-out;
-moz-transition: left 0.25s ease-in-out, opacity 0.25s ease-in-out;
transition: left 0.25s ease-in-out, opacity 0.25s ease-in-out;
top: -9999px;
left: 96%;
margin-left: 12px;
}
[data-tips].left-tip:before {
border-color: transparent #222 transparent transparent;
margin-left: 0;
}
[data-tips].left-tip:hover:after,
[data-tips].left-tip:hover:before {
left: 100%;
top: 0;
}
[data-tips].left-tip:hover:before {
top: 7px;
}
/* Right tip */
[data-tips].right-tip:after,
[data-tips].right-tip:before {
-webkit-transition: right 0.25s ease-in-out, opacity 0.25s ease-in-out;
-moz-transition: right 0.25s ease-in-out, opacity 0.25s ease-in-out;
transition: right 0.25s ease-in-out, opacity 0.25s ease-in-out;
top: -9999px;
right: 96%;
margin-right: 12px;
}
[data-tips].right-tip:before {
border-color: transparent transparent transparent #222;
margin-right: 0;
}
[data-tips].right-tip:hover:after,
[data-tips].right-tip:hover:before {
right: 100%;
top: 0;
}
[data-tips].right-tip:hover:before {
top: 7px;
}
HTML :
<a href="http://bavotasan.com" class="top-tip" data-tips="Go to bavotasan.com">bavotasan.com</a>
add the data-tips="" parameter to any HTML element plus a class to set the direction and a tooltip will appear.
Try following link : http://cbavota.bitbucket.org/css3-tips/
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.