css之绝对定位下的100%使用:
最近看别人的代码,发现在定位的时候使用到了top:100%,不太明白,和GTP沟通以后,得到了答案,记录一下。代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>Relative Positioning Example</title>
<style type="text/css">
.container {
position: relative;
display: inline-block;
}
.dropdown-toggle {
padding: 10px;
background-color: #ccc;
border: none;
cursor: pointer;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
background-color: #f0f0f0;
border: 1px solid #aaa;
padding: 10px;
display: none;
}
.container:hover .dropdown-menu {
display: block;
}
</style>
</head>
<body>
<div class="container">
<button class="dropdown-toggle">Open Dropdown</button>
<div class="dropdown-menu">
<!-- 下拉菜单内容 -->
<li>我的1</li>
<li>我的2</li>
<li>我的</li>
<li>我的</li>
<li>我的</li>
<li>我的</li>
<li>我的</li>
</div>
</div>
</body>
</html>
现象:下拉菜单会出现在 Open Dropdown 这个button下面,而不会覆盖这个button,
这就是100%的优点,当使用相对定位并设置 top: 100% 时,绝对定位的元素将相对于
其包含块的底部边缘进行定位,但它不会影响到原来的包含块布局。这就是为什么你的
dropdown-toggle 按钮没有被覆盖。
还有另外一个案例,就是 bottom:100%,达到的效果就是元素的底部边缘会紧密贴合其包含块的顶部边缘,从而将元素放置在其包含块的上方。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>Relative Positioning Example</title>
<style type="text/css">
.container {
position: relative;
/*默认情况下,div 元素的 display 属性值是 block,这意味着它会独占一整行的宽度。如果你希望容器在一行内显示,但又不需要占据整个行的宽度,那么可以将 display 设置为 inline-block。*/
display: inline-block;
margin-top: 500px;
}
.tooltip-toggle {
padding: 10px;
background-color: #ccc;
border: none;
cursor: pointer;
}
.tooltip {
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
background-color: #f0f0f0;
border: 1px solid #aaa;
padding: 10px;
display: none;
}
.container:hover .tooltip {
display: block;
}
</style>
</head>
<body>
<div class="container">
<button class="tooltip-toggle">Show Tooltip</button>
<div class="tooltip">
<!-- 提示内容 -->
<li>我的4</li>
<li>我的5</li>
<li>我的</li>
<li>我的</li>
<li>我的</li>
<li>我的</li>
<li>我的</li>
</div>
</div>
</body>
</html>
