21.5 CSS 网页布局方式

2023-11-18

image-20230907210458236

  1. 网页布局方式

网页布局方式: 是指浏览器对网页中的元素进行排版的方法.

常见的网页布局方式包括:
* 1. 标准流(文档流/普通流)布局: 这是浏览器默认的排版方式.
     元素按照其在文档中的位置依次排列, 可以使用CSS的盒模型属性进行水平和垂直布局.

* 2. 浮动布局: 通过设置元素的float属性, 使元素脱离标准流, 并根据浮动方向排列.
     常用于实现多列布局或图文混排等效果.

* 3. 弹性布局(Flexbox): 通过CSS的flex属性, 实现灵活的盒模型布局.
     可以方便地调整元素的尺寸, 顺序和对齐方式, 适用于构建响应式布局.

* 4. 网格布局(Grid): 通过CSS的grid属性, 将网页划分为行和列的网格, 实现复杂的布局.
     可以精确地控制元素在网格中的位置和尺寸.

* 5. 定位布局: 通过CSS的position属性, 将元素相对于其父元素或文档进行定位.
   可以实现绝对定位, 相对定位和固定定位等效果.

以上是常用的网页布局方式, 开发者可以根据具体需求选择合适的布局方式来实现网页的排版效果.

2. 标准流排版

标准流排版方式 --> 水平排版/垂直排版两种.
在CSS中将元素分为三类, 块级元素/行内元素/行内块级元素.
元素是行内或行内块级元素就会水平排版.
元素是块级元素那么就会垂直排版.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>standard streams</title>
    <style>
        div, h1, p {
            border: 1px solid black;
        }

        span, strong, b {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <div>d1</div>
    <h1>h1</h1>
    <p>p1</p>
    <br>
    <span>span</span><strong>strong</strong><b>b</b>
</body>
</html>

image-20230903012850380

标准流排版换行现象: 两个行内块级标签, 在同一个行显示, 使用maring属性隔开.
在对网页拉伸收缩的时候, 如果第一行的页面没有可现实的位置会自动换行到第二行去显示.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>standard streams2</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            display: inline-block;

        }

        .box1 {
            background-color: red
        }

        .box2 {
            background-color: blue;
            margin-left: 1200px;
        }
    </style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>

GIF 2023-9-3 1-32-43

3. 浮动流排版

浮动流排版方式: 浮动流是一种半"脱离标准流"的排版方式, 只能水平排版, 设置某个属性的左对齐获取右对齐.
在浮动流中不区分块级元素/行内元素/行内块级元素, 并且都可以输入值宽高, 水平排版.
浮动流没有居中对齐, 不能使用margin: auto;

3.1 浮动元素

float属性: 是CSS中用于设置元素浮动的属性.
通过设置float属性, 可以让元素脱离文档流并按照指定的方向浮动.

常用属性值:
- left: 元素向左浮动, 其他内容会围绕它右侧排列.
- right: 元素向右浮动, 其他内容会围绕它左侧排列.
- none: 元素不浮动, 恢复到默认文档流中的排列方式.

注意事项:
- 浮动元素的宽度默认会收缩为其内容的宽度. 可以通过设置width属性来控制宽度.
- 浮动元素会脱离文档流, 可能会导致父元素的高度塌陷, 需要通过清除浮动或使用父元素的clearfix技巧来解决.
- 浮动元素之间也可能相互影响, 可以通过设置clear属性来清除浮动影响.

浮动属性通常用于实现网页中的多列布局, 图文混排等需求.
然而, 由于浮动属性的一些复杂特性和对文档流的影响, 现代网页布局倾向于使用弹性布局(Flexbox)和网格布局(Grid)来替代浮动布局.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            display: inline-block;

        }

        .box1 {
            background-color: red;
            float: left;

        }

        .box2 {
            background-color: black;
            float: right;
        }
    </style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>

GIF 2023-9-3 18-00-25

3.2 浮动元素的脱标现象

当元素浮动后, 它会脱离标准流.
这意味着其他非浮动元素会忽略浮动元素的存在, 而像它不存在一样布局.
浮动元素的脱标会对其他元素的位置和布局产生影响.

如果一个浮动元素之前的元素是左对齐浮动, 而后面的元素没有浮动, 那么浮动元素会覆盖非浮动元素的部分.
如果被覆盖的区域包含文字, 文字会自动调整位置以显示出来, 这是所谓的'文字环绕'现象.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动元素脱标</title>
    <style>

        .box1 {
            height: 100px;
            width: 100px;
            background-color: red;
            float: left;
        }

        .box2 {
            height: 150px;
            width: 150px;
            background-color: #62ff00;
        }
    </style>
</head>
<body>
    <div class="box1">1</div>
    <div class="box2">2</div>
</body>
</html>

2023-09-03_00002

3.3 浮动元素排序规则

浮动元素排序规则:
* 1. 当相同方向上的浮动元素出现时, 先浮动的元素会在前面, 后浮动的元素会显示在它之后. 
     这意味着先浮动的元素会覆盖后浮动的元素.

* 2. 如果浮动元素在不同方向上浮动, 比如一个元素向左浮动, 另一个元素向右浮动, 它们会沿着各自的方向浮动.
     左浮动的元素会尽可能地靠左浮动, 右浮动的元素会尽可能地靠右浮动.

* 3. 浮动元素浮动后的位置是由它在标准流中的位置确定的.
     浮动元素会脱离标准流, 不再占据父元素的空间, 并根据浮动方向找到可容纳它的最近的父元素或祖先元素, 然后尽量靠近该容器的左侧或右侧.
     如果有多个浮动元素在同一行上浮动, 则它们会根据出现的顺序进行布局. 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float4</title>
    <style>
        /* box1 box2 box13 按顺序依次向左浮动. */
        .box1 {
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }

        .box2 {
            width: 150px;
            height: 150px;
            background-color: blue;
            float: left;
        }

        .box3 {
            width: 200px;
            height: 200px;
            background-color: orange;
            float: left;
        }
    </style>
</head>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
</body>
</html>

image-20230903181742410

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float4</title>
    <style>
        div {
            height: 100px;
            width: 100px;
            background: aqua;
            border: 1px solid;
        }

        .box1, .box2 {
            float: left
        }

        .box3, .box4 {
            float: right;
        }
    </style>
</head>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
</body>
</html>

