因为最近心血来潮,就总结了一下css中的几种常见的多列布局。

两列自适应布局

两列自适应布局算是css布局里面最基础的一种布局了,不少网站在使用。

这种布局通常是左侧固定,右边自适应,当然也有反过来的,道理一样,这里有好几种方法。

(张鑫旭老师的博客是左边流式布局,右边固定宽度)
  • 左浮动+margin

 因为浮动会导致元素脱离文档流,所以下面的元素会占据浮动元素原来的位置。
这个时候只要对右边元素设置margin-left:左边div宽度 就可以实现自适应布局。

代码:左浮动实现两列布局

  • 绝对定位实现两列布局

 这个原理类似浮动,因为绝对定位会脱离文档流,只需要设置右div的margin-left就能实现布局。

代码:绝对定位实现两列布局

  • flex实现两列布局

 flex布局一直挺好用,无奈兼容性捉急,ie10+才支持。  

 注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。  

 flex布局默认项目是主轴为水平方向,最主要的是flex属性。flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。  

 大概就是给左边的div一个固定值,然后给右边设置flex:auto;来实现两列布局。  

 这里不多对flex布局介绍,有兴趣的可以看一下

阮一峰老师的这篇博客:flex布局

这里是代码链接:flex布局实现两列布局

  • calc实现两列布局

  这是css3里面的新属性,兼容性还可以,在ie9+、FF4.0+、Chrome19+、Safari6+都得到了支持。  

 通过calc可以使用百分比、em、px和rem单位值计算出其宽度或者高度,这样就不用考虑div值到底是多少。所以可以对右边div设置width:calc(100%-100px);来实现自适应布局。

代码链接:calc实现两列布局

  • 浮动+margin负值来实现

 这是之前写ife任务的时候在一篇博客上看到的。

 实现方法是给右边的div外面再套上一个父div,然后让父div的宽度设为100%。
对父div和左边的div都设置左浮动,再让左div的margin-left:-100%,右div设置margin-left:左div的宽度。
这样就实现了自适应布局,当然左右div的前后顺序要反过来。

具体看代码:margin负值实现自适应

三列自适应布局

除了常见的两列布局,我们也经常能够见到三列布局,左右固定,中间自适应。

 (这里只是拿这张图举个例子,w3school官网是三列固定布局)
  • 浮动实现三列布局

  这个类似两列布局的浮动,对左右div分别设置左右浮动,中间div设置margin-left和margin-right来实现,当然在html中的顺序应该是左右中。

代码链接:浮动实现三列布局

  • margin负值实现三列布局

  原理同margin负值实现两列布局,不多说了。

直接上代码:margin负值实现三列布局

  • flex实现三列布局

 和flex两列布局一个原理,对两边设置flex:0 0 100px,中间设置flex:auto。

代码代码:flex实现三列布局

css中的那些布局的更多相关文章

  1. CSS中常见的布局

    一.css中常见的布局有哪些? (1)两列布局 (2)三列布局 (3)弹性布局 (4)圣杯布局 (5)双飞翼布局 二.具体实现  (1)两列布局 https://www.cnblogs.com/qin ...

  2. 图文详解前端CSS中的Grid布局,你真的可以5分钟掌握

    前言 网站的布局是一个网站设计的根本,CSS的Grid布局已经成为了未来网站布局的基本方式. 今天这篇文章我们通过图文,一起看看如何自己实现Grid布局方式. CSS 第一个Grid布局 首先我们看看 ...

  3. css 中的grid布局基础

    CSS Grid Layout为CSS引入了一个二维网格系统.网格可用于布局主要页面区域或小型用户界面元素. 网格是一组交叉的水平和垂直线 - 一组定义列,其他行.元素可以放在网格上,以行或者列为标准 ...

  4. css 中 stick footer 布局实现

    做项目中,我们在写弹框的时候,不管弹框的内容多或者少,可能需要一些内容需要固定在框底部,比如关闭按钮.stick footer 就是让 footer 元素固定在底部 当内容不足满屏时,footer 紧 ...

  5. css中的圣杯布局和双飞翼布局

    圣杯布局 布局要求: 三列布局,中间自适应,两边定宽 中间栏要在浏览器优先渲染 允许任意列的高度最高 用最简单的CSS.最少的HACK语句 解释说明: 1.min-width:700px是为了当页面缩 ...

  6. 使用css中的flex布局弹性手风琴效果

    不多说,直接上代码. <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  7. CSS中的圣杯布局与双飞翼布局

    一,圣杯布局 1,什么是圣杯布局? 所谓圣杯布局就是用于实现一个两侧宽度固定,中间宽度自适应的三栏布局 2,构建圣杯布局的步骤: 2.1,添加一个容器,在这个容器中添加放三个盒子(左.中.右): 2. ...

  8. CSS中的flex布局

    1.flex 布局的概念 Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为 Flex 布局,行内元素也可以通过 ...

  9. css中响应式布局中样式的代码书写方法

    代码示例:@media only screen and (min-width: 320px){ html { font-size: 8px !important; } .mulu-zi{ positi ...

随机推荐

  1. $(function(){})和$(document).ready(function(){}) 的区别

    document.ready和onload的区别——JavaScript文档加载完成事件 页面加载完成有两种事件 一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件) 二是onloa ...

  2. Apache自带压力测试工具ab用法简介

    ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...

  3. SLS评测报告

    什么是SLS?  简单日志服务(Simple Log Service,简称SLS)是针对日志收集.存储.查询和分析的服务.用户只需简单地配置日志产生的位置和格式等信息,就能实时查询海量日志,并可通过S ...

  4. Storm InvalidTopologyException: null

    异常信息: backtype.storm.generated.InvalidTopologyException: null at backtype.storm.daemon.common$valida ...

  5. 浅析vue数据绑定

    前言:最近团队需要做一个分享,脚进脑子,不知如何分享.最后想着之前一直想研究一下 vue 源码,今天刚好 "借此机会" 研究一下. 网上研究vue数据绑定的文章已经非常多了,但是自 ...

  6. There is no getter for property named 'userId' in 'class java.lang.String'

    [ERROR] 2017-01-18 04:37:06:231 cn.dataenergy.common.CenterHandlerExceptionResolver (CenterHandlerEx ...

  7. KB奇遇记(4):困难重重的选型

    在以往的工作经历中,虽然也会出现公司的一些规章制度,但我鲜少与其打交道,也极少听说.但是来KB这里,突然发现公司居然并没有给我配备电脑!!原因是制度上并没有写IT人员入职需要配备电脑,尔后通过特批流程 ...

  8. Fourier分析基础(二)——由级数导出连续Fourier变换

    此处推导参考(照抄) A First Course in Wavelets with Fourier Analysis Second Edition, Albert Boggess& Fran ...

  9. 【前端】:HTML

    前言: 最近开始学前端了,这篇博客主要介绍html的一些主要标签,写完这篇博客,我会用刚学的html做一个简单的登陆界面~~ 一.HTML介绍 HTML(Hyper Text Mark-up Lang ...

  10. Spring 中使用Quartz实现任务调度

    前言:Spring中使用Quartz 有两种方式,一种是继承特定的基类:org.springframework.scheduling.quartz.QuartzJobBean,另一种则不需要,(推荐使 ...