盒子模型边距和定位

盒子模型由外到内:由外边距margin,边框border,内边距padding,内容content这四个属性组成。

1.外边距:margin: val

val可以是左右居中 auto   

  • 两个盒子水平方向:一个盒子存在margin-left ,第二个存在margin-right。取两者之和显示在浏览器上·
  • 两个盒子垂直方向:一个盒子存在margin-bottom ,第二个存在margin-top。取距离大的值显示在浏览器上·
  • 解决内边距重叠:overflow: hidden;
            /*外边距margin 默认方向是 上—左—下—右
            给一个值默认四个方向都一样 两个值分别代表上下 和 左右,三个值代表上 左右 下*/
                /*margin: 15px;*/
                /*margin: 15px 10px;*/
                /*margin: 15px 10px 5px;*/
                /*margin: 15px 10px 5px 0;*/

            /*也可以给定方位 margin-方位: width*/
                /*margin-top: 10px;*/

2.border边框:border: width style color

  • style: 实线solid,虚线dashed,点线dotted,双边框double
  • border-radius: 50% (对于正方形边框达到快速圆角的效果)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
         /*border边框:border: width style color*/
            border: 5px dotted red;  /*常用写法*/
            /*border-方位-width*/
            border-right- 10px;
            /*border-方位-style*/
            border-bottom-style: dashed;
            /*border-方位-color*/
            border-left-color: #000;   
    </style>
</head>
<body>
    <div class="box2">

    </div>
</body>
</html>

3.内边距:内容和边框的边距padding: val;

*** 行内元素只有左右的内边距

/*!*内边距 padding-四个方位:width*!*/
padding: 90px;
/*padding-方向:val*/
padding-right: 10px;

4.浮动float: 只有左右浮动

float-left   float-right

- 浮动的定义:使元素**脱离文档流** ,按照指定(左右)方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。
- **文档流** 是文档中可显示对象在排列时所占用的位置/空间(在页面中占位置)
- **脱离文档流** :在页面内中不占位置

-  清除浮动 :消除浮动带来的不利影响 是给浮动元素的父级消除影响

  • overflow: hidden;
  • .clearfix: after{content:'';display:block;clear:both;}     clearfix是一个classname

5.定位:position  

分为四种:静态定位static 

    1.静态定位相当于没有定位,是在浏览器默认的位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        div{
            /*使内容左右居中*/
            text-align: center;
            /*是内容上下居中 通过设置行高达到,行高等于该div的高度*/
            line-height: 200px;
            width: 200px;
            height: 200px;
            background: red;
            /*静态定位 */
            position: static;
            /*静态定位后 给方位值没有效果 没有定位也不能top*/
            top: 50px;
        }
    </style>
</head>
<body>
    <div>
        这是div
    </div>
</body>
</html>

效果不变,div块没有移动

  2.相对定位 relactive  不脱离文档流,会占据空间

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        div{
            /*使内容左右居中*/
            text-align: center;
            /*是内容上下居中 通过设置行高达到,行高等于该div的高度*/
            line-height: 200px;
            width: 200px;
            height: 200px;
            background: red;
            /*相对定位 不定义偏移量 没效果*/
            position: relative;
            /*相对定位后 给方位值(定义偏移量)有效果*/
            right: -500px;
        }
    </style>
</head>
<body>
    <div>
        这是div
    </div>
</body>
</html>

效果距离right: -500px;

  3.绝对定位 absolute 脱离文档流不占据空间参考父级relactive 或 fixed 定位 或 (没有父级)body

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        div{
            /*使内容左右居中*/
            text-align: center;
            width: 200px;
            height: 200px;
            background: red;
            /*相对定位 不定义偏移量 没效果*/
            position: relative;
            /*相对定位后 给方位值(定义偏移量)有效果*/
            top: 0px;
            /*定位后消除定位带来的不利*/
            overflow: hidden;
        }

        p{
            /*text-align: center;*/
            width: 100px;
            height:100px;
            border: 1px solid yellow;
            background: yellow;
            /*绝对定位 他的父级是div(relactive)*/
            position: absolute;
            /*离他父级的top2px*/
            top: 2;
        }
    </style>
</head>
<body>
    <div>
        这是div relactive
    </div>
    <p>这是p测试absolute</p>
</body>
</html>

效果p定位之前                      -------                                                     之后    /*离他父级的top2px*/

   

  4.固定定位 fixed  ,相对于浏览器窗口进行定位,无论窗口怎么拉伸,他都跟着跑

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        div{
            /*使内容左右居中*/
            text-align: center;
            /*是内容上下居中 通过设置行高达到,行高等于该div的高度*/
            line-height: 200px;
            width: 200px;
            height: 200px;
            background: red;
            /*固定定位 */
            position: fixed;
            /*固定定位,给方位*/
            top: 100px;
            right: 100px;
        }
    </style>
</head>
<body>
    <div>
        这是div fixed
    </div>
</body>
</html>

fixed的效果

****** 层级 z-index  默认=0

<style>
        ul{
            width: 100px;
            height: 100px;
            border: 1px solid red;
       position: relative;
} ul li{ width: 100px; height: 100px; background: #ddd;
       position: absolute; --2图
} </style> <body> <ul>
  <li style="background: red"></li>                                       提高层级    <li style="z-index: 1">我是li1</li>
  <li style="background: yellow"></li>
  <li style="background: blue"></li>
</ul> </body>

不定位                            li 绝对定位后不占空间重叠在一起,最后一个li在最外层                  要使 li1 显示 用属性z-index: num num越大层级就高,就能显示出来

                                                                    

原文地址:https://www.cnblogs.com/tangpg/p/8298592.html