神奇的margin

大家都了解盒模型吧,content+padding+border+margin组成的盒模型,今天主要讲的就是其中的margin(元素的外边距)

  1. 先来了解下margin和容器尺寸之间的关系

    盒子的容器从不能的角度分析,有两种不同的定称,一种是只有content和padding,border组成的,我们称之为可视尺寸(clientWidth、clientHeight);还有一种就是在前面的基础上加上margin值的,我们称之为占据尺寸

    特性一:margin值可以改变的是元素可视尺寸,它有以下前提需要满足:适用于没有设置宽高(width、height)的块状(block)元素;只适用于水平方向尺寸

    使用案例:可以运用于一侧定宽的自适应布局

    特性二:margin可以改变元素的占据尺寸,它有以下前提需要满足:block、inline-block均可以使用;有无设置width、height无关;可以试用于水平和垂直方向

    使用案例:滚动容器的上下留白

   2.margin和百分比单位

    在移动端布局的时候,我们一般会使用相对单位,百分比、em、rem,而此时如果使用margin的单位是相对单位会有不同的计算方式

    特性:普通元素的margin是相对于容器的宽度计算的

       绝对定位元素的margin是相对于第一个定位元(absolute、relative、fixed)素的宽度计算的

   3.margin在垂直方向的高度塌陷问题

    高度塌陷的情况只会存在于垂直方向

    存在高度塌陷的情况:父与子之间存在高度塌陷、相邻子元素之间存在高度塌陷

    在父元素没有给padding、border,或者父元素是非块状格式化的上下文元素、或者父和子元素之间没有inline元素分离,此时如果给子盒子加margin值,在界面上并不会显示出来,如果需要显示,只要破坏上述条件之一即可

    相邻元素之间会存在高度塌陷情况:当两个元素有同正数的margin的时候,他们之间的距离是最大的margin值;当两个元素有一正一负的margin的时候,他们之间的距离是两数之和;当两个元素的margin都是负数的时候,则他们之间的距离,是绝对值较大的那个数值

    技巧:我们在写列表的时候,一般会写间距的时候,只会给上间距或者下间距,其实我们可以利用高度塌陷这个特性,上下间距都写上,这样即使页面有一点变动,也不会影响整体的效果

   4.margin里面的取值为auto分析

   我们在使用margin的时候,一般会使用auto取值,你知道auto取值,在浏览器来来讲,是怎么解析的吗

   一般我们写一个块状元素的时候,即使不写width值,他会自动的充满容器,而一旦写了值(不论是固定值还是相对值),那么就会按照所写尺寸按照标准文档流去解析,此时元素的右边就会出现空白区域,写上margin:0 auto即可以左右均分空白区域即可。还有一种应用是,你可以写上margin-right:30px;左边剩余的部分,你写上margin-left:auto也会自动的去解析,使其均分空白区域

注意:上述的情况只会出现在block元素的水平方向上,像img、input都是不可以的,因为他在不写宽度的时候,是没有办法自动填充盒子的,且标准文档流的块状元素在不写高度的时候,是不会自动填充盒子的高度的。 

  

时间: 2024-11-03 21:33:03

神奇的margin的相关文章

神奇的margin之豆瓣豆瓣么么哒

在经过周末的豆瓣主页和这周的豆瓣电影,表示网页什么的已经被我玩坏了. 老师在周末布置豆瓣主页,对于只学了四天的css和html的我,表示鸭梨山大. 最开始的两个小时只能做出一个连自己都看不下去的导航栏.最后在网上各种百度,问同学,在前辈的帮助下,勉强写出了个框架.经过熬夜到凌晨五点熟悉了写网页的基本套路后,开始觉得网页什么的太happy了. 在后来做豆瓣电影时基本排版两个小时就搞定了.开始觉得飘飘然的时候,发现网页布局细节有很多问题.如下图. 看到了这样的结果,我开始反思.开始放慢自己的脚步,花

CSS基础深入之细说盒子模型

