Web前端 — CSS之盒模型 以及margin负值、塌陷重叠问题

简介: Web前端 — CSS之盒模型 以及margin负值、塌陷重叠问题

所有命运馈赠的礼物,都已在暗中标好了价格。——茨威格

 

1.什么是盒模型?

说一下你对CSS盒模型的理解。

css的盒子模型(box model),

可以把每个可视的HTML元素看作是一个矩形盒子,也就是一个盛装内容的容器。

这个盒子由里到外包括:content(内容)、padding(内边距)、border(边框)、margin(外边距)四个部分。

2.盒模型的类型

盒模型有两种,标准盒模型IE盒模型(也称怪异盒模型)

(1)标准盒模型(宽高 = 内容部分)

(2)IE盒模型(宽高 = 内容+内边距+边框)

(3)box-sizing属性

在CSS中,可以通过box-sizing属性来指定盒模型的类型。

box-sizing属性有两个可选值:content-box和border-box。

默认值是content-box,表示使用标准盒模型。

如果将box-sizing设置为border-box,则使用IE盒模型。

/* 标准模型(默认) */
box-sizing:content-box;
 /*IE模型*/
box-sizing:border-box;

(4)题目:计算盒子模型的宽度

<style>
    .div {
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #ccc;
    }
</style>
<html>
    <div class="div">
    <!-- 请问.div盒子的宽度是多少? -->
</html>

①div盒子的宽度是多少?

答案是122px,默认情况下,.div为标准盒子模型,

width属性设置的是content的宽度,

计算公式为 offersetWidth = content + padding-left + padding-right + border-left + border-right

                                       = 100 + 20 + 2

                                       = 122px

(offsetWidth、offsetHeight表示元素在页面中所占用的总宽度、总高度)

②如何让offsetWidth = width

如何让offsetWidth = 100px?

<style>
    .div {
        width: 100px;
        height: 100px;
        padding: 10px;
        border: 1px solid #ccc;
        box-sizing: border-box;
    }
</style>
<html>
    <div class="div">
</html>

添加 box-sizing: border-box;

3.margin问题

 

(1)纵向折叠问题

相邻元素的margin-top和margin-bottom会发生折叠

推荐文章:

深入了解margin折叠

 

(2)margin负值问题

  • margin-top 和 margin-left负值,元素向上、向左移动;
  • margin-right负值,右侧元素左移,自身不受影响;(浏览器渲染时忽略其部分宽度/重新计算其宽度)
  • margin-bottom负值,下方元素上移,自身不受影响。(浏览器渲染时忽略其部分高度/重新计算其高度)

 

 

相关文章
|
17天前
|
编解码 前端开发 JavaScript
构建高效响应式Web界面:现代前端框架的比较
【4月更文挑战第9天】在移动设备和多样屏幕尺寸盛行的时代,构建能够适应不同视口的响应式Web界面变得至关重要。本文深入探讨了几种流行的前端框架——Bootstrap、Foundation和Tailwind CSS,分析它们在创建响应式设计中的优势与局限。通过对比这些框架的栅格系统、组件库和定制化能力,开发者可以更好地理解如何选择合适的工具来优化前端开发流程,并最终实现高性能、跨平台兼容的用户界面。
|
18天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
19天前
|
编解码 前端开发 JavaScript
Web 前端开发中的最佳实践
本文将介绍 Web 前端开发中的最佳实践,包括代码组织、性能优化、响应式设计和用户体验等方面。通过遵循这些实践,开发人员可以提高开发效率,优化用户体验,并减少潜在的问题和错误。
|
1天前
|
前端开发 JavaScript Go
构建高性能Web应用:优化前端资源加载
在构建现代Web应用时,优化前端资源加载是至关重要的一步。本文将介绍一些提升Web应用性能的关键策略,包括减少HTTP请求、压缩和合并资源、使用CDN加速、以及异步加载技术等。通过实施这些优化策略,开发人员可以显著提升网站的加载速度和用户体验。
|
2天前
|
前端开发 JavaScript UED
Web前端开发:探索技术与艺术的交融
Web前端开发:探索技术与艺术的交融
8 1
|
2天前
|
前端开发 JavaScript Java
前端与后端:构建现代Web应用的双翼
前端与后端:构建现代Web应用的双翼
|
12天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
18 1
|
12天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
12天前
|
前端开发 JavaScript vr&ar
前端新技术探索:WebAssembly、Web Components与WebVR/AR
【4月更文挑战第12天】WebAssembly、Web Components和WebVR/AR正重塑Web应用的未来。WebAssembly允许C/C++等语言在Web上高效运行,提供接近原生的性能,如游戏引擎。Web Components通过Custom Elements和Shadow DOM实现可复用的自定义UI组件,提升模块化开发。WebVR/AR(现WebXR)则让VR/AR体验无需额外应用,直接在浏览器中实现。掌握这些技术对前端开发者至关重要。
16 3
|
23天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。