整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS3盒模型尺寸的计算方法,box-sizing属

CSS3盒模型尺寸的计算方法,box-sizing属性的使用,你知道吗?

SS3中有关增强用户界面的属性中具备一个名为box-sizing的属性,该属性用于设置CSS3盒模型宽度和高度的计算方法。本篇文章小海前端(头条号)为大家来介绍该属性的取值以及具体的用法。

承接文章:CSS3对块级元素实现了阴影效果,类似于Photoshop中的图层样式

技术等级:中级 | 适合有一定的CSS基础的人士阅读。

希望收藏了这篇文章的你同时也可以关注一下“小海前端”的头条号,因为这些文章都是连载的,并且是经过系统的归纳和总结的。塌下心来认真阅读,你一定会学到对你有用的知识。

CSS3所提供的增强用户界面的属性以及与此相关的属性比较多,小海前端(头条号)将分几次对其进行讲解。所包含的所有增强用户界面的属性包括:

  • box-shadow

  • box-sizing

  • overflow-x

  • overflow-y

  • resize

  • outline

  • outline-width

  • outline-style

  • outline-color

  • outline-offset

  • pointer-events

  • user-select

  • appearance

  • content

  • counter-increment

  • counter-reset

  • quotes

本篇文章为大家讲解第二个增强用户界面属性:盒模型计算公式box-sizing。

一、认识box-sizing属性:

在默认的盒模型中,当设置了宽度和高度后,若又使用了padding属性,则盒子的宽度和高度会由于paddin属性的存在而增大。要想依旧保持原有的宽度和高度,需要从宽高中减去padding属性的取值。

CSS3增加了box-sizing属性来改善上述问题的存在。

CSS3 使用box-sizing属性调整盒模型尺寸的就算方式

该属性可以取下列值:

  • content-box,默认值,盒模型的padding和border的大小不包括在盒模型的width和height中。

  • border-box,盒模型的padding和border的大小包括在盒模型的width和height中。

二、content-box取值的理解:

例1:在页面中有一个id属性取值为box1的块级元素。设置box1的宽度和高度均为700像素。为该块级元素设置一个50像素的填充距离,再为该块级元素设置一个25像素的边框距离。CSS3代码如下所示。

#box{

width:700px; height:700px;

border:solid 20px #ff5857;

padding:50px;

box-sizing: content-box;

}

因为content-box取值的含义是padding和border得大小不包括在盒模型的width和height中,因此最终盒模型的尺寸计算公式如下所示:

  • 盒模型的宽度=width + padding-left-width*2 + border-left-width*2;

  • 盒模型的高度=height + padding-left-height*2 + border-left-height*2

因此例1中#box的实际尺寸为:

  • 宽度=700px + 50px*2 + 25px*2=850px

  • 高度=700px + 50px*2 + 25px*2=850px

如果仍希望最终的实际尺寸保持700px*700px的大小,那就需要从宽度和高度中减去padding和border的大小。

  • width=700px - 50px*2 - 25px*2=550px

  • height=700px - 50px*2 - 25px*2=550px

最终的CSS3代码如下所示。

#box{

width:550px; height:550px;

border:solid 20px #ff5857;

padding:50px;

box-sizing: content-box;

}

三、border-box取值的理解:

例2:仍采用例1中的块级元素,设置box-sizing属性的取值为padding-box,CSS3代码如下所示。

#box{

width:700px; height:700px;

border:solid 20px #ff5857;

padding:50px;

box-sizing: border-box;

}

因为border-box取值的含义是padding和border得大小都包括在盒模型的width和height中,因此最终盒模型的尺寸计算公式如下所示:

  • 盒模型的宽度=width

  • 盒模型的高度=height

因此例1中#box的实际尺寸为:

  • 宽度=700px

  • 高度=700px

这样就不要从width和height中减去任何数据,就可以得到希望的尺寸了。

小海声明

在头条上发表的这些文章都是从前端开发的基础开始一步一步讲起的。我非常希望能有更多的前端开发初学者通过我写的文章,逐步学到一定的知识,甚至慢慢有了入门的感觉。这些文章都是我这几年教学过程中的经验,每写一篇时我都尽量把握好措辞,用简单易懂的语言描述,同时精心设计版面,让版面更加丰富,激发阅读兴趣。所以,每一篇文章可能篇幅不长,但是都要耗费小海老师很久的时间。

希望收藏了这篇文章的你同时也可以关注一下“小海前端”的头条号,因为这些文章都是连载的,并且是经过系统的归纳和总结的。塌下心来认真阅读,你一定会学到对你有用的知识。

关注“小海前端”,我会继续为大家奉上更加深入的前端开发文章,也希望更多的初学者跟着学下去,我们共同将前端开发的路努力坚持的走下去。

文章预告

明天的文章中,继续为大家讲解CSS3中有关增强用户界面的属性。

天学习下css的盒子模型,这是一种布局模式,所谓盒子模型,就是将所有元素表示为一个个矩形的盒子(box)。CSS 决定这些盒子的大小、位置以及属性(例如颜色、背景、边框尺寸)。


