前端

css布局

2019-07-19  本文已影响2人  59e89c043543

盒子模型

标准盒子模型

图中最内部的框是元素的实际内容,也就是元素框,紧挨着元素框外部的是内边距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属性去改变他们的类型。

上一篇下一篇

猜你喜欢

热点阅读