image-20230903182350489

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float5</title>
    <style>
        div {
            border: 1px solid black;
        }

        .box1, .box3 {
            width: 100px;
            height: 100px;
            background-color: red;
            float: left;
        }

        .box2, .box4 {
            width: 150px;
            height: 150px;
            background-color: aqua;
        }
    </style>
</head>
<body>
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
</body>
</html>

image-20230903184827499

3.4 浮动元素帖靠现象

当父元素的宽度能够容纳所有浮动元素时. 它们会并排显示.
当父元素宽度不足以容纳所有浮动元素时, 浮动元素会从最后一个浮动元素开始往前贴边, 直到贴到父元素为止.
如果宽度还是不够, 浮动元素就会被强制换行, 不再往前排列.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float6</title>
    <style>
        .father {
            width: 500px;
            height: 500px;
            border: 1px solid
        }

        .box1 {
            height: 300px;
            width: 100px;
            background-color: red;
            float: left;
        }

        .box2 {
            height: 100px;
            width: 100px;
            background-color: #00ff22;
            float: left;
        }

        .box3 {
            height: 100px;
            width: 300px;
            background-color: #fff200;
            float: left;
        }
    </style>
</head>
<body>
<div class="father">
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</div>
</body>
</html>

GIF 2023-9-4 2-56-04

3.5 浮动元素的字围现象

字围现象: 当浮动元素覆盖没有浮动的元素时, 浮动元素上方的文字会自动调整布局, 围绕浮动元素的边界显示, 以避免被覆盖.
这种文字围绕效果在网页设计中非常常见, 可以实现各种有趣的页面布局和视觉效果.
它使得文字可以自然地适应浮动元素的形状和位置, 增强了页面的美观性和可读性.

需要注意的是, 文字围绕效果仅适用于浮动元素覆盖的区域.
如果浮动元素覆盖的区域超过文字的宽度, 文字可能被截断或部分隐藏.
在设计中, 需要合理设置浮动元素的大小和位置, 以确保文字能够适当地围绕显示.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float7</title>
    <style>

        div {
            width: 100px;
            height: 100px;
            background-image: url("https://s2.loli.net/2022/02/16/dMpgZnxFSe93kL1.png");
            border: 1px solid black;
            float: left;
        }

        p {
            width: 500px;
            height: 300px;
            background-color: orange;
            border: 1px solid black;
        }

    </style>
</head>
<body>
<div></div>
<p> 阴阳 (中国古代哲学思想)
    阴阳是一个简朴而博大的中国古代哲学.
    阴阳哲理自身具有三个特点: 统一, 对立和互化.
    在思维上它是算筹(算数)和占卜(逻辑)不可分割的玄节点.
    自然界中生物的基因, 人工智能中的二进制都充分彰显了阴阳的生命力.
    阴阳是中国古代文明中对蕴藏在自然规律背后的, 推动自然规律发展变化的根本因素的描述,
    是各种事物孕育, 发展, 成熟, 衰退直至消亡的原动力, 是奠定中华文明逻辑思维基础的核心要素.
    概括而言, 按照易学思维理解, 其所描述的是宇宙间的最基本要素及其作用, 是伏羲易的基础概念之一.

    阴阳相冲化万物, 世间万物, 皆有阴阳之道. 即可从万物万事之间领悟到一丝阴阳之理.
    古人与后人都对其领悟, 拥有不同的见解, 因其万物存于阴阳之道, 所以古今在各个学术中都有其影.
    阴阳一词, 代表了很多的意思和道理, 简单笼统分为: 阴阳对立, 阴阳相冲, 阴阳转换. </p>
</body>
</html>

image-20230904030251251

3.6 浮动排版练习

从上至下, 垂直方向使用标准流, 水平方向使用浮动流.

2023-09-04_00007

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>float8</title>
    <style>
        body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form,
        fieldset, legend, input, textarea, p, blockquote, th, td {
            margin: 0;
            padding: 0;
        }

        .header {
            width: 980px;
            height: 100px;
            margin: 0 auto;
        }

        .header .logo {
            width: 250px;
            height: 100px;
            background-color: pink;
            float: left;

        }

        .header .language {
            width: 150px;
            height: 50px;
            background-color: skyblue;
            float: right;
        }

        .header .nav {
            width: 650px;
            height: 50px;
            background-color: purple;
            float: right;
        }

        .content {
            width: 980px;
            height: 400px;
            margin: 10px auto;

        }

        .content .aside {
            width: 320px;
            height: 400px;
            background-color: yellow;
            float: left;
        }

        .content .article {
            width: 650px;
            height: 400px;
            float: right;
        }

        .content .article .articleTop {
            width: 650px;
            height: 350px;

        }

        .content .article .articleBottom {
            width: 650px;
            height: 40px;
            background-color: #c08413;
            margin-top: 10px;
        }

        .content .article .articleTopLeft {
            width: 400px;
            height: 350px;
            float: left;
        }


        .content .article .articleTopLeft .news1 {
            width: 400px;
            height: 200px;
            background-color: #f920a6;
        }

        .content .article .articleTopLeft .news2 {
            width: 400px;
            height: 140px;
            background-color: #00c0eb;
            margin-top: 10px;
        }

        .content .article .articleTopRight {
            width: 240px;
            height: 350px;
            background-color: #aaca32;
            float: right;
        }

        .footer {
            width: 980px;
            height: 40px;
            background-color: tomato;
            margin: 10px auto;
        }

    </style>
</head>
<body>

<!--头部-->
<div class="header">
    <!--logo的位置-->
    <div class="logo"></div>
    <!--语言选择-->
    <div class="language"></div>
    <!--    导航条-->
    <div class="nav"></div>
</div>

<!--内容-->
<div class="content">
    <!--旁白, 内容左侧这一块-->
    <div class="aside"></div>

    <!--文章, 右边内容右侧这一大块-->
    <div class="article">
        <!--文章, 右边内容的上面这块-->
        <div class="articleTop">
            <!--文章, 右边内容的上面这块的左边-->
            <div class="articleTopLeft">
                <div class="news1"></div>
                <div class="news2"></div>
            </div>
            <!--文章, 右边内容的上面这块的右边-->
            <div class="articleTopRight"></div>
        </div>
        <!--文章, 右边内容的下面这块-->
        <div class="articleBottom"></div>
    </div>

</div>

<!--尾部-->
<div class="footer"></div>

</body>
</html>

3.7 塌陷

