CSS布局方法

左右/左中右布局

1. 浮动

给所有子元素添加float:left;,同时给父元素添加clearfix类,解决浮动出现的bug。
CSS:

image

image

HTML:
image

2. 行内块

使用display: inline-block;使块元素成为行内块,此时会出现bug:下方出现一个空隙,一定要用vertical-align: top;来解决。

3. 绝对定位

为父元素设置position:relative;,为子元素设置position:absolute; 。如图:

image

特定情况下使用浮动还是绝对定位:
1.使用浮动时:不需要计算特别精确的位置,不过不易操控,浮动元素的宽度需要注意,否则会换行展示,适用于导航栏等地方。
2.使用绝对定位:需要计算元素的具体位置,不过更加准确,易于操控。
3.当某些元素的位置要根据父元素的大小自适应,内容宽度无法确定时,建议使用浮动。
4.当特定元素的位置是相对父元素固定,或者内容宽高确定,需要精确定位甚至以后要用js操作变换位置时,建议使用浮动。

4. Flex布局

给父级加上 display: flex;定义其为flex容器,使用flex-direction: row;使主轴水平;

HTML:

image

CSS:
image

布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。
2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。Flex 布局将成为未来布局的首选方案。

  • 设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效;
  • flex-direction属性决定主轴的方向(即项目的排列方向),它可能有4个值;
  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。
  • 更多flex语法:阮一峰博客--http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html


水平居中

1.内联元素水平居中:

将内联元素外部的块级元素的text-align设置为center,即可实现内联元素(inline、inline-block)的水平居中。可设置内联元素的行高line-height控制内联元素所占高度。

image

2. 块级元素水平居中:

将固定宽度的块级元素的margin-leftmargin-right设置成auto,即可实现元素的水平居中。

image

3. 多个块级元素水平居中:

如图中ol的布局问题,

image
block默认会扩展,使用display: inline-block;使其成为行内块,默认收缩。此时会出现bug:下方出现一个空隙,一定要用vertical-align: top;来解决,结果如图:
image

此时这是一个内联元素,在父级中加入text-align: center;可以实现子元素水平居中。
CSS:
image

4.绝对定位

通过position:absolute;实现CSS水平居中。

5.flex布局

justify-content属性定义了项目在主轴上的对齐方式;
使用justify-content:center;实现居中;

CSS:


image
image
  • justify-content可能取5个值,具体对齐方式与轴的方向有关,下面假设主轴为从左到右。
  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

垂直居中

1.内联元素垂直居中

设置内联元素的行高(line-height)和内联元素的父元素的高度(height)相等,且内联元素的字体大小远小于行高,即可使内联元素垂直居中。

2.块级元素垂直居中

  • 固定高度的块级元素:
    通过绝对定位使元素距离顶部50%,并设置margin-top向上移元素高度的一半,实现垂直居中。
  • 通过verticle-align:middle实现CSS垂直居中。(vertical生效的前提是元素的display:inline-block。)

3.flex布局

使用align-items:center;使子元素相对交叉轴的中点对齐(默认交叉轴从上到下)。

CSS:

image

image

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • CSS 是什么 css(Cascading Style Sheets),层叠样式表,选择器{属性:值;属性:值}h...
    崔敏嫣阅读 1,470评论 0 5
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,584评论 0 6
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,620评论 0 30
  • 敬爱的李老师,智慧的马教授,亲爱的家人们,大家好,我是侯宇辰 今天是我日精进分享的第37天,每天进步一点点,距离成...
    所以努力阅读 181评论 0 3