前言

公司终于可以上外网了,近期在搞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. Redis之数据类型

    一.概念: Redis:一个开源.支持网络.基于内存.键值对存储数据库. 特点:它可以支持多种数据类型. 二.数据类型 1)Redis String 具体说明: 一般的普通的k到v一个映射是Strin ...

  2. (arm板子tensorflow安装)armv7板子pip安装的wheel

    树莓派之类的armv7板子在,安装 numpy,scipy时经常失败,因为安装过程是下载源码包到本地编译,然后再安装的,编译过程中往往就会失败. https://www.piwheels.org/si ...

  3. 第四周作业—N42-虚怀若谷

    一.统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来 [root@centos7 ~]# grep -v "/sbin/nolo ...

  4. 定时任务crond

    在服务器上使用crond完成定时操作很方便, 下面简单记录一下. 常用的命令主要有以下三个: (1)编辑定时任务 crontab -e (2)   查看定时任务 crontab -l (3)  删除定 ...

  5. php substr_replace()函数 语法

    php substr_replace()函数 语法 作用:替换字符串中某串为另一个字符串大理石平台价格 语法:substr_replace(string,replacement,start,lengt ...

  6. [tyvj]P1939玉蟾宫[单调栈]

    [tyvj]P1939 玉蟾宫 ——!x^n+y^n=z^n 背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 描述 这 ...

  7. (3)狄泰软件学院C++课程学习剖析一

    深度剖析C++第一部分 1.类是一种模型,这种模型可以创建出一个对应的实体.有了类不一定有对应的实体,但是一个实体必定属于某一个类. 2.类用于抽象的描述 一类事物所持有的属性和行为:对象是具体的事物 ...

  8. 动态规划 List

    例题 #A 传纸条(Accepted)    #B 乘积最大 (Unaccepted)    #C 石子合并 (Accepted)    #D 加分二叉树 (Unaccepted)    #E 没有上 ...

  9. php面试专题---MYSQL查询语句优化

    php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...

  10. ADFS 2016 & Dynamics CRM

    参考:https://blog.csdn.net/vic0228/article/details/80188291 webapp 获取token https://adfs.demo.local/adf ...