在标准流中, 如果元素的内容超出了父元素的高度, 父元素会自动增加高度以适应子元素的内容.
而在浮动流中, 浮动的元素不会撑起父元素的高度, 导致父元素的高度塌陷, 这种现象称为"塌陷""高度塌陷".
高度塌陷会导致页面布局出错.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>prop up</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            background-color: aqua;
        }

        .box1 p {
            background-color: burlywood;
            width: 100px;
        }

        .box2 p {
            background-color: skyblue;
            width: 100px;
        }

        p {
            border: 1px inset black;
        }
    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
</div>

<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>
div标签占一行, 高度由p标签撑.

image-20230906151607309

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>collapse</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            background-color: aqua;
        }

        .box1 p {
            background-color: burlywood;
            width: 100px;
        }

        .box2 p {
            background-color: skyblue;
            width: 100px;
        }

        p {
            border: 1px inset black;
            float: left;
        }
    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
</div>

<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>
p标签浮动之后脱离了标准流之后, 高度没有支持了, 就看不见了. 所有的p标签浮动到第一行中.
我们需要的布局是一个div的内容占用一行, 而不是全部挤在一行.

2023-09-06_00007

当子元素全部浮动后, 它的父元素将不再承载该浮动元素的高度, 所以父元素的高度会变为0.
当一个元素的高度为0, 它的可见内容也将被隐藏.

3.8 margin折叠

CSS模型中规定: 所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之.
毗邻的定义为: 同级或者嵌套的盒元素, 并且它们之间没有非空内容, Padding或Border分隔。
嵌套也属于毗邻, 所以在样式表中优先级更高, 子元素的margin会覆盖外层父元素定义的margin.

如果父元素的第一个子元素设置了上边距(margin-top)但没有遇到有效的边框(border)或内边距(padding), 
那么上边距会不断向上传递, 影响到父元素的上边缘, 甚至影响到更高层的祖先元素.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>margin top</title>
    <style>
        * {
            margin: 0;
        }

        .box1 {
            /* 当两个相邻的元素都设置了margin-top和/或margin-bottom时, 
               如果两个边距中的一个为正, 另一个为负, 则会进行抵消, 得到一个非零的边距. */
            /*margin-top: -20px;*/
            background-color: red;
        }

        .box2 {
            margin-top: 20px;
            background-color: aqua;
        }

        .box1 p {
            background-color: burlywood;
        }

        .box2 p {
            background-color: skyblue;
        }

        p {
            width: 100px;
            float: left;
        }


    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
</div>

<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>
第一个div没有高度, 没有边距与边框, box2向上级需找, 找打body, 与其发送margin折叠, 导致body向下塌20px.

image-20230906151806458

为了防止这种情况发生, 可以给父元素设置一个有效的边框或内边距, 以限制第一个子元素的上边距扩散.
通过给父元素添加边框或内边距, 可以有效地控制子元素的边距, 并防止其传递给更高层的祖先元素.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>margin top 2</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        body {
            border-top-style: solid;
            /*padding-top: 1px;*/
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            margin-top: 21px;
            background-color: aqua;
        }

        .box1 p {
            width: 100px;
            background-color: burlywood;
        }

        .box2 p {
            width: 100px;
            background-color: skyblue;
        }

        p {
            float: left;
        }


    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
</div>

<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>
第二个div设置margin-top, 没有与body的margin发生折叠.

image-20230906152459537

3.9 清除塌陷

3.9.1 清除塌陷1

给父元素设置一个高度.
在开发中, 能不写高度就不写高度, 这个方式使用很少.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Clear the collapse</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            height: 21px; /* 设置div标签的行高 撑起div标签 */
            background-color: red;
        }

        .box2 {
            background-color: aqua;
        }

        .box1 p {
            background-color: burlywood;
            width: 100px;
        }

        .box2 p {
            background-color: skyblue;
            width: 100px;
        }

        p {
            float: left;
        }
    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
</div>

<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>
第一个div被撑起, 第二个div贴着第一个div标签的底部.
第二个div内的p标签浮动后贴近第二个div标签的顶部.

image-20230906154529917

3.9.2 清除塌陷2

clear属性: 用于指定一个元素是否允许其他元素浮动在它的左侧, 右侧或两侧.
它可以应用于非浮动元素, 用于清除前面元素的浮动影响.

常用属性值:
- none: 默认值, 允许其他元素浮动在其旁边.
- left: 不允许左侧有浮动元素.
- right: 不允许右侧有浮动元素.
- both: 不允许左右两侧有浮动元素.

注意事项: clear属性只对前面的浮动元素有效, 而不会影响后面的浮动元素.
通常在包含浮动元素的父元素中使用clear属性来解决浮动问题.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Clear the collapse 2</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            clear: both; /* 第二个div标签不允许左右两侧有浮动元素. */
            background-color: aqua;
        }

        .box1 p {
            width: 100px;
            background-color: burlywood;
        }

        .box2 p {
            width: 100px;
            background-color: skyblue;
        }

        p {
            float: left;
        }
    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
</div>

<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>
第一个div盒子内的p标签全部浮动后, 第一个盒子塌陷.
这时, 设置第二个盒子左右两侧不能有浮动元素, 它就出现在第一行p标签的下方.
第二的div标签内的p标签继续浮动, 则贴在第二个div标签下面.

image-20230906155216258

3.9.3 清除塌陷3

隔墙法: 是一种在前端开发中用于实现样式布局的技巧, 它主要通过在盒子之间添加额外的块级元素, 然后设置clear属性来产生隔离效果.
在隔墙法中, 有两种常见的方法: 外墙法和内墙法.

外墙法: 是在两个盒子之间添加一个额外的块级元素, 并设置其clear属性为both, 这样可以阻止后面的盒子浮动到前面的盒子的旁边.
        在外墙法中, 第三个盒子通常会通过设置第二个盒子的高度来实现竖直的间隔效果, 而第一个盒子无法使用margin-bottom来实现间隔.

内墙法: 是在第一个盒子的所有子元素中添加一个额外的块级元素, 并设置其clear属性为both, 这样可以阻止后面的盒子浮动到第一个盒子的旁边.
        在内墙法中, 可以在第二个盒子中使用margin-top来产生竖直的间隔效果, 并且可以在第一个盒子中使用margin-bottom来实现间隔.

区别: 外墙法不能撑起第一个盒子的高度, 而内墙法可以撑起第一个盒子的高度.

