定位流和浮动定位

定位流(position属性)的分类
1、相对定位(relative)
2、绝对定位
3、固定定位
4、静态定位

相对定位
什么是相对定位?
就是相对于自己以前在标准流中的位置来移动,相对定位需要配合top/left/right/bottom属性使用

相对定位注意点
1、相对定位是不脱离标准流的,会继续在标准流中占用一份空间
2、在相对定位中,同一个方向上的属性只能使用一个
3、由于相对定位是不脱离标准文档流的,所以在相对定位中是区分块级元素/行内元素/行内块级元素,
即行内元素即使设置为position属性,设置宽高不起作用
4、由于相对定位是不脱离标准文档流的,而且相对定位的元素会占用标准流中的位置,所以当给相对定位
的元素设置margin padding等属性时会影响到标准流中的布局,即margin padding等属性先生效,然后再也生效后位置相对定位

相对定位应用场景?
1、用于微调元素布局
2、配合绝对定义使用

相对定位的弊端
相对定位是不脱离标准流的,会继续在标准流中占用一份空间,不利于布局

绝对定位
什么是绝对定位?
position属性设置为absolute
默认相对于body来定位
和相对定位一样需要配合top/left/right/bottom属性使用

绝对定位注意点
1、绝对对位的元素是脱离标准流的
2、绝对定位的元素是不区分块级元素/行内元素/行内块级元素,被设置为绝对定位的元素都可以设置宽高

绝对定位参考点
1、默认情况下,所有的绝对定位元素,无论有没有定位元素,都会以body作为参考点
2、如何一个定位元素有祖先元素,而且祖先元素也是定位流,那么这个绝对定位的元素就会以定位流的那个祖先元素作为参考点
3、只要是这个元素的祖先元素都可以
4、定位流指的是相对定位/绝对定位/固定定位
5、静态定位不行
6、如果祖先元素中有多个定位元素,那么就会以最近的祖先元素作为参考点
7、如果一个绝对定位元素是以body作为参考点,那么其实是以网页首屏的宽度和高度作为参考点,而不是以整个网页的宽度和高度作为参考点
8、一个绝对定位元素会忽略祖先元素的padding
绝对定位的应用场景
1、

绝对定位的弊端?
默认情况下是以body作为参考点,是以网页首屏的宽度和高度作为参考点,当浏览器大小发生变化后,会随着屏幕大小变化而变化

相对定位和绝对定位应用场景
子绝父相
子元素使用绝对定位,父元素使用相对定位

固定定位
什么是固定定位?
position属性设置为fixed
是指被设置的元素不会随着滚动条的滚动而变动位置
同样需要配合top/left/right/bottom属性使用

固定定位注意点
1、固定定位的元素是脱离标准流的,不会占用标准流中的空间,
2、固定定位和绝对定位一样不区分块级元素/行内元素/行内块级元素
3、固定定位的元素仍现在标准流的位置,只会影响其后面的元素

元素在父元素中居中
设置margin: 0 auto即可
如果该元素还需要设置其他的margin属性,需要放在margin: 0 auto后面
如margin: 0 auto;
margin-top: 50px;
这样 margin-top: 50px;才能生效
但是在绝对定位中不生效

如何让绝对定位元素的水平居中
left: 50%;
margin-left: -元素宽度的一半 px;

文字居中,如p标签、a标签
line-height: 50px;
text-align: center;
line-height设置为其父元素的高度,或者父元素设置line-height属性为高度值
因为子元素(如p标签、a标签)可以继承该属性

text-align : center 和 margin: 0 auto的区别
text-align : center 设置盒子中的文字内容和图片水平居中
margin: 0 auto 设置盒子自身在父盒子中水平居中

静态定位:
默认元素就是静态定位

z-index属性
什么是z-index属性
默认情况下所有的元素都有一个z-index属性,取值是0
z-index属性的作用是专门用于控制定位流覆盖关系
1、默认情况下,定位流元素会覆盖标准流元素
2、默认情况下,定位流元素会覆盖前面的定位流元素
3、如果定位流中的元素设置了z-index属性,那么谁的z-index属性比较大,谁就显示在上面
注意点
从父现象
1、如果两个定位元素的父元素没有设置z-index属性,那么谁的z-index属性比较大,谁就显示在上面
2、如果两个定位元素的父元素设置z-index属性,那么子元素的z-index属性就会失效,也就是谁的父元素
的z-index属性、谁就显示在上面

box-sizing
1、这个属性可以保证我们给盒子设置padding和border属性后,盒子的宽度和高度不变
2、那这个属性是如何保证盒子元素宽度和高度不变的呢?
增加padding和border属性后,想保持不变,必须减去一部分内容的高度和宽度

