布局方式总结

浮动布局

float 属性

功能:用于定位和格式化内容,例如让图像向左浮动到容器中的文本那里。

可以设置以下值之一:

  • left - 元素浮动到其容器的左侧
  • right - 元素浮动在其容器的右侧
  • none - 元素不会浮动(将显示在文本中刚出现的位置)。默认值。
  • inherit - 元素继承其父级的 float 值

clear属性

功能:用于指定元素可以浮动于被清除元素的旁边以及哪一侧。

最常见用法是在元素上使用了float属性之后。

可以设置以下值之一:

  • none - 元素不会被向下移动以清除浮动。默认值
  • left - 元素被向下移动以清除左浮动
  • right- 元素被向下移动以清除右浮动
  • both - 元素被向下移动以清除左右浮动
  • inherit - 元素继承其父级的 clear 值
  • inline-start - 元素被向下移动以清除其包含块的起始侧浮动
  • inline-end - 元素被向下移动以清除其包含块的结束侧浮动

例:

<style>

        .box {

            width: 500px;

            height: 500px;

            border: 1px solid black;

        }

        .box1 {

            width: 200px;

            height: 200px;

            border: 1px solid black;

            background-color: red;

            float: right;

        }

       .box2 {

            width: 200px;

            height: 200px;

            border: 1px solid black;

            background-color: blue;

            /*  float: right;

            clear: both;*/

        }

        .box3 {

            width: 200px;

            height: 200px;

            border: 1px solid black;

            background-color: green;

            float: left;

        }

</style>

......

<body>

        <div class="box">

            <div class="box1">这是第一个div</div>

            <div class="box2">这是第二个div</div>

            <div class="box3">这是第三个div</div>

        </div>

</body>

没有clear属性,此处针对box2(float:right;):

clear:both;

定位布局

position属性

功能:定义建立元素布局所用的定位机制。

有以下几个值:

absolute

生成绝对定位的元素,通过此属性值可以将元素放置到页面上的任何位置。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

fixed

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

relative

生成相对定位的元素,相对于其正常位置(如div块元素)进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

static默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
inherit规定应该从父元素继承 position 属性的值。

例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>定位布局</title>
    <style>
        .div {
            width: 600px;
            height: 600px;
            border: 1px solid black;
            margin: 100px;
        }

        .box1 {
            top: 500px;
            left: 300px;
            width: 200px;
            height: 200px;
            border: 1px solid black;
            background-color: red;
            position: fixed;
        }

        .box2 {
            left: 200px;
            width: 200px;
            height: 200px;
            border: 1px solid black;
            background-color: blue;
            /*相对位置*/
            position: relative;
        }

        .box3 {
            left: 200px;
            width: 200px;
            height: 200px;
            border: 1px solid black;
            background-color: green;
            position: absolute;
        }
    </style>
</head>

<body>
    <div class="div">
        <div class="box1">这是第一个div</div>
        <div class="box2">这是第二个div</div>
        <div class="box3">这是第三个div</div>
    </div>
</body>

</html>

效果展示:

PS:2号和3号分别为相对和绝对位置,前者是距离左侧黑色边框200px;后者则是距离浏览器左边框200px。

且由此看出,fixed属性值的位置规定和绝对位置是相同的

盒子布局

  • border ----- 边框 
  • padding ----- 内边距------内容距离边框的距离 
  • margin ------外边距 ------ 边框距离页面的距离

以上三种属性均可以按照顺时针(上右下左)的顺序来定义元素的位置;

若只有一个或者两个值,则直接规定四个方向的间距以及上下和左右方向的间距

除此之外它们还有以下属性:

border属性

border-width

规定边框的宽度。有 细thin 中等medium 粗thick三个属性,也可以直接用数值表示。

顺序为顺时针(上右下左),也可以用一个值全局设置宽度或者两个值设置上下和左右边框

PS:必须保证边框样式不为none是才有效

border-style规定边框的样式。有 点状线dotted 实线solid 双线double 虚线dashed和无样式none个常用属性
border-color规定边框的颜色
inherit

规定应该从父元素继承 border 属性的设置。

效果:

margin属性&padding属性

