HTML上半部分布局及对于文本流认知

一、文本流

document flow => normal flow
本质:普通流/常规流

流:水流 河流 泥石流 => 自上而下(连续的),连续的
文档:页面主体

文档流:一个连续具有逻辑上下的页面整体
理解:出现在页面中的显示内容,均可以理解为在文档流中(片面的)

概念:将窗体自上而下分成一行一行,块级元素从上至下、行内元素在每行中从左至右的顺序依次排放元素。

BFC:Block formatting context

概念:由block-level box参与布局,1.左右位置,根据BFC布局方向,由margin左或右控制位置,值叠加
                 2.垂直位置,由margin-top控制位置,相邻block margin发送值重叠(取大值)
         3.同一容器(同一层次中)内外互不影响

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>文档流</title>
    <style type="text/css">
        .box {
            width: 200px;
            height: 200px;
            background-color: orange;
            /*默认BFC水平布局方向:从左至右*/
            /*margin-left: 50px;*/

            /*更改BFC水平布局方向:从右至左*/
            float: right;
            margin-right: -50px;
        }
        .b1 {
            width: 200px;
            height: 200px;
            background: red;
            margin-left: 10px;
        }
        .bb1, .bb2 {
            width: 50px;
            height: 50px;
            background: cyan;
            float: left;
        }
        .bb1 {
            margin-left: 20px;
            margin-right: 20px;
        }
        .bb2 {
            margin-left: 20px;
        }
    </style>
</head>
<body>
    <!-- b1与b2 同在一个区域 | bb1与bb2 同在一个区域 -->
    <div class="b1">
        <div class="bb1"></div>
        <div class="bb2"></div>
    </div>
    <div class="b2">

    </div>

    <div class="box"></div>
</body>
</html>

BFC演示

二、浮动布局

一、浮动布局解决经典案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>解决经典案例</title>
    <style type="text/css">
    .box {
        width: 300px;
        border: 1px solid black;
    }
    .box img {
        width: 150px;
        float: left;
    }
</style>
</head>
<body>
    <div class="box">
    <img src="bg.gif" alt="">
</div>
</body>
</html>

解决经典案例

二、基本语法

float:left | right

三、浮动布局产生的问题

简述:不做清浮动情况下父级在没有设置高度的是无法被子级撑开。

产生浮动布局问题的原因为: 通常文档流中,子标签在父级标签未设置高度的情况下,会撑开父级的高度,但是脱离文本流后字标签不会撑开父级的高度,另外不完全脱离文本流是由浮动导致的但如果不清除浮动的话其子级不会撑开父级的高度。

四、清浮动

目的:是为了让父级再次获得合适的高度。

① 浮动的父级设置高度
super {
height: npx;
}

简述:手动给父级重新设置高度。
② 浮动的父级设置overflow
super {
overflow: hidden;
}

简述:在出现浮动问题的前一个标签设置overflow:hidden可以将不必要的内容隐藏下来。
③ 浮动的父级兄弟设置clear
brother {
clear: left | right | both;
}

简述:可以给产生浮动问题的标签的父级标签设置clear是因为可以在问题之后的兄弟标签去处理问题。
④ 浮动的父级伪类清浮动
super:after {
content: "";
display: block;
clear: left | right | both;
}

简述:通过给自身设置清除浮动来解决浮动带来的问题。

三、流式布局

一、流式布局解决的经典案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>流式布局</title>
    <style type="text/css">
    .wrap {
        max-width: 1200px;
        min-width: 800px;
        width: 90%;
        height: 600px;
        margin: 0 auto;
        background-color: orange;
    }
</style>
</head>
<body>
    <div class="wrap"></div>
</body>
</html>

流式布局经典案例

二、基本属性

① 百分比设置 %
② 窗口比设置 vw | vh
③ 字体控制 em | rem

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>流式布局</title>
    <style type="text/css">
        html, body {
            width: 100%;
            margin: 0;
        }
        .box {
            /*百分比流式*/
            /*参考最近父级*/
            width: 90%;
            /*max-width: 1000px;*/
            /*min-width: 600px;*/

            /*窗口比*/
            /*width: 90vw;*/
            /*max-width: 1000px;*/
            /*min-width: 600px;*/

            height: 300px;
            background-color: orange;
            margin: 0 auto;
        }
        .b {
            width: 100px;
            height: 100px;
            background-color: red;
            border-radius: 50%;
            float: left;
        }

        body {
            font-size: 30px;
        }
        /*.sup {
            font-size: 20px;
        }*/
        .txt {
            /*1em = 16px*/
            /*font-size: 16px;*/
            /*font-size: 0.4em;*/
            /*总结:em为最近设置字体大小的父级规定的字体大小*/
            font-size: 1rem;
            /*总结:rem为html字体大小*/
        }
        html {
            font-size: 50px;
        }
    </style>
