当前位置: 首页 > news >正文

[CSS]盒子模型

在这里插入图片描述


前言

  • 系列文章目录:
    • [目录]HTML CSS JS
  • 根据视频和PPT整理
  • 视频及对应资料:
  • HTML CSS
    • 老师笔记: https://gitee.com/xiaoqiang001/html_css_material.git
    • 视频:黑马程序员pink老师前端入门教程,零基础必看的h5(html5)+css3+移动端前端视频教程
    • 视频对应资源
    • 链接:【https://pan.baidu.com/s/1k1dpC6iGA93c6gVsUvPqYw】
    • 提取码:1234
    • 【GitHub 仓库链接】

文章目录

  • 前言
  • 1. 盒子模型的组成
  • 2. 边框(border)
    • 2.1 边框的宽度
    • 2.2 边框的颜色
    • 2.3 边框的样式
    • 2.4 边框的简写(复合写法)
    • 2.5 边框不同边的设置
    • 2.6 表格的边框设置
    • 2.7 边框会影响盒子的实际大小
  • 3. 内边距(padding)


网页布局过程:

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

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

1. 盒子模型的组成

盒子模型:就是把 HTML 页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。

CSS 盒子模型本质上是一个盒子,封装周围的 HTML 元素,它包括:边框、外边距、内边距、和 实际内容

在这里插入图片描述

2. 边框(border)

在这里插入图片描述
border可以设置元素的边框。

边框有三部分组成:边框宽度(粗细) 、边框样式、边框颜色

  • 边框的宽度:border-width
  • 边框的样式:border-style
  • 边框的颜色:border-color

在这里插入图片描述

2.1 边框的宽度

  <style>
    div {
      width: 200px;
      height: 200px;
      /* 盒子的边框的宽度为 5px */
      border-width: 5px;
    }
  </style>
</head>
<body>
  <div></div>
</body>

2.2 边框的颜色

  <style>
    div {
      width: 200px;
      height: 200px;
      /* 盒子的边框的宽度为 5px */
      border-width: 5px;
      /* 边框的颜色为 red */
      border-color: red;
    }
  </style>
</head>
<body>
  <div></div>
</body>

2.3 边框的样式

  • border-style 取值:
    • none: 无轮廓。
    • hidden: 隐藏边框。IE7及以下尚不支持
    • dotted: 点状轮廓。IE6下显示为dashed效果
    • dashed: 虚线轮廓。
    • solid: 实线轮廓
    • double: 双线轮廓。两条单线与其间隔的和等于指定的border-width值
    • groove: 3D凹槽轮廓。
    • ridge: 3D凸槽轮廓。
    • inset: 3D凹边轮廓。
    • outset: 3D凸边轮廓。

注意:当 border-style 取值为 none 时,border-color 将被忽略,border-width 计算值为0,除非边框轮廓为图像,即border-image。

  <style>
    div {
      width: 200px;
      height: 200px;
      /* 盒子的边框的宽度为 5px */
      border-width: 15px;
      /* 边框的颜色为 red */
      border-color: red;
    }
  </style>

在这里插入图片描述

  <style>
    div {
      width: 200px;
      height: 200px;
      /* 盒子的边框的宽度为 5px */
      border-width: 15px;
      /* 边框的颜色为 red */
      border-color: red;
      /* 边框的样式为实线 */
      border-style: solid;
    }
  </style>
</head>
<body>
  <div></div>
</body>

在这里插入图片描述

2.4 边框的简写(复合写法)

语法:

border: border-width border-style border-color
  • 边框的三个属性没有固定的书写顺序。
  <style>
    div {
      width: 200px;
      height: 200px;
      /* 盒子的边框的宽度为 5px */
      /* border-width: 15px; */
      /* 边框的颜色为 red */
      /* border-color: red; */
      /* 边框的样式为实线 */
      /* border-style: solid;  */

      /* 边框的简写 */
      border: 15px solid red;
    }
  </style>
</head>
<body>
  <div></div>
</body>

在这里插入图片描述

2.5 边框不同边的设置

边框对应的四个边:

  • 上:border-top
  • 下:border-bottom
  • 左:border-left
  • 右:border-right
  <style>
    div {
      width: 200px;
      height: 200px;
      /* 分别设置边框的四个边 */
      border-top: 15px solid red;
      border-bottom: 15px dotted red;
      border-left: 15px dashed red;
      border-right: 15px double red;
    }
  </style>
</head>
<body>
  <div></div>
</body>

在这里插入图片描述

