CSS实现两栏布局
写在前面
两栏布局是指页面布局由主栏和边栏组成,是许多网页的布局方式,一般使用CSS去实现两栏布局。
实现两栏布局的方式有多种,这里采用四种比较常见的实现方式。主要是流体布局(liquid layouts),凝胶布局(Jello layouts),绝对布局(absolute layouts),表格布局(table layouts)。
所有源码在底部。
流体布局
浏览器显示HTML元素,是从HTML文件最上面开始,从上往下沿元素流显示各个元素,像一个流体一样。
页面布局如下:
<header>页眉.................</header>
<div id="section">
内容开始
<p>段落1...................................</p>
<p>段落2...................................</p>
<p>段落3...................................</p>
<p>超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长段落</p>
内容结束
</div>
<div id="aside">
<p>段落1...................................</p>
<p>段落1...................................</p>
<p>段落2...................................</p>
<p>段落3...................................</p>
<p>长长长长长长长长长长长长长长长长长长长长长长长长长长长段落</p>
</div>
<footer>
页脚
</footer>
效果如下:
为了实现两栏布局,就要让页面左栏浮动起来
div#section
{
float: left; // 让页面左栏浮动起来
}
如果光让左栏浮动起来,浏览宽度足够的时候显示会正常,宽度不够时,则会遮挡住页脚
这时候就要清除浮动,就能让页脚不被遮挡
footer
{
clear: left; // 清除浮动,clear的值有 left/right/both,分别是清除左/右/两边的浮动
}
冻结布局
流体布局当用户拉长或者缩小浏览器时,页面的内容会随之换行,很多时候这并是不我们想要看到的效果,这时候就要把页面冻结住,使用冻结布局。
冻结布局就是在流体布局的最外层,加一层div,并且指定宽度。
<div id="allcontent"> // 实现冻结布局
<header>页眉.................</header>
<div id="section">
内容开始
<p>段落1...................................</p>
<p>段落2...................................</p>
<p>段落3...................................</p>
<p>超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长段落</p>
内容结束
</div>
<div id="aside">
<p>段落1...................................</p>
<p>段落1...................................</p>
<p>段落2...................................</p>
<p>段落3...................................</p>
<p>长长长长长长长长长长长长长长长长长长长长长长长长长长长段落</p>
</div>
<footer>
页脚
</footer>
</div>
div#allcontent
{
width: 1200px; // 指定宽度为1200px
}
凝胶布局
当我们使用冻结布局,页面就会停靠在左边,为了使页面居中,就要使用凝胶布局。
凝胶布局就是将页面最外层的div的左外边距和右外边距设置为auto。凝胶布局无论浏览器大小如何变化,页面始终会居中。
div#allcontent
{
width: 1200px;
margin-left: auto;
margin-right: auto;
}
绝对布局
绝对布局就是使用position:absolute对元素进行布局。
position有四个属性,默认就是static,就是不会被定位。absolute使用最近的父元素进行定位。fixed使用视窗进行定位,也就是使用浏览器进行定位。relative使用元素本身在正常位置进行定位。
两栏布局可以使用绝对定位,指定一定的像素,来实现绝对布局,
div#aside
{
position: absolute; // 绝对布局
top: 170px; // 距离父元素顶部边框170px
right: 0px; // 距离父元素右部边框0px
width: 300px; // 指定宽度
}
由于绝对定位是将元素从流中删除,所以更改浏览器大小时,也会出现边框遮挡住页脚的情况。
表格布局
表格布局就是将页面用表格的形式进行布局。使用display:table进行实现。
HTML中也有<table>标签,有的人实现表格布局会使用<table>标签,但是这是不合理的。HTML是超文本标记语言,各个标签都有自己对应的语义,目的是为了结构清晰,所以不应该使用HTML来进行表格布局,而应该使用CSS进行布局的操作。
<header>页眉.................</header>
<div id="tableContainer">
<div id="tableRow">
<div id="section">
内容开始
<p>段落1...................................</p>
<p>段落2...................................</p>
<p>段落3...................................</p>
<p>超长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长段落</p>
内容结束
</div>
<div id="aside">
<p>段落1...................................</p>
<p>段落1...................................</p>
<p>段落2...................................</p>
<p>段落3...................................</p>
<p>长长长长长长长长长长长长长长长长长长长长长长长长长长长段落</p>
</div>
</div>
</div>
<footer>
页脚
</footer>
表格布局需要在最外层的div中使用display:table
div#tableContainer
{
display: table; // 最外层div设置为表格
border-spacing: 10px; // 表格布局没有外边距,border-spacing就是等同于margin
}
div#tableRow
{
display: table-row; // 设置一行,也可以设置多行
}
div#section
{
display: table-cell; // 将div设置为表格中的单元格
background-color: rgb(93, 173, 226);
}
div#aside
{
display: table-cell; // 将div设置为表格中的单元格
background-color: rgb(133, 146, 158);
}
写在最后
实现布局的方式可以有许多种,使用哪一种具体看业务需求,但是两栏布局比较适合使用表格布局,而且,日常使用中,一般不会单独使用一种布局,多种布局同时使用才是常态,才能实现最好的效果。
完整源码链接:https://github.com/yijidao/layouts
CSS实现两栏布局的更多相关文章
- css 关于两栏布局,左边固定,右边自适应
好几个星期都没写博客了,最近不忙也不闲,稀里糊涂过了两个星期,之前几个月内天天坚持签到.最近也没签到.哈哈,说正事. 今天做东钿互金平台后台页面,昨天做了一个登录页面,业偶碰到了一个难题.等下也要把它 ...
- css实现两栏布局,左侧固定宽,右侧自适应的7中方法
一个面试会问的问题,如何实现两个盒子,左侧固定宽度,右侧自适应. 1.利用 calc 计算宽度的方法 css代码如下: .box{overflow: hidden;height: 100px;marg ...
- CSS | 自适应两栏布局方法
html代码: <div class="main"> <div class="left" style="background: #0 ...
- css的两栏布局
经典的实现左边固定宽度,右边宽度自适应的几种方法 利用float和margin-left属性(margin-left的值可以稍稍大于或者等于.left的宽度) .left{ width: 30px; ...
- CSS 实现:两栏布局(一边固定,一边自适应)
☊[实现要求]:CSS实现左边固定,右边自适应父容器宽度的两栏布局. <body> <div class="left"></div> <d ...
- CSS 实现左侧固定,右侧自适应两栏布局的方法
"左边固定,右边自适应的两栏布局",其中有老生常谈的float方法,BFC方法,也有CSS3的flex布局与grid布局.并非所有的布局都会在开发中使用,但是其中也会涉及一些知识点 ...
- css布局 - 工作中常见的两栏布局案例及分析
突然想到要整理这么一篇平时工作中相当常见但是我们又很忽视的布局的多种处理方法.临时就在我经常浏览的网站上抓的相对应的截图.(以后看到其他类型的我再补充) 既然截了图,咱们就直接看人家使用的布局方式,毕 ...
- 七种CSS左侧固定,右侧自适应两栏布局
一 两栏布局基本HTML和CSS 首先创建基本的HTML布局和最基本的样式. 基本的样式是,两个盒子相距20px, 左侧盒子宽120px,右侧盒子宽度自适应 <div class="w ...
- css两栏布局、圣杯布局、双飞翼布局
最近几个月一直用vue在写手机端的项目,主要写业务逻辑,在js方面投入的时间和精力也比较多.这两天写页面明显感觉css布局方面的知识有不足,所以复习一下布局方法. 两栏布局 1.浮动 .box1 .l ...
随机推荐
- Spring MVC学习总结(13)——Spring MVC集成Swagger时文档无法排序问题
添加排序属性: window.swaggerUi = new SwaggerUi({ ... apisSorter: "alpha", // can also ...
- 质因数分解 2012年NOIP全国联赛普及组
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 . 输入描述 Inp ...
- codevs1174 靶形数独
题目描述 Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z 博士 ...
- Ubuntu 16.04下使用gcc输出汇编的.0文件为可执行文件时出现:`_start'被多次定义
错误如下: `_start'被多次定义 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o:(.text+0x0):第一次 ...
- pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等
pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表,pojo类属性类型一定要用包装类Integer等 pojo类对应的就是数据库中的表 ...
- Vim tips——Working with external commands
A common sequence of events when editing files is to make a change and then need to test by executin ...
- 开源的轻量级JSON存储Kinto介绍
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/introducing-kinto Kinto是个提供了同步与分片功能的 ...
- leetcode 114.Flatten Binary Tree to Linked List (将二叉树转换链表) 解题思路和方法
Given a binary tree, flatten it to a linked list in-place. For example, Given 1 / \ 2 5 / \ \ 3 4 6 ...
- 【ora10,4】oracle后台进程介绍:
一.SMON(System MONitor) 系统监控进程: 在数据库启动过程中,SMON排在CKPT进程之后,在Oracle9i中排在第六号的位置: PMON started with p ...
- 行政区划代码(SQL版本)2018年8月
表结构:(新建好表字段即可直接copy insert SQL语句) SQL语句: INSERT INTO z_regioncode(regioncode,regionname,pcode) VALUE ...