美文网首页
饥人谷-任务十一

饥人谷-任务十一

作者: 饥人谷_罗伟恩 | 来源:发表于2016-08-28 17:49 被阅读0次

一、 在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例

  1. 场景
  • 必须是处于常规文档流(非float和绝对定位)的块级盒子,并且处于同一个BFC当中。
  • 没有线盒,没有空隙,没有padding和border将他们分隔开
  • 都属于垂直方向上相邻的外边距
  1. 如何合并
  • 元素的margin-top与其第一个常规文档流的子元素的margin-top(父子)
  • 元素的margin-bottom与其下一个常规文档流的兄弟元素的margin-top(兄弟)
  • 高度为0并且最小高度也为0,不包含常规文档流的子元素,并且自身没有建立新的BFC的元素的margin-top和margin-bottom(自身)
  1. 如何不让相邻元素外边距合并
  • 创建了新的BFC的元素(例如浮动元素或者'overflow'值为'visible'以外的元素)与它的子元素的外边距不会折叠
  • 浮动元素不与任何元素的外边距产生折叠(包括其父元素和子元素)
  • 绝对定位元素不与任何元素的外边距产生折叠
  • inline-block元素不与任何元素的外边距产生折叠
  1. 范例
范例

参考资料

二、去除inline-block内缝隙有哪几种常见方法?

产生缝隙的根本原因是,因为继承了行内元素的特性,所以元素之间会有一个空白符,跟普通文本符是一样的,因此要消除缝隙就是要消除这个空白文本符;

四种主要方法

参考资料

三、父容器使用overflow: auto| hidden撑开高度的原理是什么?

  • 原理是因为父容器形成了一个BFC,BFC相当于是一个闭合的大容器,是一个独立的布局环境,影响子元素,而不受外界元素的影响,在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。而形成一个BFC的条件之一就是overflow: auto| hidden,当形成BFC后就可以闭合浮动,使脱离文档流的元素,回到容器中,便将整个高度撑开了;

四、BFC是什么?如何形成BFC,有什么作用?

  • W3C解释BFC:浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。在BFC中,盒子从顶端开始垂直地一个接一个地排列,两个盒子之间的垂直的间隙是由他们的margin 值所决定的。在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠。在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)。
  • 浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。
  • BFC的应用:
  1. BFC第一个应用就是在清除浮动
  2. BFC第二个应用就是可以使浮动后文字不绕着图片,就是将p标签生成一个BFC的空间,这样就是一个独立的,不会受旁边的img影响;(overflow:auto)
  3. BFC第三个应用就是使div之间的上下margin不折叠,给每个div外在包裹一个div并且让它形成BFC的空间;(overflow:auto)

五、浮动导致的父容器高度塌陷指什么?为什么会产生?有几种解决方法

  • 实际上并不能说是父容器塌陷,因为原本父容器的高度就是由里面的子元素撑开的,当里面的子元素浮动后脱离了正常的文档流,父容器的高度自然就没有了,就出现了所谓的“塌陷”的情况;
  • 解决方法:
主要的三种方法

六、以下代码每一行的作用是什么? 为什么会产生作用? 和BFC撑开空间有什么区别?

.clearfix:after{ 
    content: ''; /*空字符*/ 
    display: block; /*因原来是行内元素现需要形成块级元素*/ 
    clear: both; /*清除浮动*/ 
} 
.clearfix{ 
    *zoom: 1; /*css hack兼容IE6\7*/
}```

- 区别:
 1. 利用BFC是闭合浮动,并不是清除浮动,是将脱离正常文档流的纳入一个新的BFC中,这个BFC就是父容器,有了子元素后高度自然就被撑开了;
 2. clearfix实际就是利用伪元素:after,相当于给父容器的最下面添加了一个display:block的伪元素,它clear:both;就可以清除父容器中子元素浮动带来的影响。这里就是传统意义的清除浮动;

**本博客版权归本人和饥人谷所有,转载需说明来源**




相关文章

  • 饥人谷-任务十一

    一、 在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 场景 必须是处...

  • 饥人谷-任务十七

    一、函数声明和函数表达式有什么区别 (*) 主要区别函数声明会有声明提升,而函数表达式的规则跟变量一样。例:源码:...

  • 饥人谷-任务十六

    一、CSS和JS在网页中的放置顺序是怎样的? 首先页面对于CSS的依赖很大,要是先加载HTML的话,页面没有CSS...

  • 饥人谷-任务十三

    一、如何调试 IE 浏览器 IE7以上可以用控制台来调试,按F12即可 没有控制台的,通过设置border: 1p...

  • 饥人谷-任务8

    一、CSS选择器常见的有几种? 标签选择器 属性选择器 class选择器 id选择器 伪类选择器 后代选择器&直接...

  • 饥人谷-任务7

    一、有序列表、无序列表、自定义列表如何使用?写个简单的例子。三者在语义上有什么区别?在哪些情况下使用哪种(重要)?...

  • 饥人谷-任务10

    一、文档流的概念指什么?有哪种方式可以让元素脱离文档流? 首先明确一点的是,W3C规范中没有document fl...

  • 饥人谷-任务十二

    一、负边距在让元素产生偏移时和position: relative有什么区别? 设置-margin的元素,不会占用...

  • 饥人谷-任务9-2

    一、CSS Sprite(雪碧图|精灵图)指什么? 有什么作用 css雪碧图又叫css精灵或css sprite,...

  • 饥人谷-任务9-1

    一、盒模型包括哪些属性 margin外边距 、padding内边距 、border边框 、content内容 二、...

网友评论

      本文标题:饥人谷-任务十一

      本文链接:https://www.haomeiwen.com/subject/ybdtettx.html