0

0

CSS中margin的用法和常见问题的分析

小云云

小云云

发布时间:2017-12-19 10:45:52

|

2857人浏览过

|

来源于php中文网

原创

关于margin我们是在熟悉不过的了,本文主要给大家介绍了css中margin的用法和常见问题的分析,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

一、简介

margin我们一般习惯的叫它外边距,分别可以设置四个方向的外边距,这里不再赘述赋值语法。

实际上,我们通常设置的margin是物理级别的设置,而margin还有start、end、before、after等,这些主要是逻辑级别的设置,如果你感兴趣的话,自行Google吧。

在设置margin时,我们必须要知道:

立即学习前端免费学习笔记(深入)”;

  • 对于块级元素,margin在四个方向是多有效;

  • 对于内联元素,margin只在水平方向有效。

二、盒子模型

说到margin,不得不说一下盒子模型:

1、从内之外content => padding => border => margin
 

盒子模型之所以要终点理解,主要是盒子模型的标准不一样,也就决定我们在CSS中设置的width到底是什么,这时大家多会想起那几个计算公式,实际上CSS3的到来,我们可以通过box-sizing来设置盒子模型的标准:

2、border-box: width从border开始计算;
 

3、content-box: width从content开始计算;
 

4、padding-box: 已经从标准中去除。

再来一张图,是不是已经了然于胸了
 

三、margin重叠问题

这种问题主要发生在block元素上并且不是浮动元素(这里并没有描述清楚,在后面会详细讲),下面我们来看发生的情况。

1、发生在相邻的兄弟元素


    .a {
        margin: 50px 0;
    }
    .b {
        margin: 100px 0;
    }

相邻的兄弟元素发生的margin重叠
 

这种情况发生margin重叠,相邻兄弟节点之间的距离为最大margin值,避免这种情况的最佳方式,在垂直方向上,只设置margin-top或者margin-bottom。

2、发生在父子节点


    p(class="b")
    p(class="a")
        p(class="c") C


    .a {
        margin: 20px 0;
    }
    .b {
        margin: 100px 0;
    }

父子节点发生margin重叠
 

这里按照我们的理解应该是a距离b是20像素,c距离a是100像素。但是事实却不是这样,这里我们可以通过以下方法解决重叠的问题:

短视频去水印微信小程序
短视频去水印微信小程序

抖猫高清去水印微信小程序,源码为短视频去水印微信小程序全套源码,包含微信小程序端源码,服务端后台源码,支持某音、某手、某书、某站短视频平台去水印,提供全套的源码,实现功能包括:1、小程序登录授权、获取微信头像、获取微信用户2、首页包括:流量主已经对接、去水印连接解析、去水印操作指导、常见问题指引3、常用工具箱:包括视频镜头分割(可自定义时长分割)、智能分割(根据镜头自动分割)、视频混剪、模糊图片高

下载
  • 父元素设置border;

  • 父元素设置padding;

  • 父元素设置overflow为hidden或者scroll,其他的不适用;

  • 父元素设置position为fixed或者absolute,其他的不适用。

四、神奇的margin负值

我们给一个block元素设置四个方向上的margin会发生什么:

  • top和left设置负值,会将元素向上或者左移动对应的像素距离;

  • bottom和right设置负值,则会将相邻的元素向上或者左移动。

这里还有一点,查资料的时候,发现很多人多说margin负值可以改变元素的宽度,这里我想更正一下,这并不是margin负值的特性,而是margin的特性,比如下面这段CSS,完全可以设置块级元素的宽度。


    .item {
        margin: 0 200px;
        height: 200px;
    }

对于margin赋值在布局的应用很广泛,比如我们已知一个元素的宽高,你可以通过margin负值居中。


    .item {
        position: absolute;
        background: red;
        width: 200px;
        height: 200px;
        top: 50%;
        left: 50%;
        margin-top: -100px;
        margin-left: -100px;
    }

五、margin与float

对于这两个让人头疼的属性混到一起,我只想说,真的很爆炸。上面我说过“这种问题主要发生在block元素上并且不是浮动元素”,这里要再补充两点:

  • 相邻兄弟元素,如果两者多是浮动元素,则不发生margin重叠;

  • 父子元素,如果其中一个是浮动元素,则不会发生margin重叠;

主要还是由于浮动元素不在正常的文档流中,所以还是用上清除浮动的方法比较好。(一下为bootstrap的实现方式)


    .clearfix::before, .clearfix::after {
        content: " ";
        display: table;
    }

    .clearfix::after {
        clear: both;
    }

学完本文相信大家对css 中margin属性有更深的认识,大家赶紧收藏起来吧。

相关推荐:

CSS的margin有什么作用

有关margin负值浅析

分享一篇关于margin的相关技巧

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 18.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号