css定位

时间:2023-03-08 17:05:06
css定位

文档流

所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素。脱离文档流即是元素打乱了这个排列,或是从排版中拿走。

当前所知的脱离文档流的方式有两种:浮动和定位。

css定位机制

普通流、浮动、绝对定位

css position属性

static:position默认值,保持文档流。

relative:相对本身的原始位置发生位移且保持文档流,占空间。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>相对定位</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="ouym" />
</head>
<body>
<div style="width: 100px; height: 100px; background-color:#00ff00;"> div1</div>
<div style="width: 100px; height: 100px; background-color:#00ffff;position:relative;left:20px;top:-20px;"> div2</div>
<div style="width: 100px; height: 100px; background-color:#ffff00;"> div3</div> </body>
</html>

效果如下:

css定位

absolute:脱离文档流,不占空间且相对于其包含块来定位(相对最近的非static块定位)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>新建网页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="ouym" />
</head>
<body>
<div style="width: 100px; height: 100px; background-color:#00ff00;"> div1</div>
<div style="width: 100px; height: 100px; background-color:#00ffff;position:absolute;left:20px;top:20px;"> div2</div>
<div style="width: 100px; height: 100px; background-color:#ffff00;"> div3</div> </body>
</html>

效果如下:

css定位

fixed:总是以body为定位时的对象,总是根据浏览器的窗口来进行元素的定位,一般页面上飘来飘去的,或者浮动在顶部或右下角的小模块都是用的fixed,脱离文档流。

浮动float

脱离文档流,不占空间。虽然普通块元素可以忽视浮动块,但是块元素中的文本不会,文本会围绕浮动块。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>浮动</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="ouym" />
</head>
<body>
<div style="width: 100px; height: 100px; background-color:#00ff00;"> div1</div>
<div style="width: 100px; height: 100px; background-color:#00ffff;float:left;"> div2</div>
<div style="width: 100px; height: 110px; background-color:#ffff00;"> div3</div> </body>
</html>

运行效果:

css定位

div2覆盖了div3的部分,但是把div3的文本挤下来了。clear可以清除浮动

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>清除浮动</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="ouym" />
</head>
<body>
<div style="width: 100px; height: 100px; background-color:#00ff00;"> div1</div>
<div style="width: 100px; height: 100px; background-color:#00ffff;float:left;"> div2</div>
<div style="width: 100px; height: 110px; background-color:#ffff00;clear:both;"> div3</div> </body>
</html>

css定位