首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

重学前端之BFC、IFC、FFC、GFC

BFC、IFC、FFC、GFC是什么,主要解决的什么问题,哪些元素会生成BFC?在解释之前,需要先介绍 Box、Formatting Context的概念。...BFC(Block Formatting Context,块级格式化上下文)定义:BFC 是一个独立的渲染区域,在这个区域内,块级元素按照一定的规则进行布局,并且这个区域内的布局不会影响到外面的元素,外面的元素也不会干扰到它内部的布局...在 IFC 中,内联元素按照水平方向依次排列,当一行排不下时会进行换行处理,并且在垂直方向上,它们的对齐方式遵循一定的规则,比如基线对齐、顶部对齐、中部对齐等。... 在这个 段落中,几个 span 元素作为内联元素,在水平方向依次排列,并且通过 vertical-align: middle 设置了垂直方向的中部对齐方式...内联块元素的排列处理:当内联块元素(display 属性值为 inline-block 的元素)参与到内联布局中时,也遵循 IFC 的规则,比如多个内联块元素组成的导航栏,它们在水平方向排列以及垂直对齐方面都受

18810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端基础篇之CSS世界

    使元素的基线对齐到父元素的基线之上的给定长度,数值正值是基线往上偏移,负值是往下偏移,借此可以实现元素垂直方向精确对齐。)...百分比:20% (使元素的基线对齐到父元素的基线之上的给定百分比,该百分比是line-height属性的百分比。)...div的实际高度比设定的行高大了,为什么呢? 内联元素的默认对齐方式是baseline,所以此时此时span元素的基线是和父元素的基线相对齐的,而此时父元素的基线在拿呢?...由于内联元素默认基线对齐,所以字母x和span元素发生了位移以使基线对齐,导致div高度变大。而此时字母x的半行距比span元素的半行距大,大出的部分就是div的高度增加的部分。...,那为什么底部和div下边缘之间会有空隙呢?

    2.1K50

    vertical-align刨根问底

    很难理解的是,baseline有时会在字体高度的下方,见W3C规范的详细定义 内联-块元素 c c 从左到右依次是:含有流内(in-flow)内容(那个“c”)的内联-块元素,含有流内内容和...overflow: hidden的内联-块元素和不含流内内容(但内容区具有高度)的内联-块元素。...margin的边界用红线表示出来,border为黄色,padding为绿色,内容区为蓝色,每个内联-块元素的baseline用蓝线表示 内联-块元素的outer edge是其margin-box的顶边和底边...当然,正式的定义在W3C规范里都能找到 为什么vertical-align的行为是这样 我们可以更近一步看看某些场景下的竖直对齐,尤其是我们将那些可能出错的场景 居中小图标 有个烦扰着我的问题:我有一个小图标...baseline到满足它们对齐方式的位置,然后行盒的高度也会调整(左图)。

    1.2K50

    关于一个16px的span为什么占用21px的空间

    前言 不知道大家有没有注意到,我们在浏览器中,设置了一个16px的span标签,但实际却占用了21px的高度,比如下图: 1.png 浏览器默认样式 上述这个情况是由浏览器默认样式造成的,浏览器对于行级元素有默认的...4.png 果然,成为内联元素生效了。 但是在内联盒中,有一个渲染规则,就是没个内联元素后面都会由一个空白节点,而且此空白节点拥有该元素的line-height和font-size属性。...class="box">div> 效果如下: 为什么图片下面会有缝隙呢?...所以图片对齐了文字的基线,导致了下面的缝隙。 解决方法 1:设置vertical-align属性即可,把对齐方式改为top,bottom,middle都可以。...2:直接让img变为块级元素,也就没有空白节点了,但是img标签就要独占一行了。 3:直接将父元素font-size:0,字体都为0了,line-height自然也没作用了。

    2K30

    CSS 块元素、内联元素、内联块元素

    仅供学习,转载请注明出处 块元素、内联元素、内联块元素 元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。...那么下面有一个想法,就是div这个块元素能不能设置为同一行呢? 方法当然是有的,就是转化为 行内块元素,如下: ?...好了,使用display: inline-block 将div转为行内块元素之后的确可以将两个div放到一行了。...) 宽高由内容决定 盒子并在一行 代码换行,盒子之间会产生间距 子元素是内联元素,父元素可以用text-align属性设置子元素水平对齐方式 ---- 下面代码演示如下: ?...它们在布局中表现的行为: 支持全部样式 如果没有设置宽高,宽高由内容决定 盒子并在一行 代码换行,盒子会产生间距 子元素是内联块元素,父元素可以用text-align属性设置子元素水平对齐方式。

    3.9K20

    CSS

    选择器 什么是选择器:指定出想要要调整的标签 id选择器:定位到指定id的标签(#+id选择)id不能重复 <!...margin外边距与padding内边距 块元素与内联元素 块元素:会独占一行,默认宽度是填充父元素的宽度,高度是内容的高度。...可再自定义宽高 常见的块元素有:ul列表、form表单、h1-h6标题、hr水平线、p段落、div 内联元素:不会独占一行,不能设置宽高还有边距这些,范围只是仅仅包裹内容。...常见的内联元素有:a链接、em斜体、img图片、input输入控件、label标签、select下拉选择器、textarea多行文本输入、span 块和内联的转换: display:block 内转块...display:inline 块转内 display:inline-block 转成内联块,此元素不仅有块的特性修改宽高边距等还可以同行只要宽度够 浮动:通过设置浮动可以到达同行的效果不用去转内联块

    98320

    【云+社区年度征文】2020一网打尽CSS世界

    块级元素负责结构,内联元素负责内容! 块级元素 一个水平流上只能单独显示一个元素,因此理论上都可以配合clear属性来清除浮动带来的影响。...利用inline-block的包裹特性即可实现(内容过多会自动沾满整行,且分行展示( 水平对齐:内联元素使用text-align;块级元素使用margin。...如果内部没有块级元素或者块级元素没有设置宽度,则“最大宽度”实际上是最大的连续内联盒子的宽度。 连续内联盒子:全部都是内联级别的一个或一堆元素,中间没有任何的换行标签或其他的块级元素。...margin 为块级元素左中右对齐而设计的!text-align 为内联元素左中右对齐而设计的!!!...margin 的初始值大小是0,下述可实现块级元素右对齐!

    5K11

    二、CSS

    块元素、内联元素、内联块元素 元素就是标签,布局中常用的有三种标签,块元素、内联元素、内联块元素,了解这三种元素的特性,才能熟练的进行页面布局。...上下、padding上下) 宽高由内容决定 盒子并在一行 代码换行,盒子之间会产生间距 子元素是内联元素,父元素可以用text-align属性设置子元素水平对齐方式,用line-height属性值设置垂直对齐方式...解决内联元素间隙的方法  1、去掉内联元素之间的换行 2、将内联元素的父级设置font-size为0,内联元素自身再设置font-size 内联块元素 内联块元素,也叫行内块元素,是新增的元素类型,现有元素没有归于此类别的...它们在布局中表现的行为: 支持全部样式 如果没有设置宽高,宽高由内容决定 盒子并在一行 代码换行,盒子会产生间距 子元素是内联块元素,父元素可以用text-align属性设置子元素水平对齐方式,用line-height...属性值设置子元素垂直对齐方式 这三种元素,可以通过display属性来相互转化,不过实际开发中,块元素用得比较多,所以我们经常把内联元素转化为块元素,少量转化为内联块,而要使用内联元素时,直接使用内联元素

    1.8K70

    6-css样式

    ,和sup标签一样的效果 top对象的顶端与所在容器的顶端对齐 text-top对象的顶端与所在行文字顶端对齐 middle元素对象基于基线垂直对齐 bottom对象的底端与所在行的文字底部对齐 text-bottom...让元素的内容将元素撑高 鼠标样式cursor 定义鼠标的样式cursor:pointer default默认,pointer小手形状,move移动形状 透明度opacity opacity:0.3 透明度的值可以使0到1...,内联壮元素 元素分类转换display block,将元素转换为块级元素 inline,将元素转换为行级元素 inline-block,将元素转换为内联块元素 none将元素隐藏 描边border 线条的样式...浮动会产生块级框,而不管该元素本身是什么 清除浮动带来的影响 clear清除浮动 none不清除,left不允许左边有浮动对象,right,both 利用伪类实现清除浮动 .clearFix{...如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口 position:absolute div{ width: 200px; height: 200px; border

    1.9K20

    关于p标签不能嵌套div标签引发的标签嵌套问题总结

    2.分类明细:(照搬来的) 块元素(block element) HTML标签分类明细 * address - 地址 * blockquote - 块引用 * center - 举中对齐块...  正确  (内联嵌套内联)     div>div> 错误  (内联嵌套块级) 块元素可以嵌套块元素(不是所有块级都可以嵌套块级...),或者是内联元素     div>div>div>div>   正确  (块级嵌套块级)     div>div> 正确   (块级嵌套内联)...,块元素和块元素并列一级,内联元素和内联元素并列一级     div>div>        正确(块级和块级并列一级)     div>...div>  正确(内联与内联并列一级)     div>div>     错误(块级和内联并列一级了)

    2.9K30

    关于 vertical-align 你应该知道的一切

    在实际应用中我们经常会遇到下图这种情况,你可能会容易的解决这种无法对齐的问题,但是你知道是什么原因导致他们这个样子吗?...top 与 bottom 对于内联元素,指的是元素的顶部(底部)和当前行框盒子的顶部(底部)对齐;即与 line-box 的顶部(底部)对齐。...对于内联元素指的是元素的垂直中心点与行框盒子基线往上 1/2x-height 处对齐,简单点说就是字母 X 的中心位置对齐;对于 table-cell 元素,指的是单元格填充盒子相对于外面的表格行居中对齐...Demo 1:任意一个块级元素,里面若有图片,则块级元素高度基本上都要比图片的高度高 div class="box"> 块一块的虚线框中部分组合而成的。

    2.8K20

    使用 CSS Scroll Snap 优化滚动,提升用户体验!

    这意味着,滚动必须对齐到滚动容器的开始处。 在下图中,每次用户向右滚动时,浏览器都会将项目捕捉到容器的开头。...Scroll Snapping Alignment 滚动容器的子项目需要一个对齐点,它们可以对齐到这个点。我们可以用start, center或end。 为了更容易理解,下面是它的工作原理。...假设我们在滚动容器上有一块磁铁,这将有助于我们控制捕捉点。 如果scroll-snap-type是垂直的,则对齐对齐将是垂直的。...在向元素添加边距时,滚动将根据边距对齐。 参见下图: .item-2具有scroll-margin-left: 20px。 结果,滚动容器将在该项目之前对齐到20px。...-webkit-overflow-scrolling: touch; } .section { height: 100vh; scroll-snap-align: start; } 块和内联

    2.9K41

    HTML块级元素和行内元素

    块级元素(block-level) 每个块元素通常都会独自占据一整行或多整行,可以对其设置宽度、高度、对齐等属性,常用于网页布局和网页结构的搭建。...常见的块元素有~、、div>、、、等, 其中div>标签是最典型的块元素。...块级元素的特点: (1)总是从新行开始 (2)高度,行高、外边距以及内边距都可以控制。 (3)宽度默认是容器的100% (4)可以容纳内联元素和其他块元素。...行内元素(inline-level) 行内元素(内联元素)不占有独立的区域,仅仅靠自身的字体大小和图像尺寸来支撑结构,一般不可以设置宽度、高度、对齐等属性,常用于控制页面中文本的样式。...(3)宽度默认是容器的100% (4)可以容纳内联元素和其他块元素。 行内元素的特点: (1)和相邻行内元素在一行上。

    3.4K60
    领券