3、box-sizing的取值
content-box 默认值,元素的宽高 = 边框 + 内边框 + 内容宽高
border-box 元素的宽高 = width/height的宽高

选择器:
ul li:nth-of-type(4) 选择li中的第四个元素

行高

浮动流
1、浮动流是一种半脱离标准流的排版方式
2、浮动流只有一种排版方式,就是水平排版,它只能设置某个元素左对齐或者右对齐
3、属性 float ,取值 right/left/none
4、在其父盒子中左浮动或右浮动
5、应用,水平方向的布局

注意点:浮动流没有居中对齐,也就是没有center这个取值
在浮动流中margin :0 auto是不生效的
特点:
在浮动流中是不区分行内元素/行内块级/块级元素
在浮动流中无论是行内元素/行内块级/块级元素,都可以设置宽高
综上:所有元素都可以当作行内块级元素

什么是浮动流脱标?
脱标:脱离标准流
当某个元素浮动之后,那么这个元素看上去就像被从标准流中删除了一样,这个就是浮动元素的脱标。
脱标后有什么元素?
如果前面的元素脱标了,而后面的元素没有脱标,那么前面的元素会盖住后面的元素(对于兄弟元素)

浮动元素排序规则
1、相同方向上的浮动元素,先浮动的元素会显示在前面,后浮动的元素显示在后面
2、不同方向上的元素,左浮动会找左浮动,右浮动会找右浮动
3、浮动元素浮动后的位置,由浮动元素在浮动之前在标准流中的位置来确定(重点理解)

浮动元素的贴靠现象
当父元素有足够宽,所有后浮动元素紧贴着前面浮动的元素
当父元素无法显示下浮动元素时,浏览器为了显示出浮动元素,就会往前一个浮动元素贴靠
如果还显示不下,继续往前前一个浮动元素贴靠,直到能显示
如果最后都无法显示,则贴靠到父元素上

浮动元素字围现象
浮动元素不会覆盖没有浮动元素中的文字
应用:人物介绍中的图文排版

浮动元素高度问题
在标准流中内容可以撑起父元素的高度
在浮动流中浮动元素是不能撑起父元素的高度的

清除浮动的方式
1、给前面的父元素设置高度,但是在企业开发中,我们能不写高度就不写高度,所以这种方式用的很少
2、给后面的盒子设置clear属性
none默认取值,安装浮动元素的排序规则来排序(左浮动找左浮动,右浮动找右浮动)
left 不要找之前的左浮动元素
right 不要找之前的右浮动元素
both 不要找前面的左浮动元素和右浮动元素(开发中常用这个)
例如;两个div中分别右3个p标签,div没有设置高度
让所有的p标签都左浮动,这时所有的p标签都会现在在一行
如果想p标签分别在自己的div中左浮动,此时需要清除浮动,给第二个div设置clear属性
注意点:
如果某个元素设置了clear属性,那个这个元素是margin属性就会失效
3、隔墙法
外墙法
a、在两个盒子中间,添加一个额外块级元素(一般div)
b、给这个额外添加的元素设置clear:both属性
注意点:隔墙法它可以让第二个盒子使用margin-top属性
隔墙法不可以让第一个盒子使用margin-bottom属性
一般实际开发中,设置额外块级元素的高度
内墙法
a、在第一个盒子中所有子元素后添加一个额外块级元素(一般div)
b、给这个额外添加的元素设置clear:both属性
注意点:隔墙法它可以让第二个盒子使用margin-top属性
隔墙法也可以让第一个盒子使用margin-bottom属性
也可以设置额外块级元素的高度

外墙法和内墙法的区别?
外墙法不能撑起第一个盒子的高度
内墙法可以撑起第一个盒子的高度

4、隔墙法和伪元素选择结合
使用伪元素选择器给第一个盒子所有子元素后添加一个额外块级元素
.box1::after{
content: "0"; // 设置添加的内容为空
display: block; // 设置添加的元素为宽街
height: 0; // 高度为0
clear: both; // 清除浮动
visibility: hidden; // 隐藏
}
本质和内墙法一样

5、给第一个盒子设置overflow: hidden属性

伪元素选择器?
伪元素选择器作用就是给指定标签内容的前面添加子元素或者给指定标签内容的后面添加子元素
格式
标签名称::before 指定标签内容的前面添加子元素
标签名称::after 指定标签内容的后面添加子元素

div::before{
content: "内容前面"; // 内容
background-color: red;
display: block;
}

overflow: hidden作用
1、可以将操作标签范围的内容裁剪掉
2、清除浮动
3、可以设置该属性(父盒子),让里面的盒子设置margin-top之后,外面的盒子不会被顶下来

原文地址:https://www.cnblogs.com/yaoqingzhuan/p/11337354.html

