日夜谈——浮动&定位

浮动&定位.png

今天有空,Peter我就学习了浮动&定位,了解浮动&定位的种种玄机。废话不说,go ahead!!!

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

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

2.有几种定位方式,分别是如何实现定位的,使用场景如何?

CSS的定位方式由:(默认定位)static,(绝对定位) absolute,(相对定位) relative ,和(固定定位)fixed。

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

static.png

<b>2.relative</b>:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位。<b>其中的相对指的是相对于元素在默认流中的位置。</b>
注意:
<li>当元素通过设置position:relative;之后,需要通过top,right,left,bottom来控制它的位置。
<li>当元素位置改变后,它本来默认的文档流文职仍然存在,其后面的元素依照其本来的位置进行定位。
<li>该元素偏移之后,可能存在覆盖其他元素的情况,可以使用z-index属性显示层级有限级别。
For example:

relative1.png

z-index的使用(用之前先给元素给个定位,值大覆盖值小):

z-index.png

<b>3.absolute</b>:生成绝对定位的元素,相对于static定位外的第一个父元素进行定位。
注意:
<li>使用绝对定位时,该元素已经脱离了文档流,对于后面的元素来说,它就像不存在一样。
<li>绝对定位的元素的位置是相对于最近的已定位的祖先元素,如果元素没有已定位的祖先元素,它的位置就相对于body。

For example:

absolute.png

这种情况是离box2最近的父元素已定位的情况,如果离box2最近的父元素没有定位的话,示例如下:

absolute2.png

<b>fixed:</b>本质上是一种绝对定位,不为元素预留空间。通过指定相对于屏幕视窗的位置来指定元素的空间,且元素的位置在屏幕滚动时不会发生变化。应用于很多网站顶端的固定导航、右下角的固定广告等等。

For example:

fixed.png

就算处在一股清流中,box2的立场依然坚定不变。

</br>

3.absolute, relative, fixed偏移的参考点分别是什么

<li>absolute偏移的参考点是:相对于最近的已定位的父元素,如果没有,则相对于body元素;
<li>relative偏移的参考点是:相对于元素在普通流中的原来位置;
<li>fixed偏移的参考点是:相对于浏览器窗口。

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

z-index用于设置元素的堆叠顺序,z-index的值越高,则其堆叠顺序越前,则是显示在较低z-index的值的前面。

z-index.png

注意:
1.z-index仅对定位元素有效(position:relative||absolute||fixed);
2.z-index只可比较同级元素

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

区别:
1.负margin会使元素在文档流中的位置发生偏移,它会放弃偏移之前占据的空间,紧挨其后的元素会填充这部分空间;

2.相对定位后元素位置发生偏移,它仍会坚守原来占据的空间,不会让文档流的其他元素流入。

正常:

static.png

设置负margin:

负margin.png
6.如何让一个固定宽高的元素在页面上垂直水平居中?

可以对固定宽高的元素设置负margin绝对定位使其居中:

水平垂直居中.png
7.浮动元素有什么特征?对其他浮动元素、普通元素、文字分别有什么影响?

浮动元素的特征
<li>浮动元素将脱离文档流,不会再占据空间;
<li>无论是块元素还是内联元素,没有宽度时默认内容撑开宽度;
<li>内联元素支持宽高;
<li>设置宽高和float后,相当于悬浮的inline-block。

浮动元素对其他元素的影响
<li>对其他浮动元素的影响:后浮动的元素永不会超过先浮动元素;
<li>对普通元素的影响,普通元素会占据浮动元素原来所在的文档位置;
<li>对文字而言,除了自身的文字外,其他元素中的文字一律环绕浮动元素周围;
<a href="http://www.75team.com/post/%E5%A4%A7%E8%AF%9Dfloat.html">大话float</a>

float文字围绕.png
8.清除浮动指什么? 如何清除浮动?

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

针对浮动产生的问题,清除浮动可以分为两种:

方法一:使用带clear属性的空元素
在浮动元素后使用一个空元素如<div class="clear"></div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用<br class="clear" /><hr class="clear" />来进行清理。

clearboth.png

优点:简单,代码少,浏览器兼容性好。
缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。

方法二:使用CSS的overflow属性

给浮动元素的容器添加overflow:hidden;overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1
在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。

overflow.png

方法三:给浮动的元素的容器添加浮动
给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使其整体浮动,影响布局,不推荐使用。

方法四:使用邻接元素处理
什么都不做,给浮动元素后面的元素添加clear属性。和方法一相似,只是这个元素具有内容。

方法五:使用CSS的:after伪元素
结合 :after 伪元素和 IEhack ,可以完美兼容当前主流的各大浏览器,这里的 IEhack 指的是触发 hasLayout。
给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。

after伪元素.png

通过CSS伪元素在容器的内部元素最后添加了一个看不见的空格" ",并且赋予clear属性来清除浮动。需要注意的是为了IE6和IE7浏览器,要给clearfix这个class添加一条zoom:1;触发haslayout。

推荐
在网页主要布局时使用:after伪元素方法并作为主要清理浮动方式;在小模块如ul里使用overflow:hidden;(留意可能产生的隐藏溢出元素问题);如果本身就是浮动元素则可自动清除内部浮动,无需格外处理;

9代码:
<a href="http://js.jirengu.com/fugopobaqa/1/edit?html,css,output">代码1</a>

代码一.png

<a href="https://jsbin.com/dulexumape/edit?html,css,output" >代码2</a>

代码2.png

参考资料:
<a href="http://www.cnblogs.com/ForEvErNoME/p/3383539.html">理解清除浮动及其方法</a>
<a href="http://blog.haohtml.com/archives/8125">css样式float造成的浮动“塌陷”问题的解决办法</a>
<a href="http://www.zhangxinxu.com/wordpress/2010/01/css-float%E6%B5%AE%E5%8A%A8%E7%9A%84%E6%B7%B1%E5%85%A5%E7%A0%94%E7%A9%B6%E3%80%81%E8%AF%A6%E8%A7%A3%E5%8F%8A%E6%8B%93%E5%B1%95%E4%B8%80/">CSS float浮动的深入研究、详解及拓展(一)</a>
<a href="http://www.zhangxinxu.com/wordpress/2010/01/css-float%E6%B5%AE%E5%8A%A8%E7%9A%84%E6%B7%B1%E5%85%A5%E7%A0%94%E7%A9%B6%E3%80%81%E8%AF%A6%E8%A7%A3%E5%8F%8A%E6%8B%93%E5%B1%95%E4%BA%8C/">CSS float浮动的深入研究、详解及拓展(二)</a>

注:版权归饥人谷peter和饥人谷所有,若有转载请注明来源

感谢吃瓜子观众:

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,721评论 1 92
  • 一、文档流的概念指什么?有哪种方式可以让元素脱离文档流? 1、文档流指的是元素在排列布局中所占用的位置,具体的说是...
    鸿鹄飞天阅读 757评论 0 0
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 特征: 浮动元素会脱离正常的文档流,元...
    饥人谷_哈噜噜阅读 865评论 0 0
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响?一个元素应沿其容器的左侧或右侧放置,允许...
    _小黑阅读 226评论 0 0
  • 原文地址: http://www.infoq.com/articles/whats-new-ios9-framew...
    云华在线教育阅读 1,039评论 1 1