CSS盒子模型(三)

本文详细介绍了CSS盒子模型的基本概念,包括盒子的组成(内容、内边距、边框和外边距)、边框样式、padding设置、margin用法、以及如何实现块级元素的居中对齐、背景图片、圆角和阴影效果。同时涵盖了盒模型在布局稳定性和CSS书写规范中的应用。
摘要由CSDN通过智能技术生成

css盒子模型

网页布局的关键点:盒子

盒子模型组成部分

盒子的组成

  • margin(外边距)
  • border(边框)
  • padding(内边距)
  • content(内容)
    在这里插入图片描述

border

  • border-width:边框的宽度
  • border-style:边框的样式 默认值:none(无样式) solid(实线) dashed(虚线) dotted(点线)
  • border-color:边框的颜色

简写方式

    border:border-width  border-style  border-color
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>border</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        div {
            width: 200px;
            height: 200px;
            margin: 200px auto;
            background-color: blue;
            border: 10px solid red;
        }
    </style>
</head>

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

</html>

在这里插入图片描述

border边框的综合写法

在这里插入图片描述

border-collapse

border-collapse:表格合并

因为表格中的行标签和单元格标签都拥有自己的边框 因此需要合并边框

<!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 type="text/css">
        table,
        tr,
        td,
        th {
            border-collapse: collapse;
            text-align: center;
        }
        
        .t-red {
            background-color: hotpink;
        }
    </style>
</head>

<body>
    <table border="1" cellspacing="0" cellpadding="0" align="center" height="300" width="500">
        <caption>
            <h2>小说排行耪</h2>
        </caption>
        <tr class="t-red">
            <th>排名</th>
            <th>关键词</th>

            <th>今日搜索</th>
            <th>最近七日</th>
            <th>相关链接</th>
        </tr>
        <tr>
            <td>1</td>
            <td>鬼吹灯</td>

            <td>345</td>
            <td>123</td>
            <td>
                <a href="#">贴吧</a>
                <a href="#">百度</a>
                <a href="#">图片</a>
            </td>
        </tr>
        <tr>
            <td>2</td>
            <td>盗墓笔记</td>

            <td>34555</td>
            <td>123444</td>
            <td>
                <a href="#">贴吧</a>
                <a href="#">百度</a>
                <a href="#">图片</a>
            </td>
        </tr>
        <tr>
            <td>3</td>
            <td>西游记</td>

            <td>24555</td>
            <td>13444</td>
            <td>
                <a href="#">贴吧</a>
                <a href="#">百度</a>
                <a href="#">图片</a>
            </td>
        </tr>
        <tr class="t-red">
            <td>4</td>
            <td>东游记</td>

            <td>3455</td>
            <td>3444</td>
            <td>
                <a href="#">贴吧</a>
                <a href="#">百度</a>
                <a href="#">图片</a>
            </td>
        </tr>
        <tr>
            <td>5</td>
            <td>甄嬛传</td>

            <td>3555</td>
            <td>1444</td>
            <td>
                <a href="#">贴吧</a>
                <a href="#">百度</a>
                <a href="#">图片</a>
            </td>
        </tr>
        <tr>
            <td>6</td>
            <td>水浒传</td>

            <td>355</td>
            <td>12344</td>
            <td>
                <a href="#">贴吧</a>
                <a href="#">百度</a>
                <a href="#">图片</a>
            </td>
        </tr>
        <tr class="t-red">
            <td>7</td>
            <td>三国演义</td>

            <td>3555</td>
            <td>13444</td>
            <td>
                <a href="#">贴吧</a>
                <a href="#">百度</a>
                <a href="#">图片</a>
            </td>
        </tr>


    </table>
</body>

</html>

在这里插入图片描述

padding

padding:盒子距离内容之间的距离 使用内边距之后盒子会变大

padding设置

在这里插入图片描述

padding简写

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Padding</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        div {
            width: 200px;
            height: 200px;
            margin: 200px auto;
            padding: 20px;
            text-align: center;
            line-height: 200px;
            background-color: red;
        }
    </style>
</head>

<body>
    <div>Hello Word</div>
</body>

</html>


在这里插入图片描述

