前言

公司终于可以上外网了,近期在搞RN的东西,暂时脑子有点晕,等过段时间再来写点总结。倒是最近有个新学前端的同学经常会问一些基础知识,工作空闲写了小Demo给他看,全是很基础的知识,纯粹是顺便记录在这里就当温故而知新吧...

CSS布局

关于布局,我们马上就要想到浮动和定位,根据要实现的布局,相当于用浮动和定位等属性进行拖拽即可。现在浏览器对ie等老版本浏览器的兼容需求越来越低,我们还可以采用css3的flexbox布局来设计,这个如今已经是必须要掌握的一个布局方法了,尤其是在移动端非常便捷,最近正火react-native正是引入了flexbox布局,学会了这个,再去做app的开发布局也会感觉爽的停不下来。

言归正传,我们来实现一个最简单的三列布局,需要的效果如下:

两边是固定的侧边栏,中间是自适应宽度的主体内容。我们有好几种方法来实现。

绝对定位法

绝对定位感觉是新手最喜欢用的方法,不管怎么样,就是一个定位叠着一个定位,什么样子都可以定位出来。

  • html:
<div class="container">
<div class="left">left</div>
<div class="right">right</div>
<div class="main">main</div>
</div>
  • css:
.container {
position: relative;
width: 100%;
height: 800px;
background: #eee;
} .left,
.right {
height: 600px;
width: 100px;
position: absolute;
top: 0;
} .left {
left:0;
background: burlywood;
} .right {
right: 0;
background: coral;
} .main {
height: 800px;
margin: 0 110px;
background: chocolate;
}

浮动法

浮动法跟绝对定位法一样,比较简单,但是需要注意一点就是html中main部分要写在最后。

  • html:
<div class="container">
<div class="left">left</div>
<div class="right">right</div>
<div class="main">main</div> </div>
  • css:
.container {
height: 800px;
background: #eee;
} .left,
.right {
height: 600px;
width: 100px;
}
.left {
float: left;
background: burlywood
}
.right {
float: right;
background: coral
}
.main {
height: 800px;
margin: 0 110px;
background:chocolate
}

margin负值法

margin负值法算是一个因吹丝停的方法,我其实很少用,但是公司的很多老项目中倒是用的不少,这个方法比较巧妙,在html中main部分需要嵌套一个div了,并且顺序也是在第一位,然后浮动,后面left和right部分同样浮动按照正常来说会换行了,所有给一个负值的margin,就巧妙的达到了想要的效果。

  • html:
<div class="container">
<div class="main">
<div class="body">main</div>
</div>
<div class="left">left</div>
<div class="right">right</div> </div>
  • css:
.container {
height: 800px;
background: #eee;
} .main {
float: left;
width: 100%;
height: 800px;
} .main .body {
height: 100%;
margin: 0 110px;
background: chocolate;
} .left {
float: left;
margin-left: -100%;
width: 100px;
height: 600px;
background: burlywood;
} .right {
float: left;
margin-left: -100px;
width: 100px;
height: 600px;
background: coral;
}

flexbox布局法

flexbox布局在这个场景中其实并不是最合适的,因为两边侧栏都是固定宽高,和主体部分也没有等高。不过没有关系,学会其基本用法才是最主要的,记住flexbox分为容器与子元素两部分的样式设置,容器的justify-content 和 align-items是两个最重要的属性,子元素的flex属性,集成了flex-grow,flex-shrink,flex-basis三个属性。具体的用法我前面也有一篇文章写过。同时建议参考下CSS参考手册,里面关于flex属性的两个例子非常好。

  • html:
<div class="container">
<div class="left">left</div>
<div class="main">main</div>
<div class="right">right</div> </div>
  • css:
.container {
display: flex;
height: 800px;
background: #eee;
} .left {
flex: 0 0 100px;
height: 600px;
background: burlywood;
} .main {
flex: 1 1 auto;
margin: 0 10px;
background: chocolate;
} .right {
flex: 0 0 100px;
height: 600px;
background: coral
}

总结

突然写点简单的CSS知识感觉神清气爽,感觉找到了刚学时候的新鲜感~不限网的感觉不错,以后继续在博客园逛逛写写。

