css的定位是我们以后网页制作中比较常用的属性,也是很重要的知识点。了解各个定位的作用以及层级关系对以后的页面布局至关重要。
css定位主要有四种,静态定位、相对定位、绝对定位和固定定位。其中静态定位这个是元素的默认定位方式,不能使用top,bottom,left,right等属性,其它三种定位可以使用以上几个属性。
绝对定位
如果想为元素设置绝对定位,需要设置position:absolute;,这条语句的作用将元素从文档流中脱离出来,将不再占用原来元素的空间,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性(相对或绝对都可以)的父级元素进行绝对定位。如果不存在就逐级向上排查,直到相对于body元素,即相对于浏览器窗口。
示例,利用绝对定位和遮罩模拟登录页面。这里写两个div,都使用绝对定位,参照的父级元素为<body>,第一个div设置left和top为0,宽高100%,覆盖整个窗口。第二个div显示在窗口正中,设置left和top为50%,再通过设置外边距使div的中点居中显示。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>利用遮罩创建登录页(shade)</title>
<style>
body {
margin: 0;
background-image:url(images/php.jpg);
background-size: cover;
}
/* 设置遮罩 */
.shade {
/* 利用绝对定位覆盖整个窗口 */
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
/* 将遮罩层设置成纯黑,并设置透明度使遮罩下的背景内容显现 */
background-color: black;
opacity: 0.7;
}
/* 设置登录窗口 */
.login img {
width: 380px;
height: 460px;
background-color: white;
/*利用绝对定位使登录窗口脱离文档流,使其不随浏览器窗口大小变化*/
position: absolute;
/* 使登录窗在页面的正中位置显示*/
/* 先将登录窗口左上角定位于页面正中间(即显示起点在正中间)*/
left: 50%;
top: 50%;
/* 再对照参照物设置外边距,把左边与上边向相反向调整,设置负外边距就可以 */
/* 调整的值是登录块的大小的一半 */
margin-left: -190px;
margin-top: -230px;
}
</style>
</head>
<body>
<div class="shade"></div>
<div class="login"><img src="images/login.jpg" alt="" ></div>
</body>
</html>点击 "运行实例" 按钮查看在线实例

固定定位
如果想为元素设置固定定位,需要设置position:fixed;,直接以浏览器窗口作为参考进行定位,它是浮动在页面中,元素位置不会随浏览器窗口的滚动条滚动而变化,除非在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响。
以下示例利用固定定位来模拟网页中的客服小窗口,我设置了背景图片的重复使页面超出一屏的高度,设置浮动元素div的right和botton为0,拖动浏览器的滚动条,浮动元素div的位置不会发生变化。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>固定定位小案例</title>
<style>
/*设置背景图片重复,使页面可以滚动*/
body {
height:3000px;
background-image:url(images/php.jpg);
background-repeat: repeat-y;
}
/*使窗口固定在右下角*/
.ads {
width:280px;
height:400px;
background-image: url("images/service.png");
position: fixed;
right: 0;
bottom: 0;
}
</style>
</head>
<body>
<div class="ads"></div>
</body>
</html>点击 "运行实例" 按钮查看在线实例

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号