需要注意的是, 隔墙法直接通过修改HTML代码来实现样式布局, 而在前端开发中通常鼓励将结构和样式分离,
使用CSS来实现样式布局, 这样可以提高代码的维护性和可复用性.
3.9.3.1 外墙法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Clear the collapse 3</title>
  <style>
    * {
      padding:0;
      margin:0;
    }
    .box1 {
      background-color: red;
    }

    .box2 {
      background-color:aqua;
    }

    .box1 p {
      width: 100px;
      background-color: burlywood;
    }

    .box2 p {
      width: 100px;
      background-color:skyblue;
    }

    p {
        float:left;
    }

    .wall {
        clear:both;
    }
    .h20 {
        height: 20px;
    }
  </style>
</head>
<body>
    <div class="box1">
      <p>p1</p>
      <p>p2</p>
      <p>p3</p>
    </div>

    <div class="wall h20"></div>
    <div class="box2">
      <p>p4</p>
      <p>p5</p>
      <p>p6</p>
    </div>
</body>
</html>

image-20230906160124711

3.9.3.2 内墙法
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Clear the collapse 4</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            background-color: aqua;
        }

        .box1 p {
            width: 100px;
            background-color: burlywood;
        }

        .box2 p {
            width: 100px;
            background-color: skyblue;
        }

        p {
            float: left;
        }

        .wall {
            clear: both;
        }

        .h20 {
            height: 20px;
            background-color: #9dff00;
        }
    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <div class="wall h20"></div>
</div>


<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>

image-20230906161635912

3.9.4 清除塌陷4

使用伪元素 ::after 创建一个看不见的块级元素, 并通过设置高度为0, 可见性为隐藏以及清除浮动来隐藏子元素.

'.box1'元素的内部后面生成一个看不见的块级元素, 它的高度是0, 不占用任何空间, 
并且对该元素设置了'visibility: hidden', 从而使其在页面上不可见.
同时, 通过设置'clear:both'可以清除盒子周围的浮动影响.

这种方法常用于解决使用浮动元素时父元素无法包裹子元素的问题, 或者清除浮动影响的场景. 
需要注意的是, 设置'content:""'表示伪元素的内容为空, 但不能省略content属性, 否则伪元素可能不起作用.