两者均由以下四种属性:

auto浏览器计算边距。
length规定以具体单位计的边距值,比如像素、厘米等。默认值是 0px。
%以包含元素宽度的百分比指定边距。
inherit规定应该从父元素继承边距。

除此之外,两者均可以有1~4个数值,分别有以下含义:

1个值:表示全局设定四个方向的边距

2个值:先后分别表示上下和左右方向的边距

3个值:先后分别表示上;左右;下方向的边距

4个值:按顺时针(上右下左)的方向表示对应边距

它们同时可以在后面加上-top;-bottom;-left;-right 这四个后缀来表示对应方向的边距,

和上面的方式有相同的效果。

弹性盒子

弹性盒子是由弹性容器(Flexible或者Flexbox)和弹性元素(Flex-item)组成的
PS:一个弹性容器可以包含多个弹性元素

flexbox模型(弹性容器)

 如果需要使用 Flexbox 模型,您需要首先定义 Flex 容器

弹性容器是通过display属性进行设置的

flex和inline-flex两种属性值

display属性

功能:用于定义建立布局时元素生成的显示框类型

有以下几种常用属性:

none此元素不会被显示
flex此元素将显示为弹性元素,会根据弹性容器的大小来改变元素的大小。
block此元素将显示为块级元素,此元素前后会带有换行符
inline默认值。此元素会被显示为内联元素,元素前后没有换行符
inline-block行内块元素
inline-flex行内弹性元素。
list-item此元素会作为列表显示。
run-in此元素会根据上下文作为块级元素或内联元素显示。

弹性项目

PS:以下属性均要为弹性项目才能起作用,否则无效

  • flex- direction ------ 指的是弹性容器中子元素的排列方式
  • flex-wrap ----- 指的是弹性容器中子元素超出父容器时是否换行
  • flex-flow ----- flex- direction 和flex-wrap 的简写
  • justify-content ----- 设置的弹性容器中元素在主轴(横轴)的对齐方式
  • align-items ----- 设置的弹性容器中元素在侧轴(纵轴)的对齐方式
  • align-self ----- 指定弹性容器内所选项目的对齐方式,会覆盖align-items属性
  • align-content ----- 修改了flex-flow 的行为,类似于align-items,它是对齐的弹性线
  • flex-grow ----- 规定在相同的容器中,项目相对于其余弹性项目增长量
  • flex-shrink ----- 规定在相同的容器中,项目相对于其余弹性项目增长量
  • flex-basis ----- 规定弹性项目的初始长度
  • order ----- 规定弹性项目相对于同一容器内其余弹性项目的顺序

flex-direction属性

功能:定义容器要在哪个方向上堆叠 flex 项目

row默认值水平显示弹性项目
column垂直显示弹性项目

row-reverse

column-reverse

在水平和垂直排列的基础上按相反的顺序进行排列

flex-wrap属性

功能:规定 flex 项目将在必要时进行换行

nowrap默认值。规定弹性项目不会换行
wrap规定弹性项目在需要时换行
wrap-reverse规定弹性项目在需要时以项目相反的顺序(逆序)换行

flex-flow属性

功能:同时设置 flex-direction 和 flex-wrap 属性的简写属性

规定两个值,前后分别为方向和是否换行,属性值对应上方七个值

justify-content属性

功能:用于水平对齐 flex 项目

flex-start默认值。项目位于容器开头
center项目位于容器中央
flex-end项目位于容器末端
space-between项目与项目之间留有间隔
space-around

项目在前后以及两个项目之间留有间隔

也就是说两个项目之间的间隔为两倍前或后间隔

align-items属性

功能:用于垂直对齐 flex 项目

stretch默认值。项目被拉伸以适应容器
flex-start项目位于容器开头
center项目位于容器中央
flex-end项目位于容器末端
baseline项目位于容器的基线

align-self属性

功能:指定弹性容器内所选项目的对齐方式

注意:align-self 属性将覆盖弹性容器的align-items属性

auto默认值。元素继承其父容器的 align-items 属性,如果没有父容器,则为 "stretch"。
stretch元素被拉伸以适应容器。
center元素位于容器的中央
flex-start元素位于容器的开头
flex-end元素位于容器的末端
baseline元素被定位到容器的基线
initial将此属性设置为其默认值。
inherit从其父元素继承此属性。