[CSS布局]简单的CSS三列布局的更多相关文章

  1. CSS 布局实例系列(三)如何实现一个左右宽度固定,中间自适应的三列布局——也聊聊双飞翼

    今天聊聊一个经典的布局实例: 实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化 可能很多朋友已经笑了,这玩意儿通过双飞翼布局就能轻松实现.不过,还请容我在双飞 ...

  2. HTML/CSS学习之 三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化

    第一种方法:绝对定位 <!DOCTYPE html> <html> <head> <title>三列布局</title> <link ...

  3. CSS如何实现三列布局?如果两端固定、中间是自适应又该如何做?

    使用浮动布局来实现 左侧元素与右侧元素优先渲染,分别向左和向右浮动 中间元素在文档流的最后渲染,并将 width 设为 100%,则会自动压到左右两个浮动元素的下面,随后在中间元素中再添加一个div元 ...

  4. CSS三列布局

    × 目录 两侧定宽中间自适应 两列定宽一侧自适应 中间定宽两侧自适应一侧定宽两列自适应三列自适应总结 前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中 ...

  5. css 三列布局

    前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中间自适应.两列定宽一侧自适应.中间定宽两侧自适应.一侧定宽两列自适应和三列自适应这五种情况 两侧定宽中 ...

  6. jqm的多列布局demo,html5的多列布局demo,多列布局的具体解说,html5开发实例具体解释

    因为移动设备屏幕宽度较小,所以一般不建议使用多列布局.但有时你可能须要并排放置一些元素(如button之类的). jQuery Mobile通过约定的类名ui-grid来提供了一种基于css的多列布局 ...

  7. 简单的CSS网页布局--三列布局

    三列布局其实不难,不过要用到position:absolute这个属性,因为这个属性是基于浏览器而言,左右部分各放在左右侧,空出中间一列来实现三列布局. (一)三列布局自适应 <!DOCTYPE ...

  8. css实现三列布局,左右固定值,中间自适应。

    这里主要用到的是position:absolute;及margin属性;代码很简单,一看就明白. <!DOCTYPE html> <html lang="zh_CN&quo ...

  9. css常见的各种布局下----三列布局

    css 三列布局,左右固定宽度右边自适应 1不使用定位,只使用浮动可以实现左右固定,中间宽度自适应布局 1.1.1 自适应部分一定要放第一个位子,使用浮动,并且设置宽度为100%,不设置浮动元素内容不 ...

随机推荐

  1. GPS通讯 数据包解析

    全球时区的划分: 每个时区跨15°经度.以0°经线为界向东向西各划出7.5°经度,作为0时区.即0时区的经度范围是7.5°W——7.5°E.从7.5°E与7.5°W分别向东.向西每15°经度划分为一个 ...

  2. TPS、QPS和系统吞吐量的区别和理解

    参考:https://blog.csdn.net/u010889616/article/details/83245695 一.QPS/TPSQPS:Queries Per Second意思是“每秒查询 ...

  3. Eclipse使用maven创建SSM-web项目

    1.环境准备 (1)maven:apache-maven-3.5.2,我的maven安装在D:\apache-maven-3.5.2,eclipse中maven配置如下: 先add ,添加好自己的ma ...

  4. 如何在微信小程序中使用iconfont

    开篇废话 开发过小程序的童鞋肯定都会遇到这样的问题,当我们在小程序中使用iconfont官方推荐的方法插入字体时,我们总会得到一个打印机(滑稽).那么如何在小程序中正确的使用iconfont呢? 一. ...

  5. logback-spring.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false ...

  6. fread fwrite文本模式读写回车换行符 自动转换问题

    fread  会把\r\n(0d0a)替换为\nfwrite 会把\n替换为\r\n(0d0a),\r\n会变成\r\r\n(0d0d0a) 今天在写一个日志类,用于打印服务程序的信息. 我将每一个日 ...

  7. data_model_action

    w PowerDesigner

  8. Delphi中Tlist实例

    http://blog.163.com/jiandande3218@126/blog/static/74728469201132721428194/ Delphi中Tlist实例 2011-04-27 ...

  9. nessus 安装

    下载安装包: https://www.tenable.com/downloads/nessus 下载插件: https://docs.tenable.com/nessus/Content/Downlo ...

  10. Altium Designer chapter5总结

    PCB设计环境中需要注意的如下: (1)PCB设计步骤:绘制原理图和生成网表—规划电路板—载入网表—元件布局—制定设计规则—布线—后期处理—DRC检查—信号完整性分析—gerbera文件输出 (2)P ...