Web前端开发笔记——第三章 CSS语言 第五节 盒子模型

简介: Web前端开发笔记——第三章 CSS语言 第五节 盒子模型

一、CSS布局与定位


在CSS中对一个网页进行布局与定位,首先通过盒子模型,即页面元素的大小、边框、各元素之间的间距将布局进行设计元素,然后通过定位,即文档流、浮动定位、层定位来决定盒子模型的位置,且盒子是可以嵌套的。


二、盒子模型


简单的来说盒子模型它可以是一个区域、图片、列表、导航栏等等,都可以称作盒子,即HTML元素都可以称作为盒子。

可以通过下图来简单了解一下盒子模型,以下是一个网页页面当按下F12后的html源码,我们可以看到布局中的盒模型:

1667092075588.jpg


三、盒子模型的组成


盒子模型以四个部分组成,可以以几个不同大小的矩形内嵌为例,从外到内依次分别是外边距(Margin)、边框(Border)、内边距(Padding,也可以叫做填充)、内容(Content),其中内容的空间由height属性和width属性设定。

1667092117223.jpg

例如,下列代码,设置一个div区域,设置内容的空间宽度为250px、高度为200px,边框大小为20px,且为实体天蓝色,内边距大小为20px,外边距大小为20px:

css代码:

div {
  width: 250px;
  height: 200px;
  border: 20px solid skyblue;
  padding: 20px;
  margin: 20px;
}

html代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../CSS/new_file.css" />
  </head>
  <body>
  <div>
    内容
  </div>
  </body>
</html>

运行结果如下:

1667092130445.jpg

我们可以发现其实该盒子模型的实际宽度(高度)=内容宽度(高度)+两边内边距(padding)+两边边框(border)+两边外边距(margin)。

例如上图的:

div {
  width: 250px;
  height: 200px;
  border: 20px solid skyblue;
  padding: 20px;
  margin: 20px;
}

该盒子模型的实际宽度=内容宽度(width:250px)+两边内边距(左侧内边距padding-left:20px+右侧内边距padding-right:20px)+两边边框(左边框border-left:20px+右边框border-right:20px)+两边外边距(左侧外边距padding-left:20px+右侧外边距padding-right:20px)=370px;

该盒子模型的实际高度=内容高度(height:200px)+两边内边距(上侧内边距padding-top:20px+下侧内边距padding-bottom:20px)+两边边框(上边框border-top:20px+下边框border-bottom:20px)+两边外边距(上侧外边距padding-top:20px+下侧外边距padding-bottom:20px)=320px。


四、设置边框的属性


通过对border属性进行设置,可以改变边框的大小、颜色等等。

border-width:属性设置边框的宽度,后跟像素px或thick(粗)、medium(中,即默认值)、thin(细)。

border-style:属性设置边框的样式,它默认值是none,后跟solid时表示实线边框;后跟dashed时表示虚线边框;后跟dotted时表示点线边框;后跟double时表示定义两个边框,其中两个边框的宽度取值取决于border-width的值;后跟inset或outset属性,表示设置3D嵌入或3D突出边框,其取决于border-color边框的颜色;后跟ridge或groove,表示设置3D脊边框或3D槽边框,其也是取决于border-color边框的颜色。

border-color:属性设置边框的颜色,这里要注意如果只设置border-color:改变边框颜色是不起作用的,前提是要设置了border-style:边框样式。

也可以直接通过border:属性在一个属性中设置边框的属性,即同时设置border-width属性、border-style属性和border-color属性,例如:border: 2px dashed red;

例如,下列代码,设置盒子模型的边框属性为虚线红色且宽度为2px:

css代码:

#first {
  width: 150px;
  height: 200px;
  border: 2px dashed red;
  padding: 20px;
  margin: 20px;
}

html代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../CSS/new_file.css" />
  </head>
  <body>
  <div id="first">
    <p>计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器。</p>
  </div>
  </body>
</html>

运行结果如下:

1667092186936.jpg

且也可以在css中附加以下代码,对边框的上边框、下边框或左右边框进行设置,即单独设置各边属性。如下,设置边框的上边框、下边框为2px,且为实体蓝色:

border-top: 2px solid blue;
  border-bottom: 2px solid blue;

运行结果如下:

1667092202836.jpg


五、设置外、内边距的属性


可以通过不同方向(top、bottom、right、left)来设置外、内边距不同面的边距,在设置margin属性值时,依次是按top、bottom、right、left的顺序来设置的,也可以设置三个值,中间的值是左右边距,左右即是上边距和下边距;可以设置两个值,即表示上下边距、左右边距。

