前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CSS布局基础(待补充完整)

CSS布局基础(待补充完整)

作者头像
努力的Greatiga
发布于 2022-09-26 07:39:05
发布于 2022-09-26 07:39:05
39000
代码可运行
举报
运行总次数:0
代码可运行

1 文档流

要了解css的布局,就要先了解什么是文档流。文档流就是HTML元素的一种排列规则。

而正常文档流就是在不用样式控制之下,html元素的默认排版方式。它的规则如下:

  • 自上而下排列,每个块元素独占一行,行内元素自左向右排列,不会独占一行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>独占一行</div>
从左向右<span></span><img />

这是在不使用 样式的请况之下正常排列方式。倘若使用样式改变了某些元素的位置,那么就称为脱离文档流。也正是因为如此,才能有丰富的页面布局方式。否则大家都只是遵循上述两种方式,那就太枯燥单一了。

2 浮动布局

float属性,一般情况下元素默认是不浮动的,一旦添加该属性,元素就会向右或者向左浮动。看例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  header {
    border: 2px rebeccapurple solid;
  }
  p {
    border: 3px greenyellow solid;
  }
  .float {
    border: 1px red solid;
    /* height: 100px; */
  }
  .float div:nth-child(1) {
    border: 1px blue solid;
    float: left;
  }
  .float div:nth-child(2) {
    border: 1px black solid;
    float: left;
  }
  .float div:nth-child(3) {
    border: 1px green solid;
    float: left;
  }

</style>
<body>
  <header>
    <span>行内元素</span><span>不会导致高度塌陷</span>
    <p>这是正常流文字文字</p>
  </header>
  <div class="float">
    <div>box1</div>
    <div>box2</div>
    <div>box3</div>
    <p>这是浮动文字</p>
  </div>
</body>
</html>

经过对比可以发现,在不使用浮动之前,三个盒子都按照块元素的正常文档流排列方式,并且父元素的高也随着他们的内容大小变化。而一旦使用了浮动元素。会发现几点变化:

  • 三个盒子的块元素变为了行内元素的排列方式,按照浮动属性值自左向右
  • 父元素的高度不在随他们变化,直接没有了高度,当然他们依然相对于父元素排列,只是没有将其撑开

这里也引入一个问题

2-1 父元素高度坍塌

出现于上述的那种情况,因为那三个盒子脱离了文档流。自己排布,他们虽然相对于父元素排布,但却不是父元素的正常文档流的内容,所以无法将其撑开,从而导致父元素的高度回缩,也就是坍塌。

2-2 文字环绕浮动

虽然浮动元素脱离了文档流,但并不是不对正常流文档元素产生影响。上述例子中,虽然没有把父元素撑开,但是与它同级的兄弟元素并不会直接跑到它上面去,而是在它之下按照一下两个规则排列

2-2-1 若是浮动元素后紧跟 -> h1 ~ h6、p

这一类段落标签会自动换行,并且自带内边距

  • 这一类标签在页面中会紧贴在浮动元素下面 ( 这个紧贴不是边框紧贴!而是段落标签中的文字紧贴浮动元素 ),依然独占一行,并且里面的文字内容不会自动排到最左边,而是相对于最右边的浮动元素的后面

2-2-2若是浮动元素后紧跟 -> 其他块元素

这一类无论是否有内容,都不会排到浮动元素后面,而是直接相对于父元素按照正常文档流排列,好像是直接无视了之前的浮动元素一样,认为自己就是父元素之下的第一个子元素

  • 同样若是这里面的文字与浮动元素有交集,那么也是按照之前的方式排列

当然内边距,外边距,边框这些属性在浮动元素之间,仅仅是在它们之间是生效的。与其他正常文档流不产生效果

2-3 清除浮动

嗯?为什么还要清除浮动?直接不浮动就行了啊?

其实这是给浮动元素之后的元素用的,并不是给浮动元素本身用的;之所以要这样,是因为紧跟在浮动元素后面的普通元素都会受到影响。就比如上述说的两种紧跟浮动元素之后排列的方式。我能不能让它不要忽视浮动元素,而是排在浮动元素之后呢?能不能让段落标签不这么紧贴着,而是以边框为基准排在浮动元素后面呢?答案是肯定的。

  • **使用 claer: both; clear: left; clear: right;**就可以
  • 使用之后紧跟在浮动元素之后的就不会乱排布,而是按正常文档流排布,不过是排在了浮动元素后面,就好似把浮动元素看成了普通的行内元素一样,不会无视它,也不会覆盖它了。

3 定位布局

这也是脱离文档流的一种方式,它通过显式的设置定位坐标及大小来实现

3-1 position:fixed

这个比较简单,是相对于浏览器而言,导航栏通常就这么用;直接脱离文档流,别的元素将会无视它并且挤上来

3-2 position:relative

相对于原来的位置定位,原来位置就是正常文档流的位置。而且周边元素不会挤上来,看似好像是它已经走了,但是原来的位置还完好无损的留着。

3-3 position:absolute

绝对定位,也是直接脱离文档流,别的元素将会无视它并且挤上来

3-4 position:static

默认定位,也是每一个元素的初始定位,也就是正常文档流

4 BFC

这个东西其实不是一个规范的知识点,它是一个规则概念。为了解决普通元素与普通元素之间,普通元素与浮动元素之间产生的属性混乱问题

它的定义就是,Formatting context(格式化上下文) 是 W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。

4-1 触发 BFC

  • body 根元素
  • 浮动元素:float 除 none 以外的值
  • 绝对定位元素:position (absolute、fixed)
  • display 为 inline-block、table-cells、flex
  • overflow 除了 visible 以外的值 (hidden、auto、scroll)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