在IE6中会存在兼容性问题, 伪元素可能不起作用.
为了解决这个问题, 可以给第一个盒子添加 "*zoom:1;" 
/*兼容ie6*/
.box1 {
*zoom:1;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Clear the collapse 5</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .box1 {
            background-color: red;
        }

        .box2 {
            background-color: aqua;
        }

        .box1 p {
            background-color: burlywood;
            width: 100px;
        }

        .box2 p {
            background-color: skyblue;
            width: 100px;
        }

        p {
            float: left;
        }

        .box1::after {
            content: ""; /* content 不能省略, 值可以为空 */
            display: block; /* 设置为块级元素 */
            height: 0;
            visibility: hidden; /* 页面上不可见 */
            clear: both;
        }
    </style>
</head>
<body>
<div class="box1">
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
</div>

<div class="box2">
    <p>p4</p>
    <p>p5</p>
    <p>p6</p>
</div>
</body>
</html>

清除塌式通用方式: 建立html页面时, 先提前写好处理浮动带来的影响的css代码.
.clearfix:after {
        content: '';
        display: block;
        clear: both;
    }
之后只要标签出现了塌陷的问题就给该塌陷的标签加一个class="clearfix"属性即可.

4. overflow属性

overflow属性: 常用于盒子的样式设置.

它的作用可以分为以下几点:

* 1. 盒子的文本内容过长可以正常显示:
     当盒子中的文本内容超出了盒子的宽度或高度时, 设置'overflow: hidden;'可以将超出部分隐藏起来, 不显示在页面上.
     这样可以确保文本内容在盒子内部正常显示, 而不会溢出盒子. 这种用法经常用于实现文本截断效果.

* 2. 清除浮动:
     通过在盒子中应用'overflow: hidden;'可以清除内部浮动元素对外部元素布局的影响.
     设置'overflow: hidden;'可以触发 BFC(块级格式化上下文), 从而使得盒子可以包裹浮动元素, 防止浮动溢出.
     此外, 在清除浮动时有时也需要添加额外的hack'*zoom: 1;', 以兼容 IE6.

* 3. 防止父元素塌陷(不对body生效):
     当一个盒子嵌套了子元素并且子元素设置了'margin-top', 此时父元素的高度可能会坍塌, 
     导致父元素高度不包含子元素的'margin-top'部分, 从而导致布局问题.
     通过在父元素中设置'overflow: hidden;', 可以触发 BFC, 使得父元素的高度能够正常包含子元素的'margin-top', 解决父元素塌陷的问题.

总结起来, 'overflow: hidden;'的作用包括隐藏盒子内容的溢出部分, 清除浮动以及防止父元素塌陷.
需要注意的是, 在使用'overflow: hidden;', 可能会影响到盒子的滚动和溢出内容的可见性.

4.1 清除浮动

设置'overflow: hidden;'可以触发 BFC(块级格式化上下文), 从而使得盒子可以包裹浮动元素, 防止浮动溢出.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Clear the collapse 6</title>
  <style>
      * {
        padding: 0;
        margin:0;
      }
      .box1 {
          background-color: red;
          overflow:hidden;
      }
      .box2 {
        background-color:aqua;
      }

      .box1 p {
        background-color:burlywood;
        width: 100px;
      }
      .box2 p {
        background-color:skyblue;
        width: 100px;
      }
      p {
          float: left;
      }
  </style>
</head>
<body>
    <div class="box1">
      <p>p1</p>
      <p>p2</p>
      <p>p3</p>
    </div>

    <div class="box2">
      <p>p4</p>
      <p>p5</p>
      <p>p6</p>
    </div>
</body>
</html>
元素浮动后没有脱离div.

image-20230907001716175

4.2 防止父标签塌陷

通过给.box1添加overflow: hidden;可以防止父元素.box1的塌陷问题.

当子元素.box2设置了margin-top: 100px; , 由于普通流布局的特性, 子元素的margin-top会向上合并到父元素中,
导致父元素的高度不包含子元素的margin-top部分, 从而出现塌陷的现象.

通过给父元素.box1添加overflow: hidden;可以触发BFC(块级格式化上下文)特性, 使父元素形成一个独立的布局上下文, 从而解决塌陷问题.
父元素的高度会正常包含子元素的margin-top部分, 确保布局的准确性.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>overflow</title>
  <style>
    .box1 {
      width: 200px;
      height: 200px;
      background-color:red;
      overflow:hidden;  /*父标签塌陷*/
    }

    .box2 {
      width: 100px;
      height: 100px;
      background-color: #62ff00;
      margin-top:100px;
    }
  </style>
</head>
<body>
    <div class="box1">
      <div class="box2"></div>
    </div>
</body>
</html>

GIF 2023-9-6 18-05-36

4.3 显示溢出

一个块级标签没有设置固定大小,内容会将占多大, 标签也会对应的被撑多大.
如果固定了标签的大小, 内容过多会溢出属性范围.
overflow:hidden; 内容溢出, 超出部分不显示.
overflow:scroll; 上下滚动条形式查看内容.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS练习</title>

    <style>
        .c1 {
            border: 1px solid red;
        }

        .c2 {
            height: 100px;
            width: 100px;
            border: 1px solid red;
        }

        .c3 {
            height: 50px;
            width: 50px;
            border: 1px solid red;
            overflow: hidden;
        }

        .c4 {
            height: 80px;
            width: 80px;
            border: 1px solid red;
            overflow: scroll;
        }
    </style>

</head>

<body>
<p class="c1">三更灯火五更鸡, 正是男儿读书时.
    黑发不知勤学早, 白首方悔读书迟.</p>
<br>
<p class="c2">三更灯火五更鸡, 正是男儿读书时.
    黑发不知勤学早, 白首方悔读书迟.</p>
<br>
<p class="c3">三更灯火五更鸡, 正是男儿读书时.
    黑发不知勤学早, 白首方悔读书迟.</p>
<br>
<p class="c4">三更灯火五更鸡, 正是男儿读书时.
    黑发不知勤学早, 白首方悔读书迟.</p>
</body>
</html>

image-20230907002237468

4.4 圆形头像练习

图片是正方形, 它的父标签是一个圆形的div标签. 
正方形在圆形中显示, 超出部分不显示. 
通过设置: overflow: hidden; 显示.

可爱2022年过年喜庆情侣头像卡通一对两张跨年春节最新版的

image-20230906191708260

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>

    <style>
        body {
            margin: 0;
            background-color: #68eeb8;
        }

        .box1 {
            height: 150px;
            width: 150px;
            border-radius: 50%;
            border: 2px solid red;
            margin: 10px auto;
            overflow: hidden; /* 超出父元素部分不显示 */
        }

        .box1 img {
            width: 100%;
        }

        .box2 {
            height: 200px;
            width: 200px;
            margin: 0 auto;
        }

        input:focus { /* input框获取焦点(光标在输入框内)*/
            background-color: #ff8c00;
        }
    </style>
</head>

<body>
<div class="box1">
    <img src="https://s2.loli.net/2022/02/17/GocsZRTq67JiabX.jpg" alt="">
</div>

<div class="box2">
    <p>
        <label for="d3">用户: </label>
        <input type="text" id="d3" name="username">
    </p>
    <p>
        <label for="d4">密码: </label>
        <input type="password" id="d4" name="password">
    </p>
    <p>
        <input type="submit" value="登录">
    </p>
</div>
</body>
</html>

5. 定位布局排版

定位布局排版是指通过position属性来控制网页元素在页面中的位置和尺寸.
常用的定位布局包括相对定位, 绝对定位和固定定位.
position属性: 用于表示一个元素相对于其父元素的位置.

常用属性值:
* 1. "static"(默认): 元素按照正常的文档流进行布局, 并忽略top, bottom, left, right和z-index属性.
* 2. "relative": 元素相对于其正常位置进行定位, 可以使用top, bottom, left, right属性来指定其偏移量.
* 3. "absolute": 元素相对于其最近的定位祖先(如果没有则相对于文档的根元素_进行定位,
      可以使用top, bottom, left, right属性来指定其偏移量.
* 4. "fixed": 元素相对于视口进行定位, 即使页面滚动, 元素的位置也保持不变.
* 5. "sticky": 元素在滚动到特定位置时固定在屏幕上, 可以通过设置top, bottom, left, right属性来指定固定位置的偏移量.

请注意, 某些position值(如absolute和fixed)会导致元素脱离正常的文档流, 可能会对其他元素的布局产生影响.
因此, 在使用"position"属性时, 请确保您理解其工作原理并正确设置其他相关属性.

5.1 偏移量属性

top, bottom, left, right是CSS中用于控制元素定位的属性.
它们通常与position属性配合使用, 用于指定元素相对于其定位父元素(或视口)的偏移量.

- top属性: 指定元素上边缘相对于其定位父元素(或视口)顶部的偏移量.
- bottom属性: 指定元素下边缘相对于其定位父元素(或视口)底部的偏移量.
- left属性: 指定元素左边缘相对于其定位父元素(或视口)左侧的偏移量.
- right属性: 指定元素右边缘相对于其定位父元素(或视口)右侧的偏移量.

这些属性的值可以是负值, 百分比, 像素等, 具体取决于您的需求和使用情况.

5.2 静态定位

静态定位: 是position属性的默认值, 用于定义元素在正常文档流中的位置.
具体来说, 静态定位的元素不会受到top, bottom, left, right和z-index属性的影响.

当一个元素采用静态定位时, 它会按照HTML文档流的顺序在页面上进行布局.
这意味着它会出现在其在HTML代码中的位置, 并且其他元素会根据该元素的位置进行调整.

静态定位的元素可以通过设置margin, padding和width等属性来影响其周围的元素, 但不会影响其他元素的布局.
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>position</title>
    <style>
        body {
            margin: 0;
        }

        .box {
            position: static;
            width: 200px;
            height: 100px;
            background-color: yellow;
            /* 指定div向下偏移100px, 失效的设置 */
            top: 100px;
        }
    </style>
</head>
<body>

<div class="box">
    此元素采用静态定位.
</div>


</body>
</html>

image-20230907022607741

5.3 相对定位

相对定位: 相对于标签原来的位置做移动.

top: 50px;  从上往下(写负数方向相反).
left: 50px; 从左往右(写负数方向相反).
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相对定位</title>

    <style>
        body {
            margin: 0;
        }

        .c1 {
            height: 100px;
            width: 100px;
            background-color: red;

            position: relative;
            /*相对定位标签从static变成relative它的性质从原来没有定位的标签变成已经定位过的标签*/
            left: 50px; 
            top: 50px;
        }
    </style>
</head>

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

image-20230907022923499

5.4 绝对定位

基于父标签定位, 一般在不知道页面其他标签位置和参数, 只给一个父标签的参数时使用.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>position 3</title>

    <style>
        body {
            margin: 0;
        }

        .box1 {
            height: 50px;
            width: 100px;
            background-color: #6ee2a2;
        }

        .box2 {
            height: 50px;
            width: 100px;
            background-color: #86cfe5;
            position: absolute; /*相对于父标签做移动*/
            top: 50px;
            left: 100px;
        }

    </style>

</head>

<body>
<div class="box1">div
    <div class="box2">div>div</div>
</div>
</body>
</html>

2023-09-07_00007

5.5 固定定位

固定在浏览器的某一个位置, 页面动, 标签始终固定.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>position 4</title>
    <style>
        body {
            margin: 0;
        }

        .c1 {
            width: 70px;
            height: 25px;
            background-color: #f3d92d;
            border: 3px solid orange;

            /* 以浏览器为参照点*/
            position: fixed;
            bottom: 500px;
            right: 10px;
        }
    </style>
</head>
<body>
<div style="height: 500px; background-color: red"></div>
<div style="height: 500px; background-color: aqua"></div>
<div style="height: 500px; background-color: greenyellow "></div>

<div class="c1">充值VIP</div>
</body>
</html>

GIF 2023-9-7 4-00-46

5.6 指定位置固定

当滚动到达指定阈值时, 元素位置固定.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>position 5</title>
    <style>
        .box1 {
            background: #eee;
            width: 400px;
            height: 1000px;
            margin: 120px auto;
        }

        .box2 {
            position: sticky;
            background: green;
            /* 离上边距还有100px时固定 */
            top: 100px;
        }

    </style>
</head>
<body>
<div class="box1">
    <div class="box2">123</div>
</div>

</body>
</html>

GIF 2023-9-7 4-28-06

6. 脱离文档流

在传统的HTML文档中, 元素会按照文档流的方式从左到右, 从上到下进行排布.
这意味着元素会根据其在HTML结构中的位置来决定它们在页面上的布局.

然而, 当使用浮动(float), 绝对定位(absolute)或固定定位(fixed)这三种定位方式时, 元素会脱离文档流, 导致对文档布局的影响.

6.1 浮动

浮动: 使用float属性可以使元素浮动到其容器的左侧或右侧.
浮动的元素会脱离文档流, 并且周围的内容会环绕在其周围.
如果移动一个浮动元素, 原来位置被占用, 则会产生文档流的变化.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document flow test</title>
    <style>
        #d1 {
            height: 100px;
            width: 100px;
            background-color: greenyellow;
            float: right;
        }

        #d2 {
            background-color: red;
            height: 100px;
            width: 100px;
        }
    </style>
