详解CSS 怪异盒模型和标准盒模型

详解CSS 怪异盒模型和标准盒模型

盒模型基础知识

CSS的盒模型是用来解释HTML文档中元素的布局的基本概念。任何元素都被认为是一个盒子,盒子由四个部分组成:外边距(margin)、边框(border)、内边距(padding)和内容(content)。

盒子的宽度和高度是由这四个部分的大小及其组成顺序来定义的。

在CSS标准之前,盒模型存在两种不同的模型,它们分别是怪异盒模型和标准盒模型。

怪异盒模型

怪异盒模型(quirks mode)是指在旧版本的浏览器中呈现的盒模型。在这个模型中,盒子的宽度和高度不仅包括内容、内边距和边框,还包括外边距。

怪异盒模型的优点是简单易懂,在早期的网页制作中使用较为广泛。但是,由于怪异盒模型的存在,当我们改变元素的边框、外边距等属性时,会影响到元素的实际宽度和高度,造成了很多问题。

标准盒模型

在CSS标准之后,W3C提出了新的标准盒模型。在标准盒模型中,盒子的宽度和高度只包括内容、内边距和边框,不包括外边距。

这种方式更符合人们的直观感受,也更便于布局和计算元素的大小。

.box {
  width: 100px;
  height: 100px;
  padding: 10px;
  border: 1px solid #000;
  margin: 20px;
}

在标准盒模型中,上述样式中的盒子宽度是 100+2*10+2*1 = 122px,高度是 100+2*10+2*1 = 122px,而在怪异盒模型中,宽度和高度都是 100+2*10+2*1+2*20 = 172px。

如何切换盒模型

我们可以使用CSS的box-sizing属性来切换盒模型。

  • box-sizing: content-box;表示使用标准盒模型,即默认盒子大小只包括内容。
  • box-sizing: border-box;表示使用怪异盒模型,即盒子大小包括内容、内边距、边框和外边距。

以下是两个示例:

示例1

div {
  width: 200px;
  height: 200px;
  padding: 20px;
  border: 10px solid #f00;
  margin: 50px;
  box-sizing: content-box;
}

在此示例中,box-sizing: content-box,表示使用标准盒模型,因此盒子的宽度和高度分别是 200+2*20+2*10 = 260px。

示例2

div {
  width: 200px;
  height: 200px;
  padding: 20px;
  border: 10px solid #f00;
  margin: 50px;
  box-sizing: border-box;
}

在此示例中,box-sizing: border-box,表示使用怪异盒模型,因此盒子的宽度和高度分别都是 200px。

这两个示例可以在浏览器中通过调试工具查看盒子的大小来进行验证。

结论

CSS的盒模型是前端开发中非常重要的基础知识。掌握盒模型的概念和使用方法,能够更好地进行网页布局和调试。在盒模型中,我们常用的是标准盒模型,但是也需要清楚地知道怪异盒模型,并根据需要进行切换。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解CSS 怪异盒模型和标准盒模型 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript30 一个月纯 JS 挑战中文指南(英文全集)

    下面是详细讲解“JavaScript30 一个月纯 JS 挑战中文指南(英文全集)”的完整攻略: 简介 “JavaScript30 一个月纯 JS 挑战中文指南(英文全集)”是由 Wes Bos 所创建的一个纯JavaScript挑战项目,旨在帮助JavaScript初学者提高编程能力。该项目包含30个不同主题的挑战,每个挑战需要纯JavaScript完成。…

    css 2023年6月9日
    00
  • 如何用angularjs制作一个完整的表格

    制作一个完整的表格需要用到AngularJS中的一些重要概念和指令。以下是详细的攻略: 1. 设置AngularJS应用 在HTML文件中,使用ng-app指令来定义一个AngularJS应用。例如: <html ng-app="myApp"> 其中,myApp是定义的应用名称。 2. 定义AngularJS模块 使用angu…

    css 2023年6月10日
    00
  • 详解css粘性定位position:sticky问题采坑

    下面我将为您详细讲解“详解CSS粘性定位position:sticky问题采坑”的完整攻略。 什么是position:sticky position:sticky是CSS3中的一种定位方式,它的特点是在元素在滚动到一定位置时会固定在指定的位置(即sticky位置),直到滚动到另一个指定位置时才会取消固定。 它与position:fixed很相似,但又有所不同…

    css 2023年6月9日
    00
  • CSS Sprites 圆角制作教程

    CSS Sprites 圆角制作教程 CSS Sprites是一种优化Web页面性能的技术,可以将多个小图片合并成一张大图片,减少HTTP请求次数,从而提高页面加载速度。本攻略将详细讲解如何使用CSS Sprites制作圆角效果,包括基本原理、制作方法和示例说明。 1. 基本原理 CSS Sprites的基本原理是将多个小图片合并成一张大图片,然后使用CSS…

    css 2023年5月18日
    00
  • 基于Vue制作组织架构树组件

    下面我将详细讲解基于Vue制作组织架构树组件的完整攻略。 1. 确定数据结构 在制作组织架构树组件之前,首先需要确定组件所需的数据结构。通常,我们可以使用树形结构来表示组织架构。在Vue中可以使用以下数据结构: [ { id: 1, name: ‘CEO’, children: [ { id: 2, name: ‘VP1’, children: [ { id…

    css 2023年6月10日
    00
  • 使用CSS的overflow属性防止float撑开div的方法

    当一个父元素包含了浮动的子元素时,若该子元素宽度超出父元素宽度,则会撑开父元素,导致布局混乱。为了解决这个问题,可以使用 CSS 的 overflow 属性来控制子元素的溢出部分。 具体来讲,有以下两种方法可以使用 CSS 的 overflow 属性防止 float 撑开 div。 方法一:使用overflow:hidden 可以通过设置父元素的 overf…

    css 2023年6月10日
    00
  • 如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度

    让我来详细讲解一下如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度的攻略。 问题描述 在HTML中,pre元素和textarea元素都是常用于显示文本的元素。但是,它们在默认情况下都会出现滚动条,如果文本内容过长会导致页面布局不够美观。所以,我们需要去掉它们的滚动条,并让它们自动换行、自适应文本内容高度。 解决方法 去掉滚动条…

    css 2023年6月10日
    00
  • 深入剖析CSS中的线性渐变linear-gradient

    下面是深入剖析CSS中的线性渐变linear-gradient的完整攻略: 什么是线性渐变? 线性渐变是CSS3中非常常用的渐变效果之一,它允许我们创建从一种颜色到另一种颜色的平滑过渡。线性渐变的方向、颜色和位置是可以自定义的,因此使得我们可以创建非常多样化的、自然的渐变效果。 linear-gradient的使用 想要创建一个线性渐变,我们可以使用line…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部