#first {
  width: 150px;
  height: 200px;
  border: 2px dashed red;
  padding: 20px;
  margin: 20px 10px 20px 15px;
}

当有两个盒子模型合并时,margin属性垂直方向合并(即垂直方向像素大的即为合并结果),而水平方向不合并。且当设置div区域,若想让该区域水平居中,可设置margin属性margin:0 auto使该区域达到效果。

例如,下列代码:

css代码:

#first {
  text-align: left;
  font-size: 0;
}
#first img {
  width: 100px;
  height: 100px;
  border: 2px dashed skyblue;
  padding: 5px;
  margin-left: 2px;
}

html代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../CSS/new_file.css" />
  </head>
  <body>
  <div id="first">
    <img src="../image/mountain.jpg">
    <img src="../image/酒柜.png">
  </div>
  </body>
</html>

运行结果如下:

1667092245677.jpg


六、overflow 属性


当盒子模型的内容溢出盒子时,通过overflow 属性可以设置处理方式,它分为以下五种:

当 overflow: visible时,溢出内容会显示在盒子模型以外,这也是默认情况,即不设置overflow 属性时的默认值。

当 overflow: hidden时,溢出内容会被修剪,即内容被修剪掉。

当 overflow: auto时,如果内容被修剪,溢出内容会以滚动条的方式来查看溢出的内容。

当 overflow: scroll时,溢出内容会以滚动条的方式来查看溢出的内容,若内容没有溢出,滚动条仍然可见,但无法滚动,即它是始终显示滚动条的。

当 overflow: inherit时,继承父元素overflow属性的值。

例如,下列代码,设置盒子模型的属性overflow: visible,使溢出内容显示在模型以外:

css代码:

div {
  width: 150px;
  height: 200px;
  border: 20px;
  padding: 20px;
  margin: 20px;
  background-color: aquamarine;
}

html代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../CSS/new_file.css" />
  </head>
  <body>
  <div>
    <p>计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。</p>
  </div>
  </body>
</html>

运行结果如下,可以看到内容是溢出的:

1667092280291.jpg

要区分当overflow: auto属性和overflow: scroll属性的不同情况,overflow: scroll属性的滚动条是始终显示的,与内容无关。

例如下列代码,可以看出auto属性和scroll属性的区别:

css代码:

#first {
  width: 150px;
  height: 200px;
  border: 20px;
  padding: 20px;
  margin: 20px;
  background-color: aquamarine;
  overflow: scroll;
}
#second {
  width: 100px;
  height: 150px;
  border: 20px;
  padding: 20px;
  margin: 20px;
  background-color: aquamarine;
  overflow: auto;
}

html代码:

<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <title></title>
  <link rel="stylesheet" href="../CSS/new_file.css" />
  </head>
  <body>
  <div id="first">
    <p>计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器。</p>
  </div>
  <br />
  <div id="second">
    <p>由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。可分为超级计算机、工业控制计算机、网络计算机、个人计算机、嵌入式计算机五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。</p>
  </div>
  </body>
</html>

运行结果如下,我们发现区域first的内容并未溢出,也显示了滚动条,但滚动条不能使用;区域second的内容溢出,通过设置auto属性,可以支持滚动查看修剪内容。:

1667092315261.jpg

相关文章
|
10月前
|
并行计算 前端开发 JavaScript
Web Worker:让前端飞起来的隐形引擎
在现代 Web 开发中,前端性能优化是一个至关重要的课题,尤其是对于计算密集型的应用,如图像处理、视频处理、大规模数据分析等任务。单线程的 JavaScript 引擎常常成为性能瓶颈,导致应用变得迟缓。Web Worker,作为一种强大的技术,使得前端能够在后台进行并行计算,从而实现高效的任务处理,不影响主线程的运行和用户的交互体验。
817 108
|
10月前
|
JavaScript 前端开发 Java
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
814 72
前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
|
12月前
|
移动开发 前端开发 JavaScript
前端web创建命令
本项目使用 Vite 搭建 Vue + TypeScript 开发环境,并基于 HTML5 Boilerplate 提供基础模板,快速启动现代前端开发。
229 2
|
12月前
|
Web App开发 编解码 移动开发
零基础音视频入门:你所不知道的Web前端音视频知识
本文回顾了Web端音视频的发展历程,同时还介绍了视频的编码、帧率、比特率等概念,提到了Canvas作为视频播放的替代方案,以及FFmpeg在音视频处理中的重要作用等知识。
341 1
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1233 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
8月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
616 4
|
12月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
12月前
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
372 104

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    1177
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    519
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    404
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    398
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    513
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    685
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    1228
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    277
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    1021
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    477