</head>
<body>
    <div id="d1">div1</div>
    <div id="d2">div2</div>

</body>
</html>
div1与div2是并排的关系, 在div1由左边浮动到右边后, div1的文档位置空出, div2占用原本属于div1的位置.

GIF 2023-9-7 16-10-11

6.2 相对定位

div1与div2是并排的关系, 在div1由左边浮动到右边后, div1的文档位置空出, div2没有占用原本属于div1的位置.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document flow test 2</title>
    <style>
        body {
            margin: 0;
        }

        div {
            height: 200px;
            width: 400px;

        }

        .box1 {
            background-color: red;
            position: relative;
            left: 500px; /*向右移动500px*/
        }

        .box2 {
            background-color: #77ff00;
        }
    </style>
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>

image-20230907161443681

6.3 绝对定位

绝对定位: 使用'position: absolute'可以将元素相对于其最近的定位祖先进行定位.
绝对定位的元素会完全脱离文档流, 不再占据原来的空间, 并且不会影响其他元素的布局.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>绝对定位</title>

    <style>
        body {
            margin: 0;
        }

        .c1 {
            height: 200px;
            width: 400px;
            background-color: #c5c5f1;
        }

        .c2 {
            height: 200px;
            width: 400px;
            background-color: red;
            position: absolute;
            left: 500px;
        }

        .c3 {
            height: 200px;
            width: 400px;
            background-color: salmon;
        }

    </style>
</head>
<body>
    <div class="c1">div1</div>
    <div class="c2">div2</div>
    <div class="c3">div3</div>
</body>
</html>
div1与div2, div3是并排的关系, 在div2由左边浮动到右边后.
div2的文档位置空出, div3占用原本属于div2的位置.
绝对路径脱离文档流, 原来的位置被占用.

image-20230907162129189

6.4 固定定位

固定定位: 使用'position: fixed'可以将元素固定在视口的指定位置, 不会随页面滚动而移动.
固定定位的元素也会完全脱离文档流, 不影响其他元素的布局.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>固定定位</title>
    <style>
        body{
            margin: 0;
        }
        #d1{
            height: 200px;
            width: 400px;
            background-color: #c5c5f1;
        }
        #d2{
            height: 200px;
            width: 400px;
            background-color: red;

            position:fixed;
            bottom: 10px;
            right: 20px
        }
        #d3{
            height: 200px;
            width: 400px;
            background-color: salmon;
        }
    </style>
</head>
<body>
    <div id="d1">div1</div>
    <div id="d2">div2</div>
    <div id="d3">div3</div>
</body>
</html>
div1, div2, div3是并列的关系, 在div2由左边浮动到右边后, div2的文档位置空出, div3占用原本属于div2的位置.

image-20230907163009104

7. z-index模态框

模态框: 是一个相对常见的概念, 通常指的是在网页或应用程序中使用的模态框(Modal)作为页面的一部分, 用于显示特定内容或交互.
百度的帐户登入页面时三层模态框结构, 使用z-index: 0-100, 数值越高, 层级越高.
* 1. 最底部正常文本(z-index=0)   离用户最远.
* 2. 黑色透明区(z-index=99)      中间层.
* 3. 白色注册区域(z-index100)    离用户最近.

image-20230907163533223

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <style>
        body {
            margin: 0;
        }

        .cover {
            position: fixed;
            /* 铺满屏幕 */
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            /* 设置颜色 */
            background-color: rgba(0, 0, 0, 0.4);
            /* 模态框等级 */
            z-index: 99;
        }

        .modal {
            height: 300px;
            width: 400px;
            background-color: white;
            text-align: center;
            position: fixed;
            /* 模态框等级 */
            z-index: 100;

            /* 顶点 水平 垂直 居中 */
            left: 50%;
            top: 50%;
            /* 中心居中 */
            margin-left: -200px;
            margin-top: -150px;
        }
    </style>
