猿问

css伪类定位的问题

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<style>
.tooltip {
    position: relative;
    display: inline-block;
    border-bottom: 1px dotted black;
}

.tooltip .tooltiptext {
    visibility: hidden;
    width: 120px;
    background-color: black;
    color: #fff;
    text-align: center;
    border-radius: 6px;
    padding: 5px 0;
    position: absolute;
    z-index: 1;
    bottom: 150%;
    left: 50%;
    margin-left: -60px;
}

.tooltip .tooltiptext::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    margin-left: -5px;
    border-width: 5px;
    border-style: solid;
    border-color: black transparent transparent transparent;
}

.tooltip:hover .tooltiptext {
    visibility: visible;
}
</style>
<body style="text-align:center;">

<h2>顶部提示框/底部箭头</h2>

<div class="tooltip">鼠标移动到我这
  <span class="tooltiptext">提示文本</span>
</div>

</body>
</html>

after里面的top是怎么来定位,让三角和上面的框衔接?搞不懂原因

西兰花伟大炮
浏览 2877回答 3
3回答

田心枫

 top: 100%;    的100%是相对于它已定位的父元素.tooltiptex高

习惯受伤

.tooltiptext 的 after 是根据 .tooltiptext 为相对位置布局,下边这句 border-width: 5px; border-style: solid; border-color: black transparent transparent transparent;是实现三角的重要代码。在 .tooltiptext::after 中没有定义三角的宽高,而上边定义了 border-width: 5px; 导致 .tooltiptext::after 的宽高变成了 10,只有最上边颜色为 black,所以就显示了倒三角。 .tooltiptext::after 中 这一句:top: 100%; left: 50%;  margin-left: -5px; 将倒三角布局在了  .tooltiptext 元素的下边中间, 因为宽高为 10px,向左移动5px,恰好在中间。top:100%; 100% 就是 .tooltiptext 元素的高度,所以贴在 .tooltiptext 元素下边。

guoyou

 top: 100%;    的100%是相对于它已定位的父元素.tooltiptex高,因为你父元素的高是28px, 所以设置 top: 28px;也可以得到相同的效果
随时随地看视频慕课网APP
我要回答