新浪导航栏

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>新浪导航栏</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        .nav {
            height: 42px;
            line-height: 42px;
            background-color: hotpink;
            text-align: center;
        }
        
        .nav a {
            display: inline-block;
            color: gray;
            padding: 0px 20px;
            text-decoration: none;
        }
        
        a:hover {
            color: blue;
        }
    </style>
</head>

<body>
    <div class="nav">
        <a href="#">首页</a>
        <a href="#">新浪网</a>
        <a href="#">客户端</a>
        <a href="#">登录</a>
        <a href="#">微博</a>
        <a href="#">博客</a>
    </div>
</body>

</html>

效果图

在这里插入图片描述

盒子实际尺寸

    盒子的宽度:Elements width= content Width + padding Width + border
    盒子的高度:Elements height= ontent height + padding height +border

内边距是一定要真实存在的,只能减去盒子的宽高,来维持盒子的宽高不变


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>盒子的实际尺寸</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        h2 {
            width: 200px;
            height: 200px;
            border: 1px solid red;
            padding: 20px;
            margin: 200px auto;
            background-color: burlywood;
            /* 盒子的宽度:200px+20px+20px+2px = 242px */
            /* 盒子的高度:200px+20px+20px+2px = 242px*/
        }
    </style>
</head>

<body>
    <h2></h2>
</body>

</html>

在这里插入图片描述

padding不影响盒子大小的情况下

在特殊情况下,如果指定的盒子没有给宽高,则盒子不会被padding值撑开。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Padding不影响盒子的宽高的前提下</title>
    <style>
        .nav {
            width: 200px;
            height: 200px;
            margin: 200px auto;
            background-color: blue;
        }
        
        .nav p {
            height: 200px;
            padding-left: 20px;
        }
    </style>
</head>

<body>
    <div class="nav">
        <p></p>
    </div>
</body>

</html>


在这里插入图片描述

课堂案例

案例1

在这里插入图片描述
盒子的宽度为130

案例2

在这里插入图片描述
盒子宽度为200px+100px+50px+2px=352px

盒子高度为200px+50px+50px+1px+5px=306px

内边距是一定要真实存在的,只能减去盒子的宽高,来维持盒子的宽高不变

margin是外边距,是盒子与盒子之间的距离
在这里插入图片描述

margin的简写

同理和padding值的简写一致

块级盒子水平居中对齐

满足两种条件才能让盒子居中对齐

  1. 盒子必须指定宽度
  2. 左右的外边距margin设置auto

设置auto的三种方法

margin-left:auto margin-right:auto;

margin:auto

margin:0px auto;

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>块级盒子水平居中的方式</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        p {
            width: 200px;
            height: 200px;
            background-color: yellow;
            margin: 200px auto;
        }
    </style>
</head>

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

</html>

在这里插入图片描述

盒子水平居中对齐和文字水平居中对齐

text-align:不仅可以让文字水平居中对齐,还可以让行内块元素和行内元素水平居中对齐

