CSS Positioning

系统的重新认识CSS的各个属性

1 - Box Model

Paste_Image.png

**ATTENTION: **: it only works when the elements is block-level
box-sizing属性 =>取值可能性有

  1. content-box 默认值,width和height只包括content
  2. border-box width和height的值包括了content, padding和border
  3. inherit 继承父元素

-> Block-level 自动占据父元素宽度的100%
-> Inline-level 只占据内容所需的宽度,从左到右
可通过display属性来改变元素的level

2 - Normal Document Flow

普通文件流。即元素在没有任何CSS样式的情况下。

3 - Float Flow

Let the position of the element go very left or very right of his parent.
float: left; 将元素从“普通文件流”中取出来,(不再占位!)浮动到最左边。
float: right; ...右边
我的理解:float-flow和normal-flow的关系就像是ps中俩个不同的涂层,float-flow在normal-flow之上

4 - Clearing floats

The float element, has no-height, because it has been taken away from the normal-flow.
在一个网页中,假设网页的某一段div是float的,接下来的div我们想要恢复到普通流,我们需要 清除float

**方法一:添加空的div元素(不推荐) **
在float的元素之后加上 <div style="clear:both;"></div>或者(bootstrap中)<div class="clearfix"></div>

clear: both; // 清除所有
clear: left;  // 清除float-left
clear: right;  // 清除float-right

**方法二:父级div定义 overflow: auto; **

**方法三:使用CSS伪选择器:after **
假设float的元素为<div class="service">...</div>,在CSS文件中添加代码如下:

.servie:after{
    content:"";
    display:block;
    clear:both;
}

**小结: ** 两者原理可以理解为是相同的,但更加推荐第二个,因为第一个在html文档中添加了无用的<div>

5 - Creating content columns WITH Floats

假设每个列的内容都放在一个section中,则:

section{
    float: left;
    width:46%;
    padding:1%;
    margin:1%;
}

6 - Creating content columns WIHTOUT Floats

该方法实现类似杂志中一段文字分成多列的排版:

section{
    column-count: 3;
    -webkit-column-count: 3;
    column-gap: 50px;
    -webkit-column-gap: 50px;
    column-rule: 1px solid #ccc;
    -webkit-column-rule: 1px solid #ccc;
    text-align: justify;
}

----- ----- ----- 以上提到的float和normal-flow有用,但不适合整个网页的使用。==> position
该属性有以下这些值:static, relative, absolute,fixed,inherit ----- ----- -----

7 - position: relativ

relative相对normal-flow时自己的位置移动 ==> 建议:只用于小范围的调整(tweak),比如:

example-relativ

8 - position: absolute

position the element absolutely relative to his parent which has a position-attribute relative attached. 属性为absolute的元素相对于 离自己最近的relativ元素 进行定位。
注意:当元素被定位成absolute的时候,他在normal-flow中不再占位
举例:我们要把<h2>放到图片上面去:
添加css样式之前:

before

添加css样式:

#banner{
    max-height: 300px;
    overflow: hidden;   // 隐藏重叠的部分
    margin: 1%;
    position: relative;     // 为了使h2可以相对banner定位
}

#banner h2{
    position: absolute;   // 绝对定位
    top: 30px;                // 相对于banner30px
    margin: 0px;            // 去除h2本身的样式
    width: 100%;           // 占据一整行,以便于文字居中
    text-align: center;    // 文字居中
    color: #fff;
}

9 - position: fixed

The element position is relative to the browser.
相对于浏览器窗口进行定位。

<nav>            // html定义一个由ul列表组成的nav
    <ul>
        <li>link</li>
        <li>link</li>
        <li>link</li>
        <li>link</li>
    </ul>
</nav>

ATTENTION:上面的<nav>元素一般写在html文件的最后面。 因为代码的执行顺序与html元素在网页上的前后有关(z轴方向,与z-index有关)

nav{
    background: #fff;
    position: fixed;        // 将nav定义为fixed
    top: 0px;                 // 相对于browser 
    left: 0px;                 // 相对于browser
    width: 100%;          // 占满一行
}

nav li{
    list-style:none;
    margin: 0 10px;
    color: #fff;
    float: right;            // nav中的text放在本行的最右边
}

// li的属性为浮动, 这里要在li的父元素中把浮动清除掉
nav ul{
    content: "";          
    display: block;
    clear: both;
}```

###10 - z-index & Stacking order
我们在9中说过,上面的<nav>元素一般写在html文件的最后面。 因为代码的执行顺序与html元素在网页上的前后有关(z轴方向,与z-index有关)
   1) 元素默认的`z-index`为`0`
   2) Keep every simple, just don't give everything a "z-index" in you page 
   3) z-index 只被用于同级元素之间的比较,即要在同一个 Stack content中(父元素与子元素之间无法比较;不属于同一个父元素的子元素们无法比较 ...)

###11 - Clipping Context
还记得之前那个用到了relativ的三个service块嘛? 现在我们想要使他们的底边在一条水平线上,但顶边依然保持阶梯状。
![example-relativ](http://upload-images.jianshu.io/upload_images/2662224-73aff03d66eb43c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
想法: 父元素用max-height定义,多余部分用overflow隐藏。
![service的结构](http://upload-images.jianshu.io/upload_images/2662224-85dbc11f5287ef79.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

.services{
max-height: 150px;
overflow: hidden;
}


结果:

![hidden-overflow services](http://upload-images.jianshu.io/upload_images/2662224-e6d306c4a6bf866c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
* overflow 默认为visible,也就是什么都不做。




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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,751评论 1 92
  • 以下文章是我在网上收集的内容,为了记录自己的学习以及为了以后不到处找而记录下来,如果对你有用,请感谢写这些文章的前...
    DCbryant阅读 940评论 0 2
  • 怀念小时候妈妈做的菜,刚好新买的餐具让我特别有动力,所以就自己做了,非常得意哦,因为很好吃。下面分享做法 1买一颗...
    梨花巷胭脂鱼阅读 306评论 0 0
  • 此刻你在回老家的路上,上午你和姐姐两个人跌跌撞撞的终于找到我家的门,我承认前几天闹了不愉快,我甚至不想让你过年再...
    蓝枫绒阅读 206评论 0 0
  • 你为我编织美丽的梦 我为你妖娆妩媚的夏天 冬天似乎好远 可是 秋天来了 你看,秋叶任风儿吹落 哭泣着呢喃 青春就在...
    A小天鹅阅读 225评论 0 5