一个CSS盒子模型主要由以下几个部分组成:

  1. 内容(Content):这是盒子模型的中心,包含了元素的“真实”内容,比如文本、图片、视频等。内容区域的大小可以通过width和height属性来直接设置。

  1. 内边距(Padding):内边距位于内容区域与边框之间的空间。它可以是正值或零,但不能是负值。内边距是透明的,会占用布局空间。你可以使用padding-top、padding-right、padding-bottom、padding-left或简写属性padding来设置内边距。



  1. 边框(Border):边框环绕在内边距和内容之外。边框可以是实线、虚线等,并可以拥有自己的样式、宽度和颜色。边框是盒子模型的可见部分之一,可以通过border-style、border-width、border-color或简写属性border来设置边框的样式、宽度和颜色。



  1. 外边距(Margin):外边距是边框之外的透明区域,用于分隔相邻的盒子。外边距可以是正值或负值,负值的外边距会导致盒子相互重叠。外边距是透明的,不会占用背景色或背景图片的空间,但会占用布局空间。你可以使用margin-top、margin-right、margin-bottom、margin-left或简写属性margin来设置外边距。

这些组成部分共同定义了CSS盒子的总尺寸和布局方式。了解盒子模型对于掌握CSS布局至关重要,因为几乎所有的页面布局都是基于盒子模型的。

Web开发中,理解和掌握HTML5盒模型是至关重要的。盒模型不仅是CSS布局的基础,而且它直接影响着页面元素如何在浏览器中呈现。本文旨在深入探讨盒模型的各个组成部分以及它们如何影响网页布局。

盒模型基础

盒模型是CSS布局的核心概念,它决定了文档中的元素如何定位,以及它们之间的空间关系。一个元素的盒模型由以下几部分构成:

  • 内容(Content):元素的文本和图像等实际内容。
  • 内边距(Padding):内容区域与边框之间的空间。
  • 边框(Border):围绕在内边距和内容外的可见线。
  • 外边距(Margin):元素与其他元素之间的外部空间。

每个部分都对元素的最终尺寸和页面布局有着直接影响。

盒模型的类型

标准盒模型

在标准盒模型中,元素的width和height属性仅包括内容区域。内边距和边框的宽度是额外计算的。

box-sizing: content-box;

IE盒模型(怪异模式)

在IE盒模型中,元素的width和height包括内容、内边距和边框。

box-sizing: border-box;

现代浏览器支持box-sizing属性,允许开发者选择使用哪种盒模型。

布局影响

边距合并

当两个垂直外边距相遇时,它们会合并成一个外边距,这通常称为边距合并(margin collapsing)。这个现象会影响布局,特别是在构建垂直间距时。

盒模型和响应式设计

在响应式设计中,盒模型的理解尤为重要。使用border-box可以简化计算,因为元素的宽度包含了内边距和边框,这使得元素的尺寸更容易控制。

浮动和清除

浮动元素会影响盒模型,因为它们脱离了正常的文档流。清除浮动则是为了防止相邻元素的盒子相互覆盖。

定位

绝对定位和相对定位的元素有着不同的盒模型表现。绝对定位元素的外边距不会与其他外边距合并,而相对定位元素可能会影响其周围元素的布局。

盒子尺寸计算

当涉及到内边距和边框时,计算元素的实际尺寸可能会变得复杂。理解盒模型有助于精确计算和预测元素的实际占位。

最佳实践

为了更好地控制布局,以下是一些推荐的最佳实践:

  • 默认情况下使用box-sizing: border-box;,这样可以让元素尺寸的计算更直观。
  • 明确设置所有元素的外边距和内边距,避免不必要的继承和不确定性。
  • 在进行布局设计时,始终考虑到边距合并的可能性。
  • 使用开发者工具来检查和调试盒模型的尺寸,确保布局按预期进行。

示例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Box Model Layout Example</title>
<style>
  * {
    box-sizing: border-box;
  }

  body {
    font-family: 'Arial', sans-serif;
    margin: 0;
    padding: 0;
    background-color: #f4f4f4;
  }

  .header {
    background-color: #333;
    color: #fff;
    padding: 20px;
    text-align: center;
  }

  .sidebar {
    background-color: #f9f9f9;
    padding: 20px;
    border-right: 2px solid #ddd;
    float: left;
    width: 20%;
    height: calc(100vh - 40px); /* Full height minus header and footer */
  }

  .main-content {
    padding: 20px;
    float: left;
    width: 80%;
  }

  .footer {
    background-color: #333;
    color: white;
    text-align: center;
    padding: 10px;
    clear: both;
  }

  .box {
    background-color: #007bff;
    color: white;
    padding: 10px;
    margin: 10px 0;
    border: 3px solid #0056b3;
  }
</style>
</head>
<body>

<div class="header">
  <h1>My Website</h1>
</div>

<div class="sidebar">
  <h2>Sidebar</h2>
  <p>This is the sidebar area.</p>
</div>

<div class="main-content">
  <h2>Main Content</h2>
  <p>This is the main content area.</p>
  <div class="box">Box Model Example</div>
</div>

<div class="footer">
  <p>Footer Content</p>
</div>

</body>
</html>

结语

盒模型是网页布局的基石,它决定了元素如何在页面上占据空间。作为一名前端工程师,深入理解盒模型的工作原理对于创建精确和灵活的布局至关重要。随着技术的发展,虽然我们有了更多的布局工具和框架,但盒模型仍然是所有布局决策的基础。掌握它,你将能够更加自信和高效地设计和构建现代Web页面。