css布局

作者: 59e89c043543 | 来源:发表于2019-07-19 20:17 被阅读2次

    盒子模型

    标准盒子模型

    图中最内部的框是元素的实际内容,也就是元素框,紧挨着元素框外部的是内边距padding,其次是边框(border),然后最外层是外边距(margin),整个构成了框模型。通常我们设置的背景显示区域,就是内容、内边距、边框这一块范围。而外边距margin是透明的,不会遮挡周边的其他元素。

    元素框的总宽度 = 元素(element)的width

    + padding + margin +border;

    元素框的总高度 = 元素(element)的height

    + padding +margin +border。

    CSS中的宽(width)=内容(content)的宽

    CSS中的高(height)=内容(content)的高


    IE盒子模型

    CSS中的宽(width)=内容(content)的宽+(border+padding)

    CSS中的高(height)=内容(content)的高+(border+padding)


    注意点:许多浏览器都有自己默认的margin和padding值,我们可以通过将元素的margin和padding设置为0来覆盖原本的浏览器样式。

     

    * {

      margin: 0;

      padding: 0;

    }


    box-sizing属性是用户界面属性里的一种,之所以介绍它,是因为这个属性跟盒子模型有关,而且在css

    reset中有可能会用到它。

    box-sizing : content-box|border-box|inherit;

    (1) content-box,默认值,可以使设置的宽度和高度值应用到元素的内容框。盒子的width只包含内容。

    即总宽度=margin+border+padding+width

    (2) border-box,设置的width值其实是除margin外的border+padding+element的总宽度。盒子的width包含border+padding+内容

    即总宽度=margin+width

    很多CSS框架,都会对盒子模型的计算方法进行简化。

    (3)inherit,规定应从父元素继承 box-sizing 属性的值

    关于border-box的使用:

    1 一个box宽度为100%,又想要两边有内间距,这时候用就比较好

    2全局设置 border-box 很好,首先它符合直觉,其次它可以省去一次又一次的加加减减,它还有一个关键作用——让有边框的盒子正常使用百分比宽度。

    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <title>课堂练习一</title>

    </head>

    <style>

        *{

                margin: 0px;

                padding: 0px;

            }

        .out{

            width: 100%;

            height: 100%;

            border:solid 1px red;

            box-sizing: border-box;

        }

        .in{

                height: 100px;

                border: solid 2px plum;

                padding: 10px;

                margin: 20px;

            }

    </style>

    <body>

        <div class="out">

            <div class="in"></div>

            <div class="in"></div>

            <div class="in"></div>

            <div class="in"></div>

        </div>

    </body>

    </html>


    元素分类

    块级元素:display属性取block、table、flex、grid和list-item的元素。

     1.独占一行显示(width默认为100%,height为0);

    2.可以设置尺寸属性(width、height等)

    常见的块级元素有:div、p、h1~h6、ul、li、ol、dd、dt、dl、table、hr、blockquote、address、pre、menu

    行内级元素:display属性取inline的元素。

    1.一行可以显示多个;

    2. 元素的高度、宽度及顶部和底部边距不可设置;

    3. 元素的宽度就是它包含的文字或图片的宽度,不可改变

    4. 内联元素之间的间距问题:当行内元素之间有“回车”、“tab”、“空格”时就会出现间隙。解决方法:写在一行,之间不要有空格之类的符号。

    常见的行内元素有:span、img、input、a、label、button、select、textarea、sup、sub、abbr、s、i、em、u、strong、small

    行内块级元素:display属性取inline-block、inline-table、inline-flex和inline-grid的元素

    1、和其他元素都在一行上;(而块状元素是另起一行)

    2、元素的高度、宽度、行高以及顶和底边距都可设置。

    如果想让一个元素可以设置宽度高度,又让它以行内形式显示,我们可以设置display的值为inline-block。

    每个元素初始都会带有一些样式属性,例如:div默认的display是block,span的display是inline。我们可以在css中设置他们的display属性去改变他们的类型。

    相关文章

      网友评论

        本文标题:css布局

        本文链接:https://www.haomeiwen.com/subject/frqelctx.html