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负值,下方元素上移,自身不受影响。(浏览器渲染时忽略其部分高度/重新计算其高度)

 

 

相关文章
|
15天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
29 3
|
1月前
|
前端开发 JavaScript 测试技术
前端工程化:构建高效、可维护的现代Web应用
【10月更文挑战第5天】前端工程化:构建高效、可维护的现代Web应用
|
1月前
|
前端开发 测试技术 持续交付
前端工程化:构建高效、可维护的现代Web应用
【10月更文挑战第5天】前端工程化:构建高效、可维护的现代Web应用
|
12天前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
16天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
17 3
|
16天前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
32 2
|
30天前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
149 1
|
1月前
|
JavaScript 前端开发 开发者
前端开发趋势:从Web Components到Vue.js
【10月更文挑战第9天】前端开发趋势:从Web Components到Vue.js
|
1月前
|
缓存 前端开发 JavaScript
探索现代Web开发中的前端性能优化策略
【10月更文挑战第5天】探索现代Web开发中的前端性能优化策略
|
1月前
|
前端开发
前端:行内元素的 margin 和 padding
在前端开发中,行内元素的处理是至关重要的。行内元素默认与其他元素在同一行显示,不会占据独立的空间。对于行内元素而言,其外边距(margin)和内边距(padding)的设置有特定规则:垂直方向上的外边距和内边距不会影响其他元素,但水平方向的则会增加元素的宽度,可能会影响相邻元素的位置。合理设置这些属性,可以有效控制页面布局与间距。

热门文章

最新文章