前端布局初(有待完善)

1. 文档流(normal flow)


即默认布局,将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。每个非浮动块级元素都独占一行, 浮动元素则按规定浮在行的一端. 若当前行容不下, 则另起新行再浮动。

2. 显示框类型

每一个元素都有display值,这个属性用于定义建立布局时元素生成的显示框类型,我们可以按需求重写,以达到我们想要的效果。比如 li 是块级元素,但是可以在具体写水平菜单时修改为inline更方便。

display

这些都是最基本的几个,还有更多设置。

3. 盒子模型


盒子模型

这里是一般的盒子模型,基本所有的块级元素都会有,大小由外边距(margin)、边框(border)、内边距(padding)、高(height)、宽(width)组成,所以你若是需要高为多少的盒子,可能需要减去要设置的一定的边宽和内边距。

  • 但是,现在有了box-sizing属性(>= IE8),
 -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;

你可以这样设置,使高宽包含内边距和边框宽。

4. 定位布局


position

基于文档流, 我们可以这样理解以下的定位模式:

  • 相对定位: 即相对于元素在文档流中位置进行偏移, 但保留原占位。
  • 绝对定位:即完全脱离文档流,相对于position属性非static值的最近父级元素进行偏移。
  • 固定定位:即完全脱离文档流, 相对于视区进行偏移。

5. 浮动布局


可设计流动布局。(float浮动、绝对定位、固定定位都会使得元素脱离文档流而存在,但是在IE中浮动元素也存在于文档流中)

.float-right {
    float: right;
}
.float-left{
    float: left;
}

浮动元素不占任何正常文档流空间,而浮动元素的定位还是基于正常的文档流,它从文档流中抽出并尽可能移动至最左侧或者最右侧。文字内容会围绕在浮动元素周围。当一个元素从正常文档流中抽出后,仍然在文档流中的其他元素将忽略该元素并填补他原先的空间。因为浮动会对下一个非float元素产生影响,所以我们需要按需求清除浮动使用:

.clear-right {
    clear: right;
}
.clear-left{
    clear: left;
}
.clear-both{
    clear: both;
}

有时清除float会发生溢出,即内部较大元素撑出包含它的元素。可以使用clearfix hack,即对外容器使用overflow: auto;即对溢出部分自适应。然后对于IE6还要加一行zoom: 1;这个zoom就是IE私有属性了,表示缩放倍数。当然,清除浮动对于不同浏览器还有可能有不同,比较麻烦。

.clearfix-hack {
    overflow: auto;
}
/* for IE */
.clearfix-hack {
    overflow: auto;
    zoom: 1;
}

6. 基于百分比的栅格布局


将width、height设置为以%为单位,这是比较常用的布局技巧,响应式的栅格布局方法很多也就是这样来设置的。同时辅以流动特性和媒体查询,就可以很好地做到跨屏适应。

.width-12 {
  width: 100%;
}
.width-11 {
  width: 91.66666667%;
}

......

.width-2 {
  width: 16.66666667%;
}
.width-1 {
  width: 8.33333333%;
}

7. 媒体查询


这是实现响应式多屏适应的一种很重要的手段:

@media screen and (min-width: 768px) {
    .container {
        width: 1170px;
    }
} 
@media screen and (max-width: 767px) {
    .container {
        width: 750px;
    }
}

即在不同宽度的窗口上渲染不同的CSS。

7. column多栏布局


CSS新属性,用于实现文字的多列布局,是的,就像报刊那样。

/* >= IE9 */
.three-column {
    padding: 1em;
    -webkit-column-count: 3;
       -moz-column-count: 3;
            column-count: 3;
    -webkit-column-gap: 1em;
       -moz-column-gap: 1em;
            column-gap: 1em;
}

这就会将这个内部的文本显示成三列。

9. Flexbox弹性布局


这是最新的一种布局方式,也可能将成为未来布局的首选方式

.flexbox {
        display: flex;
}
.flexbox2 {
        display: inline-flex;
}

设置flex属性后,子元素的float、clear、vertical-align属性会失效。

flex使布局更方便
<!-- HTML -->
<div class="container">
    <div class="noflex1">这里是固定的200px</div>
    <div class="noflex2">这里是固定不变的300px</div>
    <div class="flex1">
        <div class="flex-center">
            flex-item居中
        </div>
    </div>
    <div class="flex2">左边一格占剩下的1/3,这里占有剩下的2/3</div>
</div>
/* CSS */
div {
    height: 300px;
    font-size: 30px;
}
.container {
    /*width: 100%;*/
    width: 100%;

    display: -webkit-flex;
    display: flex;

    background-color: #233333;
}
.noflex1 {
    -webkit-flex: initial;
            flex: initial;
    width: 100px;

    background-color: #666666;
}
.noflex2 {
    -webkit-flex: none;
            flex: none;
    width: 200px;

    background-color: #765432;
}
.flex-center {
    width: 100px;
    height: 100px;

        background-color: #8080FF;
}
.flex1 {
    -webkit-flex: 1;
            flex: 1;

    /* flex使得CSS终于有一种比较好的居中方式了! */
    display: -webkit-flex;
    display: flex;

    /* 让内容(flex item)在交叉轴(cross axis)上(垂直)居中 */
    -webkit-align-items: center;
            align-items: center;

    /* 让内容在主轴(main axis)上(水平)居中 */
    -webkit-justify-content: center;
            justify-content: center;

    background-color: #FCFCFC;
}
.flex2 {
    -webkit-flex: 2;
            flex: 2;

    background-color: #AAAAAA;
}

flex还有跟多概念,具体可参考手册

10. Grid网格布局模型(CSS Grid Layout Module


前端的世界真是瞬息万变,这里的grid是CSS的一个最新特性,新到W3C组织几天前才宣布规范已稳定,但是因为太新了,各浏览器并没有很好的支持这个特性,在一些浏览器里甚至是实验功能,需要手动开启。
所以写完后,放在浏览器里是不会有效果的,这是因为浏览器并没有默认开启网格功能,只有IE10默认开启了(实际我使用IE11和Edge时并没有效果,然后我开启了Chrome的实验性网络平台功能才看到了grid布局的效果,但效果不是很好)。
网格布局更像是曾经的table布局,先设置一个网格容器,并设置其行列数,然后设置子项目行列......但它又有更多创新且更为复杂、更多浮夸的功能,是的非常浮夸,想要了解更多,还是多多关注grid布局的最新动态。但是我劝大家暂时不要在这个没有浏览器能够很好支持、还默认关闭的特性上浪费时间了。

11.使用rem单位进行响应式布局


rem是CSS3一个新增加的单位,但是已经得到了现在大多浏览器的很好的支持。
(等待更新中……)

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

推荐阅读更多精彩内容

  • 前言 温馨提示:本文较长,图片较多,本来是想写一篇 CSS 布局方式的,但是奈何 CSS 布局方式种类太多并且实现...
    sunshine小小倩阅读 3,124评论 0 59
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,743评论 1 92
  • 简介CSS网格布局(又称“网格”),是一种二维网格布局系统。CSS在处理网页布局方面一直做的不是很好。一开始我们用...
    _leonlee阅读 64,979评论 25 173
  • 简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,旨在改变我们基于网格设计的用户界面方式...
    咕咚咚bells阅读 2,488评论 0 4
  • 看完《童心无归处》,我不禁想到,如果我有一个6岁的女儿,我要怎样才能保护她不受伤害呢? 21年前的圣诞节,一起悲剧...
    大观家庭阅读 410评论 0 1