时间: 2024-10-09 13:04:08

定位流和浮动定位的相关文章

CSS定位机制之浮动定位float

一.浮动定位实现的效果 二.使用float实现浮动定位 三.使用clear属性清除浮动定位 四.浮动定位的应用(布局) 一.浮动定位实现的效果 (一).块元素(div)在文档流中默认垂直排列,如果希望块元素在页面中水平排列,可以使块元素脱离文档流(使用float使元素浮动) 元素浮动脱离文档流之后,原有的位置不会保留,会被其他文档流元素占据. (二). 当设置了浮动定位后(float属性非none的值),元素会立即左上或右上浮动,而浮动元素会盖住文档流元素.如图一所示,框1设置浮动之后脱离文档流

前端(七)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 文档流本质是 nomal flow (普通流.常规流) 3.BFC(Block Formatting Contxt) 块级格式化上下文,它是一个独立的渲染区域,只有Block-level box参与,它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干 4.BFC的规则

认识CSS中布局之文档流、浮动、定位以及叠放次序

前端之HTML,CSS(七) CSS CSS布局的核心就是盒子的摆放,即CSS定位.而CSS中定位机制分为:普通流(nomal flow).浮动(float).定位(position). 普通流 普通流又被称为文档流或者标准流,普通流是指网页内标签元素正常情况下会按照自上而下,自左向右按顺序排列.即块级元素独占一行,多个块级元素存在会自上而下顺序排列,多个行内元素会共占一行,自左向右排列. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 &l

文档流、浮动 、定位的概念【转】

原文链接:https://blog.csdn.net/qq_40028324/article/details/80035129 1.文档流 - 所有的元素默认情况下都是在文档流中存在的- 文档流是网页的最底层- 元素在文档流中的特点:- 块元素1.默认宽度是父元素的全部2.默认高度被内容(子元素)撑开3.在页面中自上而下垂直排列- 内联元素1.默认高度和宽度都被内容撑开2.在页面中自左向右水平排列,如果一行不足以容下所有的元素则换到下一行继续从左向右 2.浮动- 使用float来设置元素的浮动-

web前端css定位position和浮动float

最近做了几个项目:配资公司,ecmal商城等,客户对前台要求都很高.所以,今天来谈谈css的基础,以及核心,定位问题. div.h1或p元素常常被称为块级元素.这意味着这些元素显示为一块内容,即“块框”.与之相反,span和h3等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”. 在这种情况下,这个框称为无名块框,因为它不与专门定义的元素相关联. 块级元素的文本行也会发生类似的情况.假设有一个包含三行文本的段落.每行文本形成一个无名框.无法直接对无名块或行框应用样式,因为没有可以

css浮动定位到底什么鬼?

实际操作浮动的时候经常出现一头雾水的情况,趁着写博客理一理: 所谓浮动定位也就是定义一个元素相对于它本来的位置出现在哪里.以下几点是浮动定位中需要记住的: 1.浮动会先将元素在正常文档流中删除,但是该元素依然影响布局.例如,relative的元素原来所占的空间还在. 2.浮动元素的外边距始终不变. 3.元素被浮动后首先生成一个块级框,然后为自己指定一个包含块. 4.浮动的原则有:float之间不覆盖:边界来自包含块:float之间顺着排:尽可能挤一挤:尽可能顶一顶: 5.超出包含块的方法:使用负

归纳篇(一)CSS的position定位和float浮动

近期会更新一系列博客,对基础知识再度做个巩固和梳理. 一.position定位 (一):position的属性 1.absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位: 2.relative:生成相对定位的元素,相对于其所在普通的文档流位置进行定位: 3.static:默认值,没有定位,元素出现在正常的文档流中; 4.fixed:老IE不支持,和absolute一致,相对于窗口进行定位,当出现滚动条时,不随着滚动而滚动: 5.sticky:(CSS3)有兼

css定位之浮动定位

浮动定位可以是原本垂直排列的块级元素,变成水平排列 1浮动元素 float:left 或者float:right  这些浮动会直接碰到父容器的边界为止. 2设置了浮动的元素,元素会脱离标准文档流中,但是元素内容会仍然占据文档流中的空间 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>float定位</title

如何使用html的定位position和浮动float

语法: position:static (静态定位) |  absolute (绝对定位) |  fixed (固定定位) |  relative  (相对定位) 属性参数: static:静态定位,无特殊定位,对象遵循HTML定位规则(html的默认状态) absolute:绝对定位,对象脱离文档流,需要使用 left.top.right.bottom等属性进行精确地定位.可以运用z-index属性进行层叠.(使用绝对定位时如果出现元素飘动,没有在你指定的位置上,可以在元素的父级元素上使用相对