</head>
<body>
<div>底层页面内容</div>
<div class="cover"></div>
<div class="modal">
    <h1>登入页面</h1>
    <p>username: <input type="text"></p>
    <p>password: <input type="text"></p>
    <button>登录</button>
</div>
</body>
</html>

image-20230907164926109

8. opacity透明度

opacity属性: 用于指定HTML元素的不透明度.
取值范围: 01, 0表示完全透明, 1表示完全不透明.

opacity和rgba都可以实现元素的透明效果, 但它们有一些区别:
* 1. 影响范围: opacity会同时影响元素以及其所有子元素的透明度, 
     而rgba只会影响元素的颜色透明度, 不会影响其它属性, 例如字体的透明度.
* 2. 透明度叠加: 对于具有嵌套元素的情况, opacity的透明度是相互叠加的, 子元素的透明度会继承父元素的透明度.
     而rgba颜色值可以根据需求单独设置不同元素的透明度, 不会相互叠加.

综上所述, opacity主要用于控制整个元素及其子元素的透明度, 而rgba可以控制元素的任何属性的透明度, 如背景颜色, 文本颜色等.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>opacity</title>
    <style>
        /* 设置字体透明度 */
        .c1 {
            color: rgba(0, 0, 0, 0.5);
        }

        .box1 {
            opacity: 0.5;
            color: rgb(0, 0, 0);
        }
    </style>
</head>
<body>
<p class="c1">111</p>
<div class="box1">
    <p>222</p>
    <div><p>333</p></div>
</div>

</body>
</html>

image-20230907170747303

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

21.5 CSS 网页布局方式 的相关文章

  • 如何删除标题中的粗体?

    我有一个标题 h1 THIS IS A HEADLINE h1 如何使短语 THIS IS 不加粗 其余部分不做任何更改 我在文本装饰中找不到任何相关标签 标题看起来很粗体 因为它大尺寸 如果您已应用粗体或想要更改行为 您可以执行以下操作
  • 我可以使用 ASP.NET WebForms 母版页在每个内容页中包含不同的 javascript/css 文件吗?

    我有几个使用相同母版页的内容页 它们并不都需要包含在相同的 javascript 和 css 文件中 tag 是否可以更改内容来自内容页面的标签 确实如此 但我建议采取一些不同的做法 我在关闭正文标签的正上方放置了一个内容占位符 然后我填充
  • ng-include 和 ng-view 不同时加载

    下面是我的应用程序的结构 很简单 页眉和页脚是非常小的文件 而主页上的 ng view 要大得多 当我进入该页面时 我注意到了这一点 首先加载两个 ng include 然后 ng view 出现 页脚被推到底部 页脚闪烁大约 0 1 秒
  • Quill 公开可用的 CSS

    我最初的目的是从 PrimeFaces TextEditor 组件输出的 HTML 生成 PDF 文件 而该组件又基于 免费开源 WYSIWYG 编辑器 Quill 为此 我需要获取 TextEditor 组件生成的 HTML 将其包含在
  • 是否可以设置输入文本值的样式?

    我想知道是否可以设置输入框值的样式 such http jsfiddle net aCwhY as
  • 重新创建 CSS3 过渡三次贝塞尔曲线

    在 CSS3 过渡中 您可以将计时函数指定为 cubic bezier 0 25 0 3 0 8 1 0 在该字符串中 您仅指定曲线上点 P1 和 P2 的 XY 因为 P0 和 P3 始终分别为 0 0 0 0 和 1 0 1 0 根据苹
  • Gmail 无法在电子邮件上正确呈现字体

    我已经建立了一个 html 电子邮件并使用了 Google 字体 我已使用以下方法将字体包含在 head 标签中 if mso endif 并使用字体 即我这样做了
  • 在流体设计中将元素的宽度调整为其高度的百分比,反之亦然? [复制]

    这个问题在这里已经有答案了 我正在制作响应式设计 无论屏幕尺寸是什么 它都必须保持其元素的比例 高度与宽度 所以我不知道任何元素的像素大小 并且我只能以 工作 我可以将宽度或高度设置为浏览器大小的百分比 但我不知道如何设置其他属性值 仅使用
  • 使用 :hover 作为元素的内联样式(使用 HTML/CSS/php)[重复]

    这个问题在这里已经有答案了 可能的重复 如何将 a hover 规则嵌入到文档中间的样式属性中 https stackoverflow com questions 131653 how do i embed an ahover rule i
  • 如何在文本区域中使用除“文本插入符号”之外的透明字体?

    我有一个简单的文本区域 我需要制作透明字母 同时允许文本插入符可见 当我应用以下规则时 我会得到隐形插入符 textarea background transparent opacity 0 当我键入不可见文本时 我需要看到文本插入符移动
  • 将父容器扩展至 100% 高度以容纳浮动内容

    我正在为一个客户项目而苦苦挣扎 我的全部divs 没有绝对定位 height 100 for html body 和容器divs 但静态内容未达到其内容 在 910 像素处 我可以将溢出属性更改为auto 并且背景会继续向下到内容的末尾 但
  • CSS:水平滚动时背景不存在

    好的 我的背景设置如下 HTML div div CONTENT HERE div div CSS container background url image gif content width 800px margin auto 因此
  • div 边框上的内边距

    我想在 css 边框上添加填充 将其拉入 div 内 远离边缘 使用 css 可以吗 css3 很好 webkit 这是设计 我通过将一个 div 放在一个 div 中 然后给内部 div 一个边框来做到这一点 我想让标记尽可能精简 所以如
  • 如何使用 a-href 标签链接回文件夹? [复制]

    这个问题在这里已经有答案了 好吧 我在文件夹中有一个页面 该页面称为 jobs html 该文件夹简称为 jobs 它是我的 网站 文件夹的子文件夹 在 main 文件夹的主目录中是我的 home html 文件 当我尝试做的时候 a hr
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 如何为背景图像添加边距?

    我想向背景图像添加边距 以便将其与屏幕中间保持距离 但将其添加到该类中会为整个主体添加边距 body poppage background url Imagenes tip3 png 50 200px no repeat E2E4E9 我怎
  • 如何并排放置两个

    我有两个 div 我想要并排放置的元素 如下所示 navigation content 我想要导航 div 根据需要尽可能大 但不能更大 收缩以适应行为 内容 div 然后应该填充剩余的空间 如何在不指定百分比 例如 20 80 的情况下使
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d
  • 带显示块的SPAN

    和默认有什么区别 div 元素和默认值 span 元素与display block HTML 元素的有效性和语义存在差异 否则它们是相同的 div and span两者都被定义为通用容器 在 HTML 方面没有更深层次的含义 一个默认为块显

