归纳篇(一)CSS的position定位和float浮动

之前是准备在博客园写博客,然而界面有点过时陈旧了,自己写得也不是很勤快,于是换到简书这里来吧。简书支持Markdown,书写起来还是很舒服的。最近计划持续更新博客,对基础知识再做个自我梳理。

之前工作里有的不是很复杂的专题页面因为图省事,不自觉有点滥用position:absolute;,这是个不算好的习惯,于是回过神来再复习一遍定位和浮动。

position定位

(一)position的属性
  1. absolute:生成绝对定位的元素,相对于最近一级定位不是static的父元素来进行定位;
  2. relative:生成相对定位的元素,相对于其所在普通的文档流位置进行定位;
  3. static:默认值,没有定位,元素出现在正常的文档流中;
  4. fixed:老IE不支持,和absolute一致,相对于窗口进行定位,当出现滚动条时,不随着滚动而滚动;
  5. sticky:(CSS3)有兼容性问题,它就像是relative和fixed的合体,当在屏幕中时按常规流排版,当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。
(二)关于position使用一般会引发的问题
  1. 假如有一个默认100%宽度的div,一旦加上absolute绝对定位,该元素立马inline-block化,默认宽度就会自适应元素内部宽度,会导致页面的宽高塌陷
  2. 由于absolute绝对定位的灵活性,对于普通的页面布局,有时出于省事的原因很容易造成absolute/relative/top/left/z-index滥用,这样会使后期的扩展和维护造成麻烦
(三)position代码示例
  1. relative相对定位

      

    对象2相对于自身文档流原来位置移动,并还占据着文档流,下面的黄色块继续按照它原来的位置往下排列,relative仅仅是视觉上位置变了。
<style>
body{color: #fff;}
.aa{width: 400px;margin: 0 auto;border: 2px solid #000;height: 400px}
#position1 {height: 100px;background: green;}
#position2 {height: 100px;background: blue;position: relative;top: 10px;left: 50px;}
#position3{height: 100px;background: yellow;color: #000}
</style>
<body>
    <div class="aa"> 
        <div id="position1">对象1</div> 
        <div id="position2">对象2</div>
        <div id="position3">对象3</div>
    </div>
</body>
  1. absolute绝对定位



    对象1absolut属性相对于父级div偏移,脱离文档流,宽高塌陷,在文档流之上。

<style>
body{color: #fff;}.
aa{width: 400px;margin: 0 auto;border: 2px solid #000;height: 400px;position: relative;}
#position1 {height: 100px;background: green;position: absolute;top: 10px;left:50px; }
#position2 {height: 100px;background: blue;}
#position3{height: 100px;background: yellow;color: #000}
</style>
</head>
<body>
<div class="aa"> 
      <div id="position1">对象1</div> 
      <div id="position2">对象2</div>
      <div id="position3">对象3</div>
</div>

float浮动

(一)float的定义

float 属性定义元素向左/右方向浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
float的值:left/right/none

(二)float实现文字环绕

带有浮动属性的元素也可以使元素inline-block化,具有包裹性,使得元素兼并了块元素和内联元素的的优点。带有浮动属性的元素会脱离标准流进行排列布局,脱离标准流后的浮动元素漂浮在正常块元素上面,但是依然占据正常文档流的文本空间,使得后面的文本以除了浮动元素之外的空间为排列基准,形成了文本环绕的效果。

<style>
.a{width: 200px;height: 400px;margin: 0 auto;border: 1px solid #000;}
.pic{float: left;}
p{font-size: 16px;line-height: 18px;font-family: "Microsoft Yahei"}
</style>
<body>
<div class="a"> 
    ![](2.jpg) 
    <p>这是一段测试文字啦啦啦啦啦这是一段测试文字啊啊啊啊啊这是一段文字显示呐呐呐呐这是一段文字显示啦啦啦啦啦</p>
</div>```

###### (三)float浮动布局
![](http://upload-images.jianshu.io/upload_images/4948814-99b897192bdc078a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
标准文档流从上到下排列。
![](http://upload-images.jianshu.io/upload_images/4948814-22fa4c0b97b203d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
div1向左float后,很明显,高度塌陷,div2和div3和div1重叠。

######  (四)为什么要清除浮动以及清除浮动的几个方法
由于浮动导致元素**高度塌陷**产生副作用,父级盒子的边框不能被撑开,背景不能显示,父子级间的`margin`和`padding`设置值不能正确被显示。
![](http://upload-images.jianshu.io/upload_images/4948814-a3adc1f49f3ddf0f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

<style>
.div1{width: 400px;border: 2px solid #000;}
.div2{width: 100px;height: 100px;background: blue;float: left;}
.div3{width: 100px;height: 100px;background: green;float: right;}
</style>
<body>
<div class="div1">
<div class="div2">div2</div>
<div class="div3">div3</div>
</div>


**方法1:**在父级结束前,添加一个子标签`<div style="clear:both;"></div>`

<div class="div1">
<div class="div2">div2</div>
<div class="div3">div3</div>
<div style="clear:both;"></div>
</div>

**方法2:**在父级css属性加上入`overflow:hidden;zoom:1;`或者`overflow:auto;zoom:1;`
**方法3:**在父级用zoom+:after方法,原理类似于`clear:both`,利用CSS方式`:after`在元素内部加一个`clear:both`的元素块

.box1{zoom:1;}
.box1:after{display:block; content:'clear'; clear:both; line-height:0; visibility:hidden;}

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

推荐阅读更多精彩内容

  • 一、文档流的概念指什么?有哪些方式可以让元素脱离文档流? 文档里指元素在文档中的位置由元素在html里的位置决定,...
    dengpan阅读 531评论 0 3
  • 学习建议 定位、浮动是 CSS 核心知识点,必须熟练掌握。 1.文档流的概念指什么?有哪种方式可以让元素脱离文档流...
    饥人谷_任磊阅读 1,067评论 0 3
  • 1.文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流也叫常规流,其实就是文档的读取和输出顺序,也就是我...
    墨月千楼阅读 685评论 0 0
  • 从学校去医院的路上,一顿饭,一场电影,一个人,然后是漫长的等待……
    陛罅阅读 289评论 0 1
  • 1.1没有重要数据 /boot 200M存放系统的引导信息内核 swap交换分区防止内存用光了临时的一个内存 如果...
    Hoe王666阅读 253评论 0 0