margin:auto :可以让块级盒子水平居中对齐


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>块级盒子及文本居中</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        p {
            width: 400px;
            height: 400px;
            margin: 200px auto;
            text-align: center;
            line-height: 400px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <p>Hello Word</p>
</body>

</html>

在这里插入图片描述

插入图片与背景图片的区别

插入图片

插入图片一般用于展示类 ,通过盒模型的padding和margin来移动位置


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>插入图片</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        p {
            width: 600px;
            height: 600px;
            margin: 200px auto;
            border: 1px solid red;
        }
        
        p img {
            width: 400px;
            margin: 20px;
        }
    </style>
</head>

<body>
    <p>
        <img src="./image/desktop.jpg" alt="">
    </p>
</body>

</html>

在这里插入图片描述

背景图

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>背景图片</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        p {
            width: 600px;
            height: 600px;
            margin: 200px auto;
            border: 1px solid red;
            background: url(./image/desktop.jpg) no-repeat scroll 20px 50px;
            background-size: 200px 200px;
            /* background-size:宽  高 */
        }
    </style>
</head>

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

</html>

背景图片一般用于做一些精灵图等等,通过background-position来移动位置
在这里插入图片描述

清除元素的默认的内外间距

* {

    margin:0;
    padding:0;
}

注意事项

为了照顾行内元素的兼容性,只设置左右内外边距,不设置上下内外边距;

外边距合并问题

相邻块元素外边距合并问题

相邻块元素合并:取两个块元素外边距合并的较大值,所以只给一个盒子的外边距是最好的解决方法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>外边距合并之相邻块元素</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        .nav,
        .header {
            width: 200px;
            height: 200px;
            background-color: pink;
            margin: auto;
        }
        
        .nav {
            margin-bottom: 50px;
        }
        
        .header {
            background-color: blue;
            margin-top: 100px;
        }
    </style>
</head>

<body>
    <div class="nav"></div>
    <div class="header"></div>
</body>

</html>


在这里插入图片描述

嵌套块元素外边距合并问题的三个方法

嵌套块元素外边距合并问题的三个方法

  • 给父元素border值
  • 给父元素padding值
  • 给父元素overfiow:hidden;
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>

        <style>
        
            .father {
                width: 600px;
                height: 600px;
                background-color: pink;
                /* border-top: 1px solid transparent; */
                /* padding-top:1px ; */
                overflow: hidden;
            }

            .son {
                width: 200px;
                height: 200px;
                background-color: #0000FF;
               margin-top: 50px;
            }
        </style>
    </head>
    <body>
        <div class="father">
            <div class="son"></div>
        </div>

    </body>
</html>

在这里插入图片描述

盒子布局稳定性

在这里插入图片描述

ps

ps的基本使用

  • ctrl+o:打开文件
  • ctrl+r :打开标尺
  • ctrl+ + :放大
  • ctrl+ - : 缩小
  • 按住空格 可以移动视图
  • 吸管工具:吸取颜色
  • 选框工具:测量宽高
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>新闻列表</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        .nav {
            width: 340px;
            height: 220px;
            margin: 100px auto;
            padding: 0px 15px;
            background: url(./image/line.jpg);
        }
        
        .nav h2 {
            font-size: 16px;
            padding-top: 20px;
            padding-bottom: 10px;
            border-bottom: 1px solid #cccc
        }
        
        ul li {
            list-style: none;
            line-height: 30px;
            padding-left: 20px;
            background: url(./image/arr.jpg) no-repeat scroll left center;
        }
        
        ul li a {
            color: #4b4b4b;
            font: normal normal 14px '楷体';
            text-decoration: none;
        }
        
        ul li a:hover {
            color: blue;
            text-decoration: underline;
        }
    </style>
</head>

<body>
    <div class="nav">
        <h2>最新文章/New Articles</h2>
        <ul>
            <li><a href="#">北京招聘平面设计 网页设计 php</a></li>
            <li><a href="#">体验javascript的魅力</a></li>
            <li><a href="#">jquery的世界即将来临</a></li>
            <li><a href="#">网页设计师的梦想</a></li>
            <li><a href="#">jquery中的链式编程</a></li>
        </ul>
    </div>
</body>

</html>

在这里插入图片描述

圆角边框

设置圆形

  border-radius:50%;
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>border-radius</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        p {
            width: 200px;
            height: 200px;
            margin: 200px auto;
            background-color: pink;
            border-radius: 50%;
        }
    </style>
</head>

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

</html>


在这里插入图片描述

设置矩形

border-radius:高度的一半
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>border-radius之设置矩形</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        p {
            width: 200px;
            height: 100px;
            margin: 200px auto;
            border-radius: 50px;
            background-color: pink;
        }
    </style>
</head>

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

</html>

在这里插入图片描述

border-radius的简写

border-radius:左上角  右上角 右下角  左下角

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>border-radius之简写</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        div:nth-of-type(1) {
            width: 200px;
            height: 200px;
            margin: 200px auto;
            border-radius: 50%;
            background-color: red;
        }
        
        div:nth-of-type(2) {
            width: 200px;
            height: 100px;
            background-color: blue;
            border-radius: 50px;
        }
    </style>
</head>

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

</html>


在这里插入图片描述

盒子阴影

box-shadow:盒子阴影

在这里插入图片描述


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>box-show</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        p {
            width: 200px;
            height: 200px;
            margin: 200px auto;
            box-shadow: 20px 20px 2px 20px blue inset;
            background-color: red;
        }
    </style>
</head>

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

</html>

在这里插入图片描述

css书写规范

  • 选择器与{}之间保留空格 属性与属性值之间保留空格
  • 嵌套元素不应该超过三级
  • 属性值应以分号结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值