</head>
<body>
    <!-- 流式布局: -->
    <!-- 目的:让布局脱离固定值限制,可以根据页面情况改变相应发生改变 -->
    <div class="box">
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
         <div class="b"></div>
     </div> 

     <div class="sup">
         <div class="txt">文本</div>
     </div>
</body>
</html>

流式布局基本属性演示

四、定位布局

一、定位布局的经典案例

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>定位布局应用</title>
    <style type="text/css">
        .box {
            width: 150px;
            height: 300px;
            background-color: orange;
            /*定位了*/
            position: fixed;
            /*打开了布局方位*/
            left: 10px;
            top: calc(50vh - 150px);
        }
    </style>
    <!-- 基本语法: -->
    <!-- 1.通过position设置定位是否开启 -->
    <!-- static:静态,未定位(默认值) -->
    <!-- relative: 相对定位, 未脱离文档流 -->
    <!-- absolute: 绝对定位, 完全脱离文档流 -->
    <!-- fixed: 固定定位, 完全脱离文档流 -->
    <!-- 2.定位开启后,四个定位方位便会开启,且四个方位均参与布局 -->
    <!-- 如果发生冲突,左右取左,上下取上 -->
</head>
<body>
    <!-- 目的(应用):让目标(要被布局的)标签在指定参考系下任意布局 -->
    <div class="box"></div>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
</body>
</html>

定位布局经典案例

二、定位布局的几大基本属性:

1、static:为定位布局的默认状态,可以不用去了解。

2、relative:相对定位(不完全脱离文本流,但是其原有的位置不会发生改变只是显示区域会发生改变并且其显示的内容区域是根据其自己的原有位置作为参考系去移动。)

注意:相对定位布局再布局的时候是通过移动与其原有位置上下左右来的移动显示区域当同时取上下时取上,同时取左右时取左。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>相对定位</title>
    <style type="text/css">
        div {
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .b2 {
            background-color: orange;
        }

        /*不做定位操作*/
        /*b1,b2均在文档流中,b1的布局会影响到b2*/
        /*.b1 {
            margin-top: 30px;
            margin-bottom: 30px;
        }*/

        /*固定定位后*/
        .b1 {
            /*1.未脱离文档流*/
            /*BFC规则下margin布局,上盒子依旧会影响下盒子*/
            /*margin-top: 30px;
            margin-bottom: 30px;*/

            /*开启定位*/
            position: relative;
            /*具有定位方位*/
            /*2.方位布局下,上盒子不会影响下盒子*/
            left: 30px;
            top: 30px;

            /*margin-top: 30px;*/
            /*3.参考系:相对定位参考系为自身原有位置*/
            /*right: 30px;*/

            /*4.left=-right top=-bottom,同时存在,左右取左,上下取上*/
            /*left: -30px;
            right: -100px;*/
        }
    </style>
</head>
<body>
    <div class="b1"></div>
    <div class="b2"></div>
</body>
</html>

相对定位演示

3、obsolute:绝对定位(完全脱离文本流,会将原有的位置清除掉然后以与其最近的已经定位的父级作为参考系通过上下左右以父级的原始位置来移动位置并且不会影响其它的盒模型的布局)

注意:在移动位置的时候如果同时上下移动是以上为准,同时以左右移动时以左为准。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>绝对定位</title>
    <style type="text/css">
        div {
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .b2 {
            background-color: orange;
        }
        .b1 {
            /*1.完全脱离文档流*/
            position: absolute;
            /*总结:不在文档流中占位,也永远不会撑开父级高度,永远不会影响兄弟布局,显示层高于文档流层*/
            /*打开定位方位*/
            margin-left: 100px;
            margin-top: 100px;
            /*总结:margin依旧可以影响自身布局,但不会影响父级即兄弟布局*/

            /*2.参考系:?*/
            left: 100px;
            right: -100px;

            /*3.同时存在,左右取左,上下取上*/
        }

    </style>
    <style type="text/css">
        .sup {
            width: 500px;
            height: 500px;
            background-color: orange;
        }
        .sub {
            width: 200px;
            height: 200px;
            background-color: red;
        }

        .sup {
            /*采用了盒模型布局*/
            margin: 0 auto;
            /*需求:sub应该参考sup,sup需要定位:相对|绝对|固定*/
            /*相对定位好处:父级不会脱离文档流,满足所有的盒模型布局*/
            /*position: relative;*/
            /*绝对定位好处:如果自身已经采用绝对定位布局了,那么子级一定参考自身进行定位*/
            position: absolute;
            margin: 100px 100px;
            /*注:如果父级只是辅助子级进行绝对定位,那么一定优选相对定位,因为绝对定位会产生新的BFC,导致盒模型布局会受影响*/
            /*注:margin-top|left依旧起作用,只是sup已经脱离文档流,不会获得到body宽度,所以auto没有参考值*/
        }
        .sub {
            /*2.参考坐标系为最近的定位父级*/
            position: absolute;
            left: 0;
            right: 0;
            top: 0;
            /*父级: sup(未定位) -> body(未定位) -> html(文档窗口)*/

            /*3.同时存在,左右取左,上下取上*/
        }
    </style>
</head>
<body>
    <!-- <div class="b1"></div>
    <div class="b2"></div> -->
    <div class="sup">
        <div class="sub"></div>
    </div>
</body>
</html>

绝对定位演示

4、fixed:固定定位(完全脱离文本流,以窗口为参考系去移动显示的区域并且在移动窗口的移动条时其位置固定并不会跟着移动.)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>固定定位</title>
    <style type="text/css">
        .sup {
            width: 500px;
            height: 500px;
            background-color: orange;
            margin: 0 auto;
        }
        .sub {
            width: 200px;
            height: 200px;
            background-color: red;
        }
        .sup {
            position: relative;
            /*position: absolute;*/
            left:-200PX;
        }
        .sub {
            position: fixed;
            left: 0;
            /*top: 0;*/
            bottom: 0;
        }
    </style>
</head>
<body>
    <!-- 固定定位 -->
    <!-- 1.完全脱离文档流 -->
    <!-- 2.参考系为文档窗口 -->
    <!-- 3.左右取左,上下取上 -->
    <div class="sup">
        <div class="sub"></div>
    </div>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
</body>
</html>

固定定位演示

原文地址:https://www.cnblogs.com/ageliu/p/9715261.html

时间: 2024-10-01 04:03:48

HTML上半部分布局及对于文本流认知的相关文章

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

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

float和position:absolute脱离文本流的区别

float和position:absolute脱离文本流的区别原创 paediatrician 最后发布于2016-09-19 10:43:05 阅读数 5375 收藏展开 文档流:将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,块状元素独占一行,内联元素不独占一行: CSS中脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档流的元素不存在而进行定位. 需要注意的是,使用float脱离文档流时,其他盒子会无视这个元素,但其他盒子内的文本依然会为这

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的

标准文本流

标准文本流的三个属性 1.默认按顺序排列,若后面空间不足,文章内容会自动换行. 2.高低不一样会默认底端对齐. 3.如果想没有缝隙必须紧密连接,如果编辑代码时有多余空格网页就会有一个空格留位. 如何脱离文本流(按照html划分可叫文本级和容器级) 想让块级和行内相互转化可以使用display,display四个属性none/inline/block/inline-block 1)none 可以用于悬浮下拉菜单,为默认值,用于隐藏. 2)inline 用于把块级变成行内. 3)block 用于把行

