入门10

浮动元素有什么特征?对父容器、其它浮动元素、普通元素、文字分别有什么影响?

  • 浮动元素的特征
    • 不占据普通文档流的空间。
    • 浮动元素的左(右)外边界不能超过其包含块的左(右)内边界
    • 浮动元素的左(右)外边界必须是源文档中之前出现的左浮动(右浮动)的元素的右(左)边界,除非后出现浮动元素的顶端在先出现浮动元素的底端下面
    • 左浮动元素的右外边界不会在其右边浮动元素的左外边界的右边。一个右浮动元素的左外边界不会在其左边任何左浮动元素的右外边界的左边
    • 一个浮动元素的顶端不能比其父元素的内顶端更高
    • 浮动元素的顶端不能比之前所有浮动元素或块级元素的顶端更高
    • 如果文档中一个浮动元素之前出现另一个元素,浮动元素的顶端不能比包含该元素所生成的框的任何行框的顶端更高。
    • 如果浮动元素出现在另一个浮动元素的旁边,而因此可能导致超出包含块的话,这个浮动元素会向下浮动到之前浮动元素下面的某一点。
    • 浮动元素必须尽可能高地放置。
    • 左浮动元素必须向左尽可能远,右浮动元素必须向右尽可能远。
    • inline 元素设置浮动,改变 inline 的 display 使得它像个 block-level。
    • 在重叠上,浮动元素会遮盖 block-level 元素的背景,不会遮盖 inline 元素。

内边界:指盒模型中的 content 边界。外边界:指盒模型中的 margin 边界。

  • 影响
    • 非BFC的正常文档流父元素会"感受"不到浮动元素的存在,从而产生"高度塌陷"。
    • 其他浮动元素会“察觉”到浮动元素的存在按照从左到右的“正常文档流”排列。
    • 普通元素(非 inline-level)会无视浮动元素的存在,从而占据浮动元素的“原来的位置”
    • 文字(也既 inline-level)级的元素会环绕浮动元素,表现的像是察觉到浮动元素一样

清除浮动指什么?如何清除浮动?两种以上方法

  • 清除浮动指元素的侧边不允许出现浮动元素,从而使浮动元素的不占据普通文档流空间而导致的父元素的高度塌陷问题得到解决,主要通过 clear 属性实现。
  • clear:指定一个元素是否可以在它之前的浮动元素旁边,或者必须向下移动(清除浮动)在它的下面。clear 属性适用于浮动和非浮动元素。
    • 当应用于非浮动块时,它将非浮动块的边框边界移动到所有相关浮动元素外边界的下方。这个行为作用时会导致 margin collapsing 不起作用。
    • 当应用于浮动元素时,它将元素的外边界移动到所有相关的浮动元素外边界的下方。这会影响后面浮动元素的布局,后面的浮动元素的位置无法高于它之前的元素。
  • 清除浮动的方法:
    • 设置浮动包含块的父元素 height 值。
    • 使包含块的父元素形成BFC(而对于IE7-浏览器,则用到其特有属性 haslayout )。
    • 通过添加 :after 伪元素,然后在伪元素上设置 clear 属性来实现

有几种定位方式,分别是如何实现定位的,参考点是什么,使用场景是什么?

  • inherit
    • 从父元素继承position属性的值
    • 一般不用
  • static
    • 默认值,没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)
  • relative
    • 生成相对定位的元素,相对于元素本身正常位置进行定位
    • 属性值:left, top,right ,bottom
    • 应用于对其自身进行细微调整
  • absolute
    • 生成绝对定位的元素,相对于static定位以外的第一个祖先元素(offset parent)进行定位
    • 属性值:left, top,right ,bottom
  • fixed
    • 生成绝对定位的元素,相对于浏览器窗口进行定位。
    • 属性值:left, top,right ,bottom
    • 需要一直停留在窗口的元素,例如
  • sticky
    • 兼容性较差,一般用JS实现
    • 新的css3属性,它的表现类似 position: relative 和 position: fixed 的合体,目标区域在屏幕中可见时,它的行为就像 position: relative; 而当页面滚动超出目标区域时,它的表现就像 position: fixed,它会固定在目标位置。
  • 注意:如果同时定义了left和right值,且width和height有值,那么left生效,right无效,同样,同时定义了top和bottom,top生效

z-index 有什么作用? 如何使用?

  • z-index 规定了元素在Z轴(距离用户远近)上的顺序,值越大则越靠近用户,表现就是元素在最上面。
  • z-index仅在设置了position非static属性的元素生效,且z-index的值只能在兄弟元素之间比较
  • z-index 默认值为 auto,则不建立层叠上下文。设置为 0 则会建立层叠上下文。
  • 示例

