CSS浮动、定位

这几天有空,学习了CSS浮动和定位,和大家分享几个问题,希望对学习CSS浮动和定位的同学有所帮助。

一、文档流的概念指什么?有哪种方式可以让元素脱离文档流?

  • 文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。并最终窗体自上而下分成一行行,并在每行中按从左到右的顺序排放元素。脱离文档流即是元素打乱了这个排列,或是从排版中拿走。
  • 让元素脱离文档流的方法有:浮动和定位。

二、有几种定位方式,分别是如何实现定位的,使用场景如何?
CSS定位方式有四种:默认定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)

  • static:默认值。没有定位,元素在正常的流中,top,right,bottom,left和z-index属性无效。示例如下:


  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位。其中的相对指的是相对于元素在默认流中的位置。
    ****注意:
    1.将元素position属性设置为relative之后,再通过top,bottom,left,right属性对其进行相对于原来位置的偏移;
    2.元素偏移之后,他本来在默认文档流中占据的位置仍然存在,其紧挨其后的元素的定位依据它本来的位置定位;
    3.该元素偏移之后,可能存在覆盖其他元素的情况,可以使用z-index属性显示层级有限级别。****
    示例:

    第二个盒子元素相对于之前的位置(虚线部分)向下平移了20px,向右平移了30px。
    要想使第三个块级元素被遮挡的部分浮现出来,我们可以使用如下代码实现:

    注意:使用z-index必须保证元素的样式中含有定位方式,之前忘了给box3添加定位方式,导致z-index对box3不起作用。
  • absolute:生成绝对定位的元素,相对于static定位外的第一个父元素进行定位。
    注意:
    1.绝对定位的元素已经脱离了文档流,普通流中其他元素的布局就像绝对元素不存在一样;
    2.绝对定位的元素的位置是相对于最近的已定位的祖先元素,如果元素没有已定位的祖先元素,它的位置就相对于body;
    3.绝对定位的框可以覆盖页面的其他元素。

    示例:

    这种情况是离box2最近的父元素已定位的情况,如果离box2最近的父元素没有定位的话,示例如下:
  • fixed:本质上是一种绝对定位,不为元素预留空间。通过指定相对于屏幕视窗的位置来指定元素的空间,且元素的位置在屏幕滚动时不会发生变化。应用于很多网站顶端的固定导航、右下角的固定广告等等。
    示例:



    三、absolute, relative, fixed偏移的参考点分别是什么?
    absolute偏移的参考点是:相对于最近的已定位的父元素,如果没有,则相对于body元素;
    relative偏移的参考点是:相对于元素在普通流中的原来位置;
    fixed偏移的参考点是:相对于浏览器窗口。
    四、z-index 有什么作用? 如何使用?
    z-index属性用于设置节点的堆叠顺序,拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面。
    使用方法:示例



    1.z-index仅对定位元素有效(position:relative||absolute||fixed);
    2.z-index只可比较同级元素
    五、position:relative和负margin都可以使元素位置发生偏移?二者有什么区别?

    position:relative和负margin都可以使元素位置发生偏移,二者的区别表现在:

  • 负margin会使元素在文档流中的位置发生偏移,它会放弃偏移之前占据的空间,紧挨其后的元素会填充这部分空间;
  • 相对定位后元素位置发生偏移,它仍会坚守原来占据的空间,不会让文档流的其他元素流入。
    示例:


    设置-margin前
设置-margin后

六、如何让一个固定宽高的元素在页面上垂直水平居中?
可以使用绝对定位和负margin,示例:


七、浮动元素有什么特征?对其他浮动元素、普通元素、文字分别有什么影响?

  • 浮动元素的特征有:
    1.块在一排显示;
    2.内联元素支持宽高;
    3.无论是块元素还是内联元素,没有宽度时默认内容撑开宽度;
    4.脱离文档流;
    5.提升层级半级。
  • 对其他浮动元素的影响:后浮动的元素永不会超过先浮动元素的顶端。
  • 对普通元素的影响:浮动元素会从文档正常流中删除,使得紧挨它的元素位置发生偏移,影响布局。
  • 对文字的影响:浮动元素向下延伸时,不会影响正常文本的显示,文本会相对于浮动元素进行偏移。但部分文本背景会被浮动元素遮住。(可参考大话FLOAT
    浮动示例:

八、清除浮动指什么? 如何清除浮动?
清除浮动指的是:在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响布局的现象,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

清除浮动的方法:
1.使用带clear属性的空元素
在浮动元素后使用一个空元素如<pre><div class="clear"></div></pre>,并在CSS中赋予<pre>.clear{clear:both;}</pre>属性即可清理浮动。亦可使用<pre><br class="clear" /></pre>或<pre><hr class="clear" /></pre>来进行清理。
2.使用CSS的overflow属性
给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。
3.使用CSS的:after伪元素

**** 附加:****关于使用clear:both清除浮动,一直都不太明白,还有就是对清除浮动的理解有误,以为清除浮动之后,元素的渲染顺序和普通流一样,实际不是这样的,下面给出我自己的理解,不足之处,欢迎大家批评指正。

  • 关于浮动
    如下代码中:
    在父容器中添加一个背景图片,图片会按照普通流渲染

    若是在此基础上给背景图片添加浮动,效果如下:

    我们可以看到父元素高度塌陷,背景图片脱离文档流,所以此时父容器div补给高度了,让我们给父容器添加点文字看看它的高度变化

    父容器的高度被撑开了,有木有!有木有!
    *** 所以子元素浮动使得父元素塌陷的原因是:因为没有预先设置div高度,所以div高度由其包含的子元素高度决定。而浮动脱离文档流,所以图片并不会被计算高度。此时的div中,相当于div中子元素高度为0。***
  • 一个困扰我很久的问题,和大家分享下,上代码吧:
    情况一

    情况二

    我不理解的点是为什么情况二中box2的宽度比情况一中box2的宽度大,情况二中的box2可以浮动上去,而情况一中的不可以呢?
    答案是:因为情况一中宽度限制100px,所以box2文字不能靠右围绕,所以只能往下。 对于情况2,因为宽度为200px,所以box2在这个宽度内可以围绕box1
  • 关于clear:both 的理解:
    Clear:both;其实就是利用清除浮动来把外层的div撑开,所以有时候,我们在将内部div都设置成浮动之后,就会发现,外层div的背景没有显示,原因就是外层的div没有撑开,太小,所以能看到的背景仅限于一条线。
    示例如下:


关于CSS浮动、定位的知识先说这么多,有什么不足的地方欢迎大家指正,之后需要补充的内容会在betterwlf更新。

版权归本人所有,如有转载请说明来源
参考:
1.CSS定位方式
2.CSS定位详解
3.总结一下CSS中的定位 Position 属性
4.position
5.CSS定位
6.CSS样式表中z-index使用方法总结
7.CSS相对定位|绝对定位(五)之z-index篇
8.小tip: margin:auto实现绝对定位元素的水平垂直居中

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,709评论 1 92
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 特征: 浮动元素会脱离正常的文档流,元...
    饥人谷_哈噜噜阅读 863评论 0 0
  • 1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动元素特征: 浮动元素会脱离正常...
    annynick阅读 410评论 0 0
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 851评论 0 4
  • 文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流就是浏览器在页面上摆放HTML元素所用的方法。浏览器从...
    coolheadedY阅读 552评论 0 0