Linux文本流

Linux文本流 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 文本流 文件用于数据的存储,相当于一个个存储数据的房子.我们之前说,所谓的数据是0或者1的序列,但严格来说,Linux以字节(byte)来作为数据的单位,也就是说这个序列每八位(bit)为一个单位(八位二进制对应的十进制范围为0到255).使用ASCII编码,可以将这样一个字节转换成为字符.所以,在Linux中,我们所说的数据,完全可以用字符表达出来,也就是说文

第33课 文本流和数据流

1. Qt中的文件类型 (1)文本文件:文件内容是可读的文本字符 (2)数据文件:文件内容是直接的二进制数据 2. QFile类 (1)直接支持文本文件和数据文件的读写 ①qint64 read(char* data, qint64 maxSize); ②QByteArray read(qint64 maxSize); ③qint64 write(const char* data, qint64 maxSize); ④qint64 write(const QByteArray& byteArra

css对于float返回文本流的做法

在设计中常常会遇到这样的问题:当容器内部有float样式时,容器的高度不会被撑开. 下面介绍两种方法解决上面的问题 第一种:在浮动元素后面加一个clear: both:比较常见的方法. <style type="text/css"> .left{float:left;} .right{float:right;} .clear{clear:both;} </style> <div> <div class="left">

文本流与二进制流

一. 基本知识: 1. 二进制文件与文本文件的区别:    将文件看作是由一个一个字节(byte) 组成的, 那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了,这就是两者的区别:接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同.如果按照文本方式打开,在打开的时候会进行tra

linux系统知识 - 文本流&amp;管道

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 参考链接 http://www.cnblogs.com/vamei/archive/2012/09/14/2683756.html http://www.cnblogs.com/vamei/archive/2012/10/10/2715398.html 文本流原理 万物皆文本 -> 万物皆文本流 当unix执行一个程序的时候,会自动打开三个流,stdin.stdout.stder