页面元素定位和布局方法

275 阅读3分钟

页面元素定位和布局方法

块级元素和行内元素

A:块级元素

块级元素要独占一行,它后面的内容就会被挤到下一行,可以把块级元素理解成一个矩形容器,可以设置它的宽度和高度,以下是常用的块级元素:

<div> <p> <hi> <from> <ul> <li>

B:行内元素

与块级元素相反,在宽度允许的情况下,一行中可以容纳多个行内元素,它没有固定形状,不能设置宽度和高度,以下是常用的行内元素:

<span> <a> <input> <img> <strong> <em>

我们可以使用display:inline 将块级元素转换为行内元素

使用display:block 将行内元素转为块级元素,从而进行设置宽度和高度

流动布局

流动布局就是元素按正常的文档流从上往下的排列,所以元素按照先后顺序逐行往下排列,块级元素独占一行,行内元素在每行中从左至右排列。流动布局是网页默认的显示规则

浮动布局

浮动布局是利用CSS完成网页布局最重要的方式,使用极其灵活多变,在上面的流动布局我们了解到以div为首的块级元素会独占一行,在网页布局中,最常用的就是div,通常把div当做一个盒子,再来把一个个div盒子进行排列。但是div独占一行,我们想在一行并列放置两个、甚至三个div盒子怎么办呢?浮动就可以完成这个事情。看个例子:

<body>
    <div class="box">
        <div class="div1">div1,未设置浮动</div>
        <div class="div2">div2,左浮动</div>
        <div class="div3">div3,右浮动</div>
    </div>
</body>

上面代码中,给div设置了宽和高,显示如下:

image-20210827170222275.png

此时div为块级元素,所以他们独占一行,后面的div被挤到下一行,这样的效果不符合我们想要的,那么我们要使用浮动来调整div

<style>
        .box{
            width: 800px;
            height: 600px;
            border: 1px solid red;
        }
        .div1{
            /* 不设置浮动 */
            width: 700px;
            height: 150px;
            margin: 50px;
            border: 1px solid red;
        }
        .div2{
            /* 设置左浮动 */
            float: left;
            width: 300px;
            height: 300px;
            border: 1px solid red;
        }
        .div3{
            /* 设置右浮动 */
            float: right;
            width: 300px;
            height: 300px;
            border: 1px solid red;
        }
    </style>

效果:

image-20210827170437567.png

定位布局

浮动布局比较灵活,不易控制。定位布局相对而言较易使用,当然,在实际开发中,往往是两者配合使用,以满足布局的个性需求。定位布局主要是通过为 【position】 属性设置不同的值来完成布局的。该值主要有以下三种:

1.position:relative

生成的位置相对于自身定位的,需要注意的是使用position:relative的元素并没有脱离文档流,且原来的位置占用的空间依旧存在,只是位置发生了变化。一般使用relative来改变位置比较少,主要是用来设置子级的absolute定位的参考对象。

2.position:absolute

absolute定位是布局中最常用到的定位,其生成的位置是相对于带有position属性的父(父...)级来定位;如果父级都没有position属性,则相对于document来定位;使用absolute定位后,定位元素是脱离文档流的,这时候父级会检测不到定位元素的宽高。 inline元素使用absolute定位之后,可以对其设置宽高;元素是不可以同时使用绝对定位和浮动的。 对子级span标签absolute定位之后,可以设置宽高,且父级无法检测到子级宽高,所以无法有子级来撑开;

3.position:fixed

fixed定位是相对于浏览器窗口来定位的,所以也是脱离了文档流,与absolute一样,父级会检测不到定位元素的宽高。 inline元素使用absolute定位之后,可以对其设置宽高;元素是不可以同时使用fixed定位和浮动的。