CSS 3 盒子模型 圆角边框 盒子阴影 文字阴影

目录

盒子模型

1.1看透网页的本质

1.2盒子模型(Box Model)组成

1.3边框(border)

1.4表格的细线边框

 1.5边框会影响盒子实际大小

1.6内边距(padding) 

1.6.1padding

1.6.2padding复合属性 

1.6.3padding会影响盒子实际大小

1.6.4padding应用案例:新浪导航栏-padding影响盒子好处

1.6.5 padding不会撑开盒子的情况

1.7外边距(margin) 

 1.8外边距合并

1.9清除内外边距

综合案例

圆角边框

盒子阴影(重要)

文字阴影


盒子模型

网页布局要学习三大核心,盒子模型,浮动和定位。学习好盒子模型能非常好的帮助我们布局页面

1.1看透网页的本质

网页布局过程:

  1. 先准备好相关的网页元素,网页元素基本都是盒子BOX
  2. 利用CSS设置好盒子样式,然后摆到相应位置
  3. 往盒子里面装内容

网页布局的核心本质:就是利用CSS摆盒子

1.2盒子模型(Box Model)组成

 

1.3边框(border)

border-style中常用的三种边框样式:

    <style>
        div {
            width: 300px;
            height: 200px;
            border-width: 5px;
            /* border-width 边框的粗细 一般用px */
            border-color: pink;
            border-style: solid;
            /* border-style: solid 实现边框   dashed虚线边框    dotted点线边框 */
        }
    </style>

<body>
    <div>

    </div>
</body>

 

边框的复合写法: 

 课堂小案例:设置一个200*200的盒子,设置上边框为红色,其余边框为蓝色(提示:一定要注意边框的层叠性)

        /* 正确写法1: */
        div {
            width: 200px;
            height: 200px;
            border-width: 5px;
            border-style: solid;
            border-top-color: red;
            border-left-color: blue;
            border-bottom-color: blue;
            border-right-color: blue;
        }
        /* 太复杂 */

        /* 正确写法2 */
        div {
            width: 200px;
            height: 200px;
            border-width: 5px;
            border-style: solid;
            border-color: blue;
            border-top-color: red;
        }
        /* 此时border-color在上,border-top-color在下 */

        /* 错误写法 */
        div {
            width: 200px;
            height: 200px;
            border-width: 5px;
            border-style: solid;
            border-top-color: red;
            border-color: blue;
        }
        /* 此时border-color在下,border-top与border同属一种选择器,boeder-top被层叠,上边框也为蓝色,错误 */

1.4表格的细线边框

 1.5边框会影响盒子实际大小

边框会额外增加盒子的大小。因此我们有两种解决方案:

  1. 测量盒子大小的时候,不量边框。
  2. 如果测量的时候包含了边框,则需要width/height减去边框宽度。(注意左右)

1.6内边距(padding) 

1.6.1padding

1.6.2padding复合属性 

padding属性(简写属性)可以有一到四个值

   

1.6.3padding会影响盒子实际大小

注意: 

 当我们给盒子指定padding值之后,发生了两件事情:

  1. 内容和边框有了距离,添加了内边距。
  2. padding影响了盒子实际大小。

也就是说,如果盒子已经有了高度和宽度,此时再指定内边框,会撑大盒子。

解决方案:

如果保证了盒子跟效果图大小保持一致,则让width/height减去多出来的内边距大小即可。

padding影响盒子大小的好处:

一定情况下保证了文字与文字之间间距相等.(如下例)

1.6.4padding应用案例:新浪导航栏-padding影响盒子好处

 参考代码:

    <style>
        .nav {
            height: 41px;
            border-top: 3px solid #ff8500;
            border-bottom: 1px solid #edeef0;
            background-color: #fcfcfc;
        }

        .nav a {
            text-decoration: none;
            display: inline-block;
            height: 41px;
            font-size: 12px;
            line-height: 41px;
            color: #4c4c4c;
            padding: 0 20px;
        }

        .nav a:hover {
            background-color: #eee;
            color: #ff8500;
        }
    </style>
<body>
    <div class="nav">
        <a href="#">新浪微博</a>
        <a href="#">手机新浪网</a>
        <a href="#">移动客户端</a>
        <a href="#">微博</a>
        <a href="#">关注我</a>
    </div>
</body>

1.6.5 padding不会撑开盒子的情况

 如果盒子本身没有指定width/height属性,则此时padding不会撑开盒子大小.

例1:

    <style>
        div {
            width: 300px;
            height: 100px;
            background-color: purple;
        }

        div p {
            padding: 30px;
            background-color: skyblue;
        }
    </style>

<body>
    <div>
        <p></p>
    </div>
</body>

 此时,p标签(块元素,默认宽度撑满了整个div)未指定宽度和高度,p盒子的padding没有撑开div盒子 。

例2:

    <style>
        div {
            width: 300px;
            height: 100px;
            background-color: purple;
        }

        div p {
            width: 100%;
            padding: 30px;
            background-color: skyblue;
        }
    </style>

<body>
    <div>
        <p></p>
    </div>
</body>

 此时,p标签指定了宽度100%,撑大了div盒子。

1.7外边距(margin) 

 

 1.8外边距合并

1.9清除内外边距

综合案例

 参考代码:

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

        body {
            background-color: #f3f5f2;
        }

        .box {
            width: 419px;
            height: 582px;
            background-color: #fff;
            margin: 100px auto;
        }

        .box img {
            width: 100%;
        }

        .box p {
            font-size: 16.5px;
            height: 100px;
            padding: 0 45px;
            margin-top: 50px;
        }

        .box div {
            font-size: 16.5px;
            text-align: left;
        }

        .box .appraise {
            font-size: 14px;
            padding: 0 45px;
            color: rgb(165, 158, 158);
        }

        .box .nav {
            font-size: 16.5px;
            padding: 0 45px;
            margin: 10px 0;
        }

        .box .nav a {
            display: inline;
            text-decoration: none;
            color: black;
        }

        em {
            font-style: normal;
            margin: 0 10px 0 20px;
        }
    </style>

<body>
    <div class="box">
        <img src="../jpgs/图片.jpg" alt="">
        <p>快递牛,整体不错蓝牙可以说秒连。红米给力</p>
        <div class="appraise">来自于1231234的评价</div>
        <div class="nav">
            <a href="#">Redmi Airdots无线蓝...</a><em>|</em><span>99.9元</span>
        </div>
    </div>
</body>

圆角边框

盒子阴影(重要)

文字阴影


版权声明:本文为weixin_62302666原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。