position: relative 和 负margin 都可以使元素位置发生偏移?二者有什么区别

  • position: relative 相对自己原本的位置偏移,不影响其它普通流中元素的位置。
  • margin:除了让元素自身发生偏移还影响其它普通流中的元素。

BFC 是什么?如何生成 BFC?BFC 有什么作用?举例说明

  • BFC:块格式化上下文(block formatting context) 是Web页面的可视CSS渲染的一部分。它是块盒子的布局发生及浮动体彼此交互的区域。首先BFC是一个名词,是一个独立的布局环境,我们可以理解为一个箱子(实际上是看不见摸不着的),箱子里面物品的摆放是不受外界的影响的
  • 满足下列条件之一就可形成BFC:
    • 根元素(即HTML元素)或其它包含它的元素
    • 浮动(元素的 float 不是 none)
    • 绝对定位的元素(元素具有 position 为 absolute 或 fixed)
    • 内联块状元素 inline-blocks(元素具有 display: inline-block)
    • 表格单元格(元素具有 display: table-cell,HTML表格单元格默认属性)
    • 表格标题(元素具有 display: table-caption,HTML表格标题默认属性)
    • 块元素具有 overflow ,且值不是 visible
    • display: flow-root
    • display: flex
  • 注意:浮动不会影响其它BFC中元素的布局,并且清除浮动只能清除同一BFC中在它前面的元素的浮动,在其之后的不行。
  • 应用:
    • 自适应的两栏布局。
    • 清除元素内部浮动。
    • 嵌套元素margin边距合并问题的解决。
  • 举例:利用BFC清浮动
<body>
<div style="border: solid 5px #0e0; width: 300px; overflow: hidden;">
    <div style="height: 100px; width: 100px; background-color: Red;  float: left;">
    </div>
    <div style="height: 100px; width: 100px; background-color: Green;  float: left;">
    </div>
    <div style="height: 100px; width: 100px; background-color: Yellow;  float: left;">
    </div>
</div>
</body>

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

  • 外边距合并出现的三个场景
    • 同一个BFC,且同处于普通流中的垂直相邻元素外边距合并
    • 父子元素的外边距合并
    • 空元素的外边距合并
  • 合并规则
    • 两个margin都是正值的时候,取两者的最大值;
    • 当 margin 都是负值的时候,取的是其中绝对值较大的,然后,从0位置,负向位移;
    • 当有正有负的时候,先取出负 margin 中绝对值中最大的,然后,将其(即绝对值最大的 负margin)和正 margin 值当中最大的相加。
    • 所有毗邻的margin要一起参与运算,不能分步进行
  • 不让相邻元素外边距合并的方法
    • 被非空内容、padding、border 或 clear 分隔开
    • 不在一个普通流中或一个BFC中
    • margin在垂直方向上不毗邻
    • 如果我们想减少这种情况的发生:在实际编写过程中,应尽量避免同时使用margin-bottommargin-top
  • 总结
    • 这些 margin 都处于普通流中,并在同一个BFC中;
    • 这些 margin 没有被非空内容、padding、border 或 clear 分隔开;
    • 这些 margin 在垂直方向上是毗邻的,包括以下几种情况:
      • 一个 box 的 top margin 与第一个子box 的 top margin
      • 一个 box 的 bottom margin 与最后一个子box 的 bottom margin,但须在该box 的 height 为 auto 的情况下
      • 一个 box 的 bottom margin 与紧接着的下一个 box 的 top margin
      • 一个 box 的 top margin 与其自身的 bottom margin,但须满足没创建BFC、零min-height、零或者“auto”的 height、没有普通流的子元素
    • 例外的情况:
      • 根元素(html)的外边距不会参与折叠
      • 设置任何属性的空span和空div不影响任何布局,可以无视之。
  • 实例:父子外边距合并

代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,630评论 1 92
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 911评论 0 2
  • 1.在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 概念:在CSS当...
    饥人谷_任磊阅读 620评论 0 3
  • 也想像燕子披一袭高贵的黑衣 穿梭在三月的花开里衔来垒巢的春泥 谁知暖暖的日光温柔唤住我 来吧,枝头的绿叶里小憩最惬...
    有兔茕茕阅读 282评论 9 4
  • 叶雨滴答滴的好想好想你 春风笑嘻嘻的好像好像你 鸟鸣突然静了如同遇见你 猫咪尖起耳朵仿佛听到你 鱼儿坐在岸边常常提...
    字游阅读 205评论 0 0