Html任何一个元素(element)都可以当成一个盒子(box)来看待,可以结合现实中的盒子来理解下文,下文其中一些单词应该是通俗易懂的需要记录的单词. 基本情况 每一个盒子都有一个内容区域(content area),例如盒子里的一堆文字或者一张图片的边界,其周围是具有一定宽度的padding area,border area,和margin area,还有cotent area(类似于下图中线条的中间跑道部分). 每个area都是具有一定宽度或高度的,譬如在上下方的就是占用高度,在两侧的就

margin和padding

一.margin基础语法与结构 1.margin语法 Margin:10px Margin的值是数字+html单位,同时也可以为auto(自动.自适应) 2.应用结构 Div{margin:10px} 设置div对象四边间距为10px 3.Margin说明 margin是设置对象外边距外延边距离,控制块级元素之间的距离 margin的值有三种情况,可以为正整数和负整数并加单位如PX像素(margin-left:20px):可以为auto自动属性(margin-left:auto 自动):可以为百

BFC 神奇背后的原理

BFC已经是一个耳听熟闻的词语了,网上有许多关于BFC的文章,介绍了如何触发BFC, 以及BFC的一些用处(如清浮动,防止margin重叠等).虽然我知道如何利用BFC解决这些问题,但当别人问我BFC是什么,我还是不能很有底气地解释清楚.于是这两天仔细阅读了CSS2.1 spec, 和许多文章,来全面地理解BFC: BFC是个什么? 哪些元素会生成BFC BFC的神奇的作用,及背后的原理 一.BFC是什么? 在解释BFC是什么之前,需要先介绍Box, Formatting context的概念.

Margin的深入了解

Margin的深入了解 关于margin对于一个前端开发者是非常常见的一个CSS属性,而我今天所分享margin属性是为了更加深入的了解margin的一些特性,从而在实际应用中,减少代码量.主要内容如下: 1.关于margin的百分比特性. 2.关于margin的auto的作用机制. 3.关于margin的重叠. 4.关于margin的负值. 一.margin的百分比特性. 我们使用百分比时经常会忽略这个问题,margin的百分比相对于我们直接设置margin-top这类有所不同,margin的

移动平台的meta标签-----神奇的功效

对于桌面平台web布局中大家对meta标签再熟悉不过了,它永远位于 head 元素内部,对做SEO的朋友一定对meta有种特殊的感情吧,今天我们就来说说移动平台的meta标签,在移动平台meta标签究竟有哪些神奇的功效呢? 1.Meta 之 viewport 说到移动平台meta标签,那就不得不说一下viewport了,那么什么是viewport呢?viewport即可视区域,对于桌面浏览器而言,viewport指的就是除去所有工具栏.状态栏.滚动条等等之后用于看网页的区域.对于传统WEB页面来

JS开发HTML5游戏《神奇的六边形》(四)

近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容太多,为方便大家阅读,所以分成四部分来讲解. 本文为第四部分,主要包括: 16.分数往上飘动画 17.形状飞入动画 18.其他动画表现添加 19.游戏结束界面 20. 添加LOGO 21. 渲染优化 若要一次性查看所有文档,也可点击这里. 十六. 分数往上飘的动画 在表现加分时,分数会有个缩放的效果,然后往上

深入理解BFC和Margin Collapse

深入理解BFC和Margin Collapse BFC的理解与应用 首先我们来看看w3c规范对BFC的解释,其实对于这种概念的学习上,我们总是建议首先寻找官方的定义,因为原则上来说官方的才是最权威和正确的,而且还比较详细,千万不要因为看到英文就畏惧不前. 什么是BFC(Block formatting contexts) w3c规范中的BFC定义: 浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及

前端精选文摘:BFC 神奇背后的原理

一.BFC是什么? 在解释 BFC 是什么之前,需要先介绍 Box.Formatting Context的概念. Box: CSS布局的基本单位 Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的.元素的类型和 display 属性,决定了这个 Box 的类型. 不同类型的 Box, 会参与不同的 Formatting Context(一个决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染.让我们看看有哪些盒子: block-level b