2.6 表格的边框设置

    <style>
        /* 设置表格的大小 */
        table {
            height: 249px;
            width: 500px;
        }
        /* 给表格的表头和表格的每个单元格设置边框 */
        table 
        th, td {
            border: 2px solid blue;
        }
    </style>

由于每个单元格都有自己的边框,所以两个单元格间的边框会比较粗,为两个单元格边框宽度的和
在这里插入图片描述

border-collapse 属性控制浏览器绘制表格边框的方式。它控制相邻单元格的边框。

border-collapse: collapse;
  • collapse 单词是合并的意思,表示相邻边框合并在一起,即相邻边框的宽进行合并而不是相加
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>今日小说排行榜</title>
    <style>
        /* 设置表格的大小 */
        table {
            height: 249px;
            width: 500px;
        }
        /* 给表格的表头和表格的每个单元格设置边框 */
        table 
        th, td {
            border: 2px solid blue;
        }
        table {
          /* 合并相邻的边框 */
          border-collapse: collapse;
        }
    </style>
</head>
<body>
    <table align="center" cellspacing="0">
    <thead>
        <tr>
            <th>排名</th>
            <th>关键词</th>
            <th>趋势</th>
            <th>进入搜索</th>
            <th>最近七日</th>
            <th>相关链接</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>鬼吹灯</td>
            <td><img src="down.jpg"></td>
            <td>456</td>
            <td>123</td>
            <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
        </tr>

        <tr>
                <td>1</td>
                <td>鬼吹灯</td>
                <td><img src="down.jpg"></td>
                <td>456</td>
                <td>123</td>
                <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
        </tr>
        <tr>
                <td>3</td>
                <td>西游记</td>
                <td><img src="up.jpg"></td>
                <td>456</td>
                <td>123</td>
                <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
        </tr>
        <tr>
                <td>1</td>
                <td>鬼吹灯</td>
                <td><img src="down.jpg"></td>
                <td>456</td>
                <td>123</td>
                <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
        </tr>
        <tr>
                <td>1</td>
                <td>鬼吹灯</td>
                <td><img src="down.jpg"></td>
                <td>456</td>
                <td>123</td>
                <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
        </tr>
        <tr>
                <td>1</td>
                <td>鬼吹灯</td>
                <td><img src="down.jpg"></td>
                <td>456</td>
                <td>123</td>
                <td> <a href="#">贴吧</a> <a href="#">图片</a> <a href="#">百科</a> </td>
        </tr>
    </tbody>           
    </table>
</body>
</html>

在这里插入图片描述

2.7 边框会影响盒子的实际大小

边框会额外增加盒子的实际大小。盒子的实际大小为盒子内容的大小加上边框的粗细。

有两种方案解决:

  1. 测量盒子大小的时候,不量边框。即单独测量内容区大小和边框的大小。
  2. 如果测量的时候包含了边框,则需要 width/height 减去边框宽度。

3. 内边距(padding)

相关文章:

  • 【 C++ 】开散列哈希桶的模拟实现
  • 阿里云数据库(RDS)查看空间使用情况
  • 【C++编程语言】之 文件操作
  • 人生模式 - 如何跟潜意识对话
  • ubuntu18.04安装redis
  • 02 LaTeX文字实战应用
  • Flash:Flash动画设计软件界面的简介、Flash AS 3.0代码编程入门教程之详细攻略
  • C语言进阶——自定义类型
  • 微信公众号网课查题系统
  • golang学习笔记系列之函数
  • VJ_Dressing_思维
  • 关于我的vsc不能远程debug这件事
  • [English]英语积累本
  • java-php-python-ssm爱馨敬老院网站计算机毕业设计
  • 9.24 Day59---网络相关知识
  • AngularJS指令开发(1)——参数详解
  • CSS居中完全指南——构建CSS居中决策树
  • golang 发送GET和POST示例
  • golang中接口赋值与方法集
  • HTML5新特性总结
  • Java方法详解
  • Java面向对象及其三大特征
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Magento 1.x 中文订单打印乱码
  • MobX
  • SQLServer之索引简介
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 复习Javascript专题(四):js中的深浅拷贝
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 通过git安装npm私有模块
  • 通过npm或yarn自动生成vue组件
  • 鱼骨图 - 如何绘制?
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #define
  • #define、const、typedef的差别
  • #define用法
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (rabbitmq的高级特性)消息可靠性
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • .NET Core WebAPI中封装Swagger配置
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net/c# memcached 获取所有缓存键(keys)
  • ::before和::after 常见的用法
  • @media screen 针对不同移动设备
  • @RequestMapping-占位符映射