元素定位:标签在页面中的位置问题
(1)分类
- 绝对定位:将需要的元素直接定位固定的位置
PS:绝对定位,必须指定一个相对点(一般是父标签)。相对的标签必须是相对定位或者绝对定位【重点】
- 相对定位:某个标签做了相对定位,则某个标签的绝对定位会相对于它做定位
PS:若父标签没有做相对定位,则会向上查找;如果最后都没有,则会相对于body做绝对定位。
父相子绝
- 浮动定位:相对于浏览器的定位,滚动条滚动,浮动定位不会发生变化
(2)示例
例1:定位问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/01.css">
<title>定位问题</title>
</head>
<body>
<div class="content">
<div class="box"></div>
<p>这是一个段落</p>
</div>
</body>
</html>
*{
margin:0;
padding:0;
}
.content{
width: 1200px;
height: 3000px;
border: 1px solid rebeccapurple;
margin: auto;
position: relative;/* 做个相对点 */
}
.box{
width: 150px;
height: 300px;
border: 1px solid rgb(197, 211, 37);
position: absolute;/* 针对相对点做绝对定位 */
/* 绝对定位,若输入内容则不会到标签下方,而是飘在标签上方 */
left: 100px;
top: 100px;
/* 若此时未在相对标签做相对点,则并非相对标签的绝对定位,而是相对左上角的绝对定位 */
}
例2:图片的透明提示栏
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/02.css">
<title>图片的透明提示栏</title>
</head>
<body>
<div class="box">
<div class="box-img">
<img src="img/456.jpg" alt="">
<div class="box-img-nav">
2325
</div>
</div>
<p>
<a href="#">天阶夜色凉如水,坐看牵牛织女星</a>
</p>
</div>
</body>
</html>
/* 最后一步将边线都去掉 */
*{
padding: 0;
margin: 0;
}
.box, .box-img, .box-img-nav{
width: 150px;
height: 200px;
/* border: 1px solid red; */
}
.box-img{
height: 150px;
/* border: 1px solid greenyellow; */
position: relative;/* 做相对点 */
}
.box-img > img{
width: 100%;
height: 100%;
/* 使得图片铺满标签 */
}
.box-img-nav{
height: 30px;
background-color: rgba(0, 0, 0, 0.2);
position: absolute;/* 绝对定位 */
left: 0;
bottom: 0;
color: white;
line-height: 30px;
font-size: 14px;
}
.box a{
color: #222;
font-size: 14px;
text-decoration: none;/* 下划线设为none */
margin-left: 2px;
}
例3:点击浮动标签回到顶部
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/03.css">
<title>浮动定位,回到顶部</title>
</head>
<body>
<div id="box"></div>
<div class="content">
</div>
<div class="go-top">
<a href="#box">GO-TOP</a>
</div>
</body>
</html>
html{
scroll-behavior: smooth;
/* 增加滚动效果 */
}
*{
margin: 0;
padding: 0;
}
#box{
width: 100%;
}
.go-top{
width: 100px;
height: 100px;
border-radius: 10px;
background-color: #eee;
box-shadow: 3px 3px 10px #999;
cursor: pointer;/* 鼠标放置,点击回到顶部 */
font-size: 25px;
line-height: 100px;
position: fixed;/* 浮动定位 */
right: 50px;
bottom: 100px;
}
.content{
width: 1200px;
height: 3000px;
border: 1px solid rebeccapurple;
margin: auto;
}
(3)浮动(float)及相关问题
本质作用:用来实现文字环绕图片,现常被用作让块元素横向排列。
例:浮动及商品列表页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/04.css">
<title>浮动及商品列表页面</title>
</head>
<body>
<div class="content">
<div class="goods">
<img src="img/123.jpg_.webp" alt="">
<p class="price">
<span>$499.00</span>
<span>20000+人付款</span>
</p>
<p>
<a href="#">xxxxx美女成群</a>
</p>
</div>
<div class="goods">
<img src="img/123.jpg_.webp" alt="">
<p class="price">
<span>$499.00</span>
<span>20000+人付款</span>
</p>
<p>
<a href="#">xxxxx美女成群</a>
</p>
</div>
<div class="goods">
<img src="img/123.jpg_.webp" alt="">
<p class="price">
<span>$499.00</span>
<span>20000+人付款</span>
</p>
<p>
<a href="#">xxxxx美女成群</a>
</p>
</div>
<div class="goods">
<img src="img/123.jpg_.webp" alt="">
<p class="price">
<span>$499.00</span>
<span>20000+人付款</span>
</p>
<p>
<a href="#">xxxxx美女成群</a>
</p>
</div>
<div class="goods">
<img src="img/123.jpg_.webp" alt="">
<p class="price">
<span>$499.00</span>
<span>20000+人付款</span>
</p>
<p>
<a href="#">xxxxx美女成群</a>
</p>
</div>
<div class="goods">
<img src="img/123.jpg_.webp" alt="">
<p class="price">
<span>$499.00</span>
<span>20000+人付款</span>
</p>
<p>
<a href="#">xxxxx美女成群</a>
</p>
</div>
</div>
<p>
用户的密码加密后放在每一行的第二个字段里,这个 /etc/passwd文件在一般情况下是所有用户可读,只有root用户可写的,这样不良用户就可能读取加密后的密码字串来取得密码。
</p>
</body>
</html>
*{
margin: 0;
padding: 0;
}
.content{
width: 1200px;
height: 2000px;
margin: auto;
border: 1px solid royalblue;
}
.goods{
width: 250px;
height: 395px;
border: 1px solid rebeccapurple;
float: left;
margin: 23px ;
}
.goods > img{
width: 250px;
}
p.price{
line-height: 30px;
height: 30px;
}
p.price > span:nth-child(1){
font-size: 18px;
color: orange;
font-weight: bold;
}
p.price > span:nth-child(1)::after{
height: 25px;
content: "包邮";
color: white;
font-size: 10px;
text-align: center;/* 字体居中 */
background-color: orange;
}
p.price > span:nth-child(2){
margin-right: 10px;
float: right;
font-size: 13px;
color: #999;
}
p > a{
text-decoration: none;
color: black;
}
- 浮动问题:盒子在浮动过程中,会影响后面的元素,浮动会导致后面产生空隙,而这些空隙会被后面的元素去填充
PS:如果浮动影响了后面元素的排列,建议清除浮动
<div style="clear: both;">
<p>
用户的密码加密后放在每一行的第二个字段里,这个 /etc/passwd文件在一般情况下是所有用户可读,只有root用户可写的,这样不良用户就可能读取加密后的密码字串来取得密码。
</p>
</div>