CSS浮动与定位

问答

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

  • 浮动元素有什么特征
    float 属性可以使一个元素脱离正常的文档流,然后被安放到它所在容器的的左端或者右端,并且其他的文本和行内元素环绕它。
  • 对父容器的影响
    如果父容器内的元素均为浮动元素,且父容器未设置height值,会出现父容器高度塌陷
  • 对其他浮动元素的影响
    同为float: left 或者 float: right的元素,会按照定义的先后顺序进行排列,一行内放不下时会另起一行继续排列;
    如果给某个浮动元素设置了clear:left属性,则该元素左侧不允许有浮动元素,如果已经有浮动元素在该元素左侧,则该元素会换行,甚至可能出现被卡住的情况,clear:right及clear:both属性类似
  • 对普通元素的影响;
    普通元素会因为感知不到浮动元素的存在而占据浮动元素的位置,可能导致被覆盖;
  • 对文字的影响
    普通元素感知不到浮动元素的存在,但普通元素内的文字会感知到浮动元素的存在从而避开浮动元素进行显示,会出现文字环绕的现象。

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

  • 清除浮动指什么
    如果父容器内的元素均为浮动元素,且父容器未设置height值,会出现父容器高度塌陷,清理浮动其实指的时清除掉父容器高度塌陷的问题
  • 如何清楚浮动

1 在父容器内添加空的标签,并对该空标签样式设置为clear:both,使该空标签左右均没有浮动元素,从而使该标签位置下移,以达到撑开父容器高度的目的
2 利用父容器的伪类选择器给该父容器添加一个空的内容,达到撑开父容器高度的目的,代码如下:

.父容器:after{
    content:"";
    display:block;
    clear:both;
  }

3 使父元素形成新的BFC以达到清楚浮动

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

  • inherit:从父元素继承;
  • static:默认值,没有定位,元素出现在正常的文档流中。参考点是文档流中的位置。
  • relative:相对定位。相对于元素本身正常位置进行定位,通过top、bottom、left、right属性来设置偏移量。使用场景:为绝对定位设定参照物或对元素自身位置进行局部调整。
  • absolute:绝对定位。相对于static定位意外的第一个祖先元素进行定位,若都没有发现则以html标签为参考进行定位。使用场景:当想让元素参照特定参照物进行定位时使用。
  • fixed:固定定位。生成绝对定位元素,相对于viewport进行定位。
  • sticky:对象在常态时遵循普通流。它就像是relative和fixed的合体,当在屏幕中时按常规流排版,当卷动到屏幕外时则表现如fixed。

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

z-index 属性指定了一个元素及其子元素的 z-order。 当元素之间重叠的时候,z-order 决定哪一个元素覆盖在其余元素的上方显示。 通常来说 z-index 较大的元素会覆盖较小的一个。
对于一个已经定位的元素(即position属性值是非static的元素),z-index 属性指定:

  • 元素在当前堆叠上下文中的堆叠层级。
  • 元素是否创建一个新的本地堆叠上下文。

语法:

/* Keyword value */
z-index: auto;
/* <integer> values */
z-index: 0;
z-index: 3;
z-index: 289;
z-index: -1;/* 使用负值降低优先级 */

/* Global values */
z-index: inherit;
z-index: initial;
z-index: unset;
  • auto
    元素不会建立一个新的本地堆叠上下文。当前堆叠上下文中新生成的元素和父元素堆叠层级相同。
  • <integer>
    整型数字是生成的元素在当前堆叠上下文中的堆叠层级。元素同时会创建一个堆叠层级为0的本地堆叠上下文。这意味着子元素的 z-indexes 不与元素外的其余元素的 z-indexes 进行对比。

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

  • position:relative使元素位置发生偏移时,只是改变了该元素的显示位置,并未改变该元素在文档流中本来的位置,会与其他元素产生视觉上的重叠现象;
  • 负margin改变元素位置时同时改变该元素在文档流中的位置;

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

6.1 BFC 是什么

block formatting context,块级格式化上下文

6.2 如何生成 BFC

块格式化上下文由以下之一创建:

  • 根元素或其它包含它的元素
  • 浮动 (元素的float不是 none)
  • 绝对定位的元素 (元素具有position为 absolute 或 fixed)
  • 内联块 inline-blocks (元素具有 display: inline-block)
  • 表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性
    )
  • 表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)
  • 块元素具有overflow且值不是 visible
6.3 BFC 有什么作用
  • BFC会阻止垂直外边距(margin-top、margin-bottom)折叠
    按照BFC的定义,只有同属于一个BFC时,两个元素才有可能发生垂直Margin的重叠,这个包括相邻元素,嵌套元素,只要他们之间没有阻挡(例如边框,非空内容,padding等)就会发生margin重叠。
    因此要解决margin重叠问题,只要让它们不在同一个BFC就行了,但是对于两个相邻元素来说,意义不大,没有必要给它们加个外壳,但是对于嵌套元素来说就很有必要了,只要把父元素设为BFC就可以了。这样子元素的margin就不会和父元素的margin发生重叠
    例子:
父子元素上下margin合并
父子元素上下margin未合并
  • BFC不会重叠浮动元素
    例子:
浮动元素重叠.png
浮动元素未重叠.png
  • BFC可以包含浮动
    例子:
父容器高度塌陷.png
高度被撑开.png

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

7.1 在什么场景下会出现外边距合并
  • 兄弟元素同处于一个BFC时,会出现上下margin合并的现象
  • 当父子元素中的父元素没有border或padding时,且父元素不是BFC时,父子元素的上下margin会出现合并
7.2 如何合并

合并后的margin值取值为所合并的两者中的大者

7.3 如何不让相邻元素外边距合并?

可以把相邻元素处于不同的BFC中从而阻止边距合并

例子.png
7.4 给个父子外边距合并的范例

请见6.3的第一个例子

代码1
代码2
代码3
代码4

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,725评论 1 92
  • 1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 答:浮动模型也是一种可视化格式模型...
    饥人谷_牛牛阅读 379评论 0 0
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动元素脱离了普通文档流,文档的普通流...
    Zzzoecho阅读 230评论 0 0
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 4.对普通元素:普通元素将不能感知到浮...
    l_meng阅读 300评论 0 0
  • 1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型也是一种可视化格式模型,浮...
    谨言_慎行阅读 406评论 0 3