align-content属性

功能:用于对齐弹性线

stretch默认值。拉伸弹性线以占据剩余空间
flex-start在容器开头显示弹性线
center在容器中间显示弹性线
flex-end在容器末端显示弹性线
space-between弹性线在项目之间带有空格
space-around弹性线在项目之前、之间和之后带有空格

flex-grow属性

功能:规定在相同的容器中,项目相对于其余弹性项目增长量

number数字值,规定该项目相对于其余弹性项目的增长量的倍数默认值为 0
initial将此属性设置为其默认值
inherit从其父元素继承此属性。

例:让第二个弹性项目的宽度成为其余弹性项目的三倍

<style>

        .box{

                width : "350px" ;

                height : "100px" ;

                border : 1px solid black ;

                display : flex ;

        }

                div : nth-of-type(1) {flex-grow: 1;}

                div : nth-of-type(2) {flex-grow: 3;}

                div : nth-of-type(3) {flex-grow: 1;}

                div : nth-of-type(4) {flex-grow: 1;}

                div : nth-of-type(5) {flex-grow: 1;}

</style>

flex-shrink属性

功能:规定在相同的容器中,项目相对于其余弹性项目的收缩量

number数字值,规定项目相对于其余弹性项目的收缩量默认值为 1
initial将此属性设置为其默认值
inherit从其父元素继承此属性。

例:使第二个弹性项目相比其余项目收缩三倍

相较于flex-grow属性的效果

flex-basis属性

功能:规定弹性项目的初始长度

number长度单位或百分百,规定弹性项目的初始长度
auto默认值。长度等于弹性项目的长度。如果该项目未规定长度,则长度将依据其内容
initial将此属性设置为其默认值
inherit从其父元素继承此属性。

例:

<style>

        .box {

                width : 300px ;

                height : 100px ;

                border : 1px solid black ;

                display : flex ;

        }

        .box div {

                flex-grow : 0;

                flex-shrink : 0;

                flex-basis : 50px;

        }

        .box div : nth-of-type(2) {

                flex-basis : 100px;

        }

</style>

order属性

功能:规定弹性项目相对于同一容器内其余弹性项目的顺序

number默认值为 0。规定弹性项目的顺序
initial将此属性设置为其默认值。
inherit从其父元素继承此属性。

 PS:该属性是通过设定的数字值的大小来进行排序,值越大的顺序越靠后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flex布局,也称为弹性布局,是一种浏览器提倡的布局模型。它的特点是可以更简单、灵活地布局网页,避免了浮动脱标的问题。通过使用Flex布局,我们可以精确灵活地控制块级盒子的布局方式,避免浮动布局中脱离文档流现象的发生。Flex布局非常适合用于结构化布局。 Flex布局的设置方式是在父元素上添加`display: flex`,这样子元素就可以自动地被挤压或拉伸。Flex布局由弹性容器、弹性盒子、主轴、侧轴/交叉轴组成。 在Flex布局中,`flex`属性是`flex-grow`、`flex-shrink`和`flex-basis`三个属性的简写,默认值为`0 1 auto`。其中`flex-grow`表示弹性元素的放大比例,`flex-shrink`表示弹性元素的缩小比例,`flex-basis`表示弹性元素的初始大小。 除了`flex`属性,还有一些其他的属性可以用来设置Flex布局,这些属性设置在容器上,包括`flex-direction`、`flex-wrap`、`flex-flow`、`justify-content`、`align-items`和`align-content`等属性,用来控制弹性容器和弹性盒子的布局方式总结来说,Flex布局是一种简单、灵活的布局模型,通过使用弹性容器和弹性盒子,可以精确控制块级盒子的布局方式,避免了浮动布局中的问题。使用Flex布局可以使网页的布局更加简单、灵活,适用于结构化布局。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Flex布局(弹性布局)-图文介绍](https://blog.csdn.net/qq_52031408/article/details/124053711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [flex弹性布局](https://blog.csdn.net/m0_48958478/article/details/125508280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

璀云霄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值