css盒子模型

前言

欢迎来到我的博客

   本文是我整理的关于css的盒子模型的相关的知识点。

文章辅助阅读

我会列举最常用,最重要的部分,但是如果有特殊小众的需要,需要自己查阅css中文手册。

手册下载链接:

css2.0中文手册绿色版_css2.0中文手册下载_css2.0中文手册PC版-华军软件园

盒子概念理解

有关于布局:

拿我们当前这个页面来讲,我们可以把他拆分出来。

我们可以看到,实际上这个页面是由一块一块的小部分组成的这一整个页面。

也就是说,我们开发这个页面,实际上就是用盒子封装好各个部件,然后把他们放到这个页面上形成的。

可以这么说,我们构造页面要先构造这个螺丝(盒子),然后再把这些零件组装起来形成产品。

盒子构造

盒子模型如下:

盒子由外边距,边框,内边距,内容组成。

他们依次的属性值为:

margin,border,content,padding。

盒子边框border

border的三个属性:

属性作用

border-color

设置颜色

border-width

设置宽度(px单位)

border-style

设置边框样式

border-style可选属性

none(无边框),solid(实线),dotted(点线),dashed(虚线)。

因为考虑到兼容性的问题,所以我们只会用这几个边框。

以上案例演示:

代码

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #a {
            border-color: palegreen;
            border-width: 2px;
            border-style: solid;
        }

        #b {
            border-color: palevioletred;
            border-width: 1px;
            border-style: dotted;
        }

        #c {
            border-color: paleturquoise;
            border-width: 3px;
            border-style: dashed;
        }
    </style>
</head>

<body>
    <div id="a">a</div>
    <div id="b">a</div>
    <div id="c">a</div>
</body>

案例结果

简略写法

代码

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #a {
            /* border-color: palegreen;
            border-width: 2px;
            border-style: solid; */
            border: 2px palegreen solid;
        }

        #b {
            /* border-color: palevioletred;
            border-width: 1px;
            border-style: dotted; */
            border: 1px palevioletred dotted;
        }

        #c {
            /* border-color: paleturquoise;
            border-width: 3px;
            border-style: dashed; */
            border: 3px paleturquoise dashed;
        }
    </style>
</head>

<body>
    <div id="a">a</div>
    <div id="b">a</div>
    <div id="c">a</div>

 表格边框合并

语法:border-collapse: collapse;

我们可能遇到下面问题:

几个相同的边框在一起。

<style>
        table,
        td,
        tr {
            border: 2px palevioletred solid;
            /* border-collapse: collapse; */
        }
    </style>
</head>

<body>
    <table>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
        </tr>
        <tr>
            <td>a</td>
            <td>b</td>
            <td>c</td>
        </tr>
    </table>
</body>

当然即使取消了外间距也会因为距离太近而使得边框变粗。这时可以用

border-collapse: collapse;

加上后就很舒服了。

大小注意点

我们使用边框的话,会让这个盒子变大的。也就是说我们加上边框就会让div比原来设定的要大。

这个注意一下就可以。

内边距padding

我们如果不设置内边距,盒子内部的内容会紧紧地贴着边框。所以我们可以设置内边距,让内容在盒子内更加自然。

属性:

属性作用
padding-left左内边距
padding-right右内边距
padding-top上内边距
padding-bottom下内边距

当然这么写比较麻烦,可以用一个属性代替。

属性:

 只要记住上下最重要就可以,先看上下,再管左右。

案例演示

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: palegoldenrod;
            padding: 5px 10px 5px;
        }
    </style>
</head>

<body>
    <div>
        <p>hellohelo,i am a so cool man. nice to meet you!</p>
    </div>
</body>

样式如下:

padding改变尺寸问题

可以这么理解:padding是在我们div这样的盒子的基础上,向外添加一个内边距+边框+外边距。

所以我们设置内边距的话,实际上也是给这个盒子增大了尺寸。

外边距margin

描述:用来把一个个盒子分隔开,防止盒子都贴在一起。

属性

属性作用
margin-top上边距
margin-bottom下边距
margin-left左边距
margin-right右边距

简写的话跟padding的形式一模一样。

外边距设置块元素居中效果

当然文字这类的行内元素我们能直接设置居中,但是像链接这样的肯定不能用文字的那些属性进行设置了。我们要设置块元素居中通常使用margin: 0 auto;

我的博客案例:

未设置这个时:

设置了之后:

美美的。

子元素外边距塌陷问题

问题产生场景:

我们在盒子里面装子盒子,子盒子会紧紧的贴着父盒子的上面。

我们想要让子盒子往下一点设置上边距。

但是实际的效果会变成父亲盒子直接下陷。

样式:

原来样式:

    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: palegoldenrod;
        }

        #zi {
            width: 50px;
            height: 50px;
            background-color: palegreen;
        }
    </style>
</head>

<body>
    <div>
        <div id="zi"></div>
    </div>
</body>

我们想要让他变成的样子:

但实际上代码加上后:

        div {
            width: 200px;
            height: 200px;
            background-color: palegoldenrod;
            /* overflow: hidden; */
        }

        #zi {
            width: 50px;
            height: 50px;
            background-color: palegreen;
            margin-top: 20px;
        }

子盒子并没有下去,反而是父盒子顶上多了个外边距。这个情况就是塌陷现象。

解决这个现象有三种方法:

1.为父元素添加透明上边框

2.父元素添加内边距

3.添加overflow: hidden;(上面代码注释起来的,解开注释就可以了)

内边距清除

我们很多标签都是自带内外边距的。比如我们的文字是不会顶着浏览器的顶部。表格的内容不是紧挨着的。这些都是自带的内外边距。

我们有时候不喜欢这些边距,我们要清除他们。

暴力清除法:

    <style>
        * {
            margin: 0;
            padding: 0;
        }
    </style>
</head>

<body>
    <ul>
        <li>123</li>
        <li>456</li>
        <li>789</li>
    </ul>
</body>

 

对比一下。

注意行内元素上下不受内外边距影响,如果想要改变要给转化为块元素。

  • 30
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北岭敲键盘的荒漠猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值