前端基础笔记-CSS-03-盒子模型

基本概念

1.网页布局的本质是根据设计图设计好盒子的大小以及摆放的位置,再将网页元素放进盒子里。

2.盒子由元素内容、边框、内边距、外边距组成。

3.边框为盒子的厚度;
内边距为元素内容与边框的距离;
外边距为盒子之间的距离。

边框border

1.基本语法border : border-width || border-style || border-color ;
在这里插入图片描述
border-style:

  • none:没有边框(默认值)
  • solid:单实线
  • dashed:虚线
  • dotted:点线

2.边框综合设置无固定顺序border : border-width || border-style || border-color;

3.以上设置会对上下左右四个边框都生效,需要单独设置的时候,在这里插入图片描述
4.表格边框
一个普通的表格:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表格</title>
   
</head>
<body>
    <table border="1" align="center" width="500" height="300" cellspacing="0" cellpadding="10">
        <caption>
            个人信息表
        </caption>
        <thead>
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>年龄</th>
            </tr>
        </thead>
        
        <tbody>
            <tr>
                <td>01</td>
                <td>小红</td>
                <td>12</td>
            </tr>
            <tr>
                <td>02</td>
                <td>小红</td>
                <td>12</td>
            </tr>
            <tr>
                <td>03</td>
                <td>小兰</td>
                <td>11</td>
            </tr>
            <tr>
                <td>04</td>
                <td>小明</td>
                <td>9</td>
            </tr>
        </tbody>

        <tfoot>
            <tr>
                <td colspan="3">
                    这里是注释
                </td>
            </tr>
        </tfoot>
        
    </table>
</body>
</html>

在这里插入图片描述

由于设置了cellspacing="0",即单元格之间的距离设置为0,导致单元格之间的边框重叠,使实际展现的边框比设置的cellpadding="10"要粗,这个问题可以通过设置css来解决。

 <style>
        table, td {
            border-collapse: collapse;/*合并相邻边框*/
        }
    </style>

在这里插入图片描述

内边距padding

1.分开写的情况:
在这里插入图片描述
2.简写:
在这里插入图片描述
3.当设置padding值后,发生了两件事:一是内容与边框间有了距离,即有了内边距;二是盒子变大了。

例:导航栏中文字长度不一,所以用padding撑开距离。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            border-top: 5px orange solid;
            border-bottom: 3px gray solid;
        }
        div a {
            display: inline-block;
            text-decoration: none;
            color: black;
            padding: 20px;
        }
        div a:hover {
            color: orange;
            background-color: #cccccc;
        }
    </style>
</head>
<body>
    <div>
        <a href="#">设为首页</a>
        <a href="#">手机新浪网</a>
        <a href="#">移动客户端</a>
        <a href="#">博客</a>
        <a href="#">微博</a>
        <a href="#">关注我</a>
    </div>
</body>
</html>

在这里插入图片描述

4.盒子的实际大小=内容的宽度高度(width,height)+内边距+边框,实际设计的时候要注意这一点。

外边距margin

1.margin用于控制盒子与盒子之间的距离
在这里插入图片描述
2.margin的简写与padding相同。

3.实现块级盒子水平居中
必须满足两个条件:盒子必须指定宽度;左右外边距设置为auto。

4.文字居中和盒子居中的区别
盒子内的文字水平居中利用text-align:center;,垂直居中利用行高=盒子高度;
盒子水平居中利用margin:上下外边距 auto;

5.插入图片和背景图片的区别
插入图片利用<img src="#"/>,在盒子中的位置通过padding调节;
背景图片则利用background: url(img);,位置通过background-position调节。

6.清除元素的默认外边距
在这里插入图片描述

* {
   padding:0;         /* 清除内边距 */
   margin:0;          /* 清除外边距 */
}

注意在网页设计中,一般为了兼容性,只设置左右的内外边距。

7.外边距合并
1)上下相邻的块元素
在这里插入图片描述
像这样的情况,合并后的外边距会取两个外边距的较大值,也称外边距塌陷。如果要避免这种情况,那么就只设置其中一个的外边距,这样就不会有塌陷。

2)嵌套块元素
在这里插入图片描述
在两个嵌套的块元素中,如果父元素没有设置上内边距和边框,那么父元素的上外边距与子元素的上外边距会发生合并,依旧是取较大值。如果要避免这种情况,可以给父元素设置上内边距或边框或添加overflow:hidden

盒子模型布局的稳定性

根据稳定性,优先使用width,其次是padding,最后是margin

原因:
padding会把盒子撑开,影响盒子的实际大小;
margin可能会出现外边距合并的情况,比较麻烦。

ps基本操作

标尺ctrl+R
放大缩小ctrl+/-
利用切片工具可以测量各个元素的大小

综合案例

去掉列表的默认样式li { list-style: none; }

一个简陋的综合案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /*清除默认的内外边距*/
        * { 
            margin: 0px;
            padding: 0px;
        }
        li { /*去掉列表默认的样式*/
            list-style: none; 
        }
        .dad {
            width: 500px;
            height: 300px;
            margin: 100px auto; /*左右外边距设置为auto可以实现盒子的水平居中*/
            border: 1px solid #cccccc;
            padding: 15px; /*设置大盒子的内边距,这样就不用设置小盒子的外边距,时刻记得优先使用*/
        }
        .dad .title {
            height: 50px;
            border-bottom: 1px solid #cccccc;
            text-align: center;
        }
        .dad .text ul li a {
            text-decoration: none;
            font-size: 20px;
            color: black;
            line-height: 44px;/*利用行高实现五条内容垂直均匀分布*/
            border-bottom: 1px dashed #cccccc;
        }
    </style>
</head>
<body>
    <div class="dad">
        <div class="title">
            <h1>标题</h1>
        </div>
        <div class="text">
            <ul> <!--无序列表-->
                <li><a href="#"><img src="img/10-img.png" height="20px"/>第一条内容</a></li>
                <li><a href="#"><img src="img/10-img.png" height="20px"/>第二条内容</a></li>
                <li><a href="#"><img src="img/10-img.png" height="20px"/>第三条内容</a></li>
                <li><a href="#"><img src="img/10-img.png" height="20px"/>第四条内容</a></li>
                <li><a href="#"><img src="img/10-img.png" height="20px"/>第五条内容</a></li>
            </ul>

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/mkx2723/article/details/107780126