随机推荐

  • android webview增强版,对原生webview的一些解决方案

    MWebView 根据 Tamicer JsWebView 修改定制 为什么要使用WebView 随着app业务的不断深入发展 只靠着原生代码来堆砌功能是不现实 毕竟开发的时长会增加 而且同时需要开发iOS和Android两套 并且 如果在
  • 华为OD机试单词加密(Python)

    题目 想象一下 你有一段英文句子 这句子里有很多的单词 每两个单词之间用一个空格隔开 现在 你要给这些单词打上一个 秘密标签 怎么打标签呢 如果单词里有元音字母 就是 a e i o u 大写的也算哦 那么把这些元音字母都换成星号 如果单词
  • Java类型转换工具类(十六进制—bytes互转、十进制—十六进制互转,String—Double互转)

    数据类型转换工具类 author cyf public class NumConvertUtil bytes 转16进制字符串 param bArray return public static final String bytesToHe
  • 动态规划经典例题

    01背包问题 有n个重量和价值分别为wi vi的物品 从这些物品中挑选出总重量不超过W的物品 求所有挑选方案中价值总和的最大值 限制条件 1 lt n lt 100 1 lt wi vi lt 100 1 lt W lt 10000 首先使
  • jetson nano 安装pytorch装不上

    可以尝试 先把依赖装上在安装whl文件 安装依赖的指令如下 sudo apt get install libopenblas base libopenmpi dev
  • 主成分分析PCA算法:为什么去均值以后的高维矩阵乘以其协方差矩阵的特征向量矩阵就是“投影”?

    这是从网上看到的PCA算法的步骤 第一步 分别求每列的平均值 然后对于所有的样例 都减去对应的均值 第二步 求特征协方差矩阵 第三步 求协方差的特征值 显示全部 关注者 1 218 被浏览 78 113 关注问题写回答 添加评论 分享 邀请
  • dncnn图像去噪_深度学习图像去噪发展概述

    深度学习图像去噪发展概述 由于深度学习 特别是卷积神经网络 CNN 在图像识别等领域取得了较好的成果 近年来 基于深度学习的图像去噪方法也被提出并得到了发展 2008年 Viren Jain等提出用CNN处理自然图像的去噪问题 21 得到了
  • 命令登录sql

    mysql h u p 例如 mysql h 10 38 162 22 u wd P 6657 p h 这里是host u 这里是username P 这里是port p 这里是 password
  • 在PyPI上发布自己的Python包(一)

    文章目录 发布PyPI 简单 0 GitHub 1 环境 2 准备 2 1 注册PyPI账号 2 2 安装环境 3 开始 3 1 新建文件夹 3 2 上传 3 3 测试 发布PyPI 简单 0 GitHub https github com
  • C++day2作业(2023.8.22)

    1 定义一个学生的结构体 包含学生的姓名 年龄 成绩 性别 学生的成绩 姓名 定义为私有权限 定义一个学生类型的结构体变量 设置公有函数用于给学生的成绩和名字进行赋值 结构体中的函数 结构体中声明 结构体外定义 include
  • UVa 12504 Updating a Dictionary

    Problem uva onlinejudge org index php option com onlinejudge Itemid 8 page show problem problem 3948 题意 貌似是模拟 Source Cod
  • 解读云原生的2021:抢占技术C位,迎来落地大爆发

    来源 InfoQ 作者 褚杏娟 2021年 云原生迎来黄金时代 本文是 2021 InfoQ 年度技术盘点与展望 系列文章 重点聚焦云原生领域在 2021 年的重要进展 动态 希望能帮助你准确把握 2021 年云原生领域的核心发展脉络 在行
  • r语言写九九乘法表并保存为txt文件

    r语言写九九乘法表并保存为txt文件 代码 for i in 1 9 for j in 1 i cat j x i i j t file 九九乘法表 txt append TRUE cat n file 九九乘法表 txt append T
  • Nacos-Server用户权限控制无效解决方案

    场景 nacos server默认账户是 nacos nacos 此用户权限太大 有时候为了安全起见会建立多个用户 给予不同的角色权限 但建立用户后发现权限不起作用 分析 nacos默认不开启权限控制 如果想使用权限控制功能 需要在 con
  • etp服务器怎么连接共享文件夹,Everything共享文件操作方法

    以前我们要想共享一些文件给朋友 最常见的方法就是通过网盘来完成 但是这样的共享并不是朋友们都喜欢的 其实利用著名的搜索工具Everything 我们就可以在电脑中划出一部分区域 从而快速搭建一个用于分享的服务器平台 这样我们可以将自己发现的
  • visual studio code怎么用root/sudo调试远程程序?

    vs code是款微软出品不错的编辑器 可以远程编辑 处理服务器上的文件 支持c php python java等各种语言 在调试c 程序 的时候遇到了一个问题 编辑代码是用的普通用户 但调试的时候需要用root启动 如果启动调试出现要求密
  • Python 安装模块后找不到模块以及Python代码自动补全设置的一个思路

    起因是在做一些小玩意时安装了一些模块 但是运行时却找不到模块 于是多次重装VScode里边的Python部分 导致VScode自动补全也被玩掉了 查了很久的才终于搞回来 先把找到的一个有用链接放这 免得找不到了如何使用Visual Stud
  • 使用labelme打标签,详细教程

    做图像语义分割 打标签时需要用到labelme这个工具 我总结了它的详细使用教程 目录 一 安装labelme工具 二 文件位置关系 三 labelme工具 四 labelme工具的快捷键 五 代码 将标签文件转为统一固定格式 六 总结 一
  • Jdk8 之 Stream流详细用法(一)

    本篇文章参考云深i不知处的文章 原文链接 https blog csdn net mu wind article details 109516995 一 概述 Stream 是 Java8 中处理集合的关键抽象概念 它可以指定你希望对集合进
  • 21.5 CSS 网页布局方式

    网页布局方式 网页布局方式 是指浏览器对网页中的元素进行排版的方法 常见的网页布局方式包括 1 标准流 文档流 普通流 布局 这是浏览器默认的排版方式 元素按照其在文档中的位置依次排列 可以使用CSS的盒模型属性进行水平和垂直布局 2 浮动