四. css 布局之 float
块元素: 1、块元素不在独占页面的一行 2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开
小海怪的互联网
2020/09/22
7710
【面试题解】CSS布局,定位布局,浮动布局,BFC,IFC,FFC,GFC
标准文档流 指的是元素排版布局过程中,元素会默认自动从左往右,从上往下的 流式排列方式 。并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。
一尾流莺
2022/12/10
1.6K0
【面试题解】CSS布局,定位布局,浮动布局,BFC,IFC,FFC,GFC
HTML和CSS常见问题整理
对于IE5.x和6来说,在怪异模式中width等于content、左右padding和左右border。
用户7657330
2020/08/14
1.5K0
HTML和CSS常见问题整理
前端学习(20)~css布局(十三)
relative、absolute、fixed这三个属性,可以结合 z-index 来设置层级。
Vincent-yuan
2020/03/18
5310
HTML & CSS页面布局之定位
默认情况下,HTML元素都在标准流中呈现和展示。我们之前把元素分为块级元素,行内元素,行内块级元素,他们的特性是块级独占一行,行内和行内块级可以在一行内共存,这些特性都是针对标准流的。总结一下就是,标准流中元素只能在水平或垂直方向上排版。如果元素是块级元素, 那么就会垂直排版,如果元素是行内元素/行内块级元素, 那么就会水平排版。
用户5997198
2020/05/12
5.6K0
脱离文档流分析(转)
  block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度。block元素可以设置width、height、margin、padding属性;
山河木马
2019/03/05
1.4K0
脱离文档流分析(转)
CSS基础布局
CSS布局 确定页面的大致结构,页面分多少块,每块的位置。每个部分怎么把该部分撑起来。 * 早期以table为主(简单) * 之后 以技巧性的布局为主(难) * 现在有flexbox/grid(偏简单) * 响应式布局 在移动端大行其道的时代 是必备的 * table表格布局 * float浮动 + margin * inline-block布局 (用起来方便,但是小问题较多) * flexbox布局 盒模型 如下图所示: 宽度和高度 指的是content的宽度和高度 margin指的是 距离上一个元素
lesM10
2019/08/27
3K0
CSS补充
文档流(定位流,普通流,浮动流) 1、普通流定位 static(默认方式) 普通流定位,又称为文档流定位,是页面元素的默认定位方式 页面中的块级元素:按照从上到下的方式逐个排列 页面中的行内元素:按照
ymktchic
2022/01/18
6360
CSS补充
css基础
    行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。
超蛋lhy
2018/08/31
1.6K0
css基础
关于BFC理解
在进入BFC话题前,先来捋一下常见的定位方案,定位方案是控制元素的布局,主要有三种常见的方案:
Jimmy_is_jimmy
2019/07/31
1K0
HTML+CSS高级
第一章 一、内联块     display: inline-block;      1、特征:                1.1     块级元素在一行显示     (得到内联元素的属性)           1.2     内联元素支持宽高     (得到块的属性)           1.3     没有宽度的时候,内容撑开宽度     (得到内联元
用户1148399
2018/01/09
5.9K0
CSS基础
CSS 语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明。 1 2 3 4 5 6 7 8 9 '''         selector {                   property: value;                   property: value;              ...  property: value                     }           ''' 例如: 1 h1 {color:red; font-size:14px
用户1214487
2018/01/24
2.1K0
CSS基础
如何理解css中的float
最近一段时间一直在为一个即将上线的新站进行一些前端开发。自然,对CSS的使用是必不可少的了。我们在CSS 中很多时候会用到浮动来布局。常见的有 float:left 或者 float:right 。简单点来说,前者是左浮动(往左侧向前边的非浮动元素飘,全是飘得元素的话,就按照流式来浮动从左到右,放不下则换行),后者是右浮(往右飘)动。
全栈程序员站长
2021/12/21
1.2K0
如何理解css中的float
[CSS]深入浅出float
float原本是用于“文字环绕元素”的效果,但是,平时我们经常在布局上用float属性。那么,使用float时,需要注意些什么呢?
娜姐
2022/01/20
4810
[CSS]深入浅出float
详解 清除浮动 的多种方式(clearfix)
版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn.net/FE_dev/article/details/68954481
FEWY
2019/05/29
1.6K0
前端之HTML和CSS
  HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网页的语言,这种语言由一个个的标签组成,用这种语言制作的文件保存的是一个文本文件,文件的扩展名为html或者htm。
汪凡
2019/03/01
4.4K0
前端之HTML和CSS
css-浮动
一个浮动盒会向左或向右移动,直到其外边(outer edge)挨到包含块边沿或者另一个浮动盒的外边。如果存在行盒,浮动盒的外top(边)会与当前行盒的top(边)对齐。如果没有足够的水平空间来浮动,它会向下移动,直到空间合适或者不会再出现其它浮动了
bamboo
2019/01/29
1.4K0
css-浮动
浮动、定位
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
8570
页面布局规划
   1)块级元素会在文档中单独占有一行  ----------------在文档流中  在位置   即从上到小排列
wfaceboss
2019/04/08
7800
页面布局规划
由position属性引申的关于css的进阶讨论(包含块、BFC、margin collapse)
写这篇文章的起因是源于这篇文章:谈谈面试与面试题 中关于position的讨论,文中一开始就说的这句话: 面试的时候问个css的position属性能刷掉一半的人这是啥情况…… 其实这问题我本来打算的是可以顺着一路扯到normal flow、containing block、bfc、margin collapse,base line,writing mode,bidi,这样一路问下去的,奈何第一个问题(亲我真的只问了position有哪些取值和行为啊)就悲剧了…… 说到position,那么稍微对c
Sb_Coco
2018/05/28
1.1K0
相关推荐
四. css 布局之 float
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验