CSS创建一个布局居中的页面(div代替table)

【CSS】实现盒子居中对齐的七种方法 文章目录让盒子垂直居中 让盒子垂直居中 有一个盒子 div { width: 200px; height: 200px; background-color: pink; } 让盒子水平居中比较简单加上 margin: 0 auto; 即可 上面有缝隙,清除一下祖先元素的默认样式 html, body { margin: 0; padding: 0; } 让盒子垂直居中 ... 阅读详情

http://www.cnblogs.com/hanfeng/articles/89318.html

最近有一个读者问到,怎样用CSS创建一个居中的页面布局。该读者所追求的,是要达到这样一种效果,就如同在一个1024象素宽的页面上设计出一个800象素宽的表格。这是一种使用很广泛的页面设计方法,按照传统,它要靠嵌套表格才能达到这一效果,因此,这位读者追寻一种用CSS来达到这一效果的方法并不让人惊讶。

用CSS来创建一个居中的页面设计的基本技术相对来说较简单,不过与同类相比,也简单不了太多。让我们看一下,要将这种由来已久的基于表格的设计转变成用CSS,该怎样做。

传统的做法:居中的布局

首先,由于是做比较,让我们来看一个例子,它是一种基于一个居中表格的页面设计。图表A中显示了一个例子,以下是这个例子的编码:

<body>

<p>&nbsp;</p>

<table width="80%"  border="0" align="center" cellpadding="0" cellspacing="10"bgcolor="#FFFFFF">

  <tr>

    <td colspan="2"><h2 align="center">Header</h2></td>

  </tr>

  <tr>

    <td width="150px" valign="top"><h4>Navigation</h4>

      <ul>

        <li>Let me not to the marriage of true minds</li>

        <li>Admit impediments; love is not love</li>

        <li>Which alters when it alteration finds</li>

      </ul>

    </td>

    <td valign="top"><p>Main Content -- Love's not

 time's fool...</p></td>

  </tr>

  <tr>

    <td colspan="2"><hr />

      <p>Footer text -- Admit impediments...</p>

    </td>

  </tr>

</table>

<p>&nbsp;</p>

</body>

< table >这个标签包括了以下一些属性,将其宽度定义为页面宽度的80%,并将该表格置于页面的中间。在表格的前面有一个空白段落,这就使得页面的顶端与表格的顶端之间有一些垂直空间。在表格的后面也有一个空白段落,这就使得页面的底端与表格的底端之间也有一些空间。这个表格包括两列三行。顶端的单元被合并了,用来放置页眉,底端的行也合并了,以安置页脚,而中间那些单元则被分为两列,一个供放置主要内容,另一个则是导航工具栏。

这是一个简单的例子,诠释的是一种多年以来广为人们使用的技术。在现今的那些应用软件中,有代表性的主要种包含了嵌套表格,用以创建一种复杂得多的版面设计,不过,它的复杂性虽然被人为加大了,它所采用的基本技术却并没有改变。

将居中的设计转换成使用CSS

要想将这种传统的基于表格的版面设计转换成用CSS,你只要用divs来代替那些表格和表格单元就行了。一个div取代表格本身,另一个取代那些单个的表格单元,这些单个的表格单元定义了主要的版面设计元素,诸如标题,页脚,导航工栏,以及主要内容。每个div都有一个id,且它们的id都是独一无二的,你可以用一个CSS选择器来让它们创建各自不同的样式,每一种样式对应于div中的一种,这种对应关系依据id而建立。那个取代表格的div被标上了id=外部,其它那些div则靠他们各自的功能来鉴别。

这是已校订过的用div代替表格的XHTML的编码:

<body>

<div id="outer">

  <div id="header">

    <h2>Header</h2>

  </div>

  <div id="nav">

    <h4>Navigation</h4>

    <ul>

      <li>Let me not to the marriage of true minds</li>

      <li>Admit impediments; love is not love</li>

      <li>Which alters when it alteration finds</li>

    </ul>

  </div>

  <div id="main">

    <p>Main Content -- Love's not time's fool...</p>

  </div>

  <div id="footer">

    <p>Footer text -- Admit impediments...</p>

  </div>

</div>

</body>

注意一下所有那些陈述的格式,原来它们被包括在<table>和<td>标签中,现在已经被移走了。而那些位于表格前面和后面的空白段落也都不见了。CSS格式会处理所有的格式化以及空间的问题。

以下是CSS的编码,就是这些编码,将页面设计成一种居中的样式,这种设计与前面所说的基于表格的设计很类似:

body {

    background-color: #999999;

    font-size:12px;

    font-family:Verdana, Arial, Helvetica, sans-serif;

}

div#outer {

    width: 80%;

    background-color:#FFFFFF;

    margin-top: 50px;

    margin-bottom: 50px;

    margin-left: auto;

    margin-right: auto;

    padding: 0px;

    border: thin solid #000000;

}

div#header {

    padding: 15px;

    margin: 0px;

    text-align: center;

}

div#nav {

    width: 25%;

    padding: 10px;

    margin-top: 1px;

    float: left;

}

div#main {

    margin-left: 30%;

    margin-top: 1px;

    padding: 10px;

}

div#footer {

    padding: 15px;

    margin: 0px;

    border-top: thin solid #000000;

}

图表B显示了结果,即用CSS执行的一个居中页面的版面设计。

解析CSS编码

与基于表格的版面设计比起来,它的主体样式并没有什么变化。它只不过设置了一下背景颜色,默认正文字体以及尺寸大小。

div#outer是其中的一种样式,它是这一技术的关键。这就是前面提到过的以div取代表格的样式,它创建了居中的盒子,而这个盒子成了包容该页面所有内容的容器。将宽度设置为80%的规则设定了该div的宽度,就跟表格标签的相应属性规定该表格的宽度一样。与此相类似,background-color:#FFFFFF为div建立了一个白色的背景,就如同表格中bgcolor="#FFFFFF"属性为表格设置白色背景一样。margin-top: 50px and margin-bottom: 50px则用顶端和底端的空白来取代表格中用来造成垂直空间的空白段落。

这一技术的关键在于,外部div的中心要安排合适。这里存在一个难题,可以说是我们面临的一个挑战,即div没有像align="center"这样一个属性,这与表格不同,表格中有这样一种属性。你可以在div的母元素(在本案例,指< body >标签)中使用text-align: center来将外部div置于中心位置。尽管除了正文以外,大多数浏览器还会为一些诸如div的块元素使用该队列,但是我们有证据可以证明它是对排列正文这一属性的误用,而且它会使问题复杂化,就如同你创建一些额外的样式来使那些已按正常标准对齐的文字重新回到左边一样。

用CSS来将块元素置于中心位置的正确方法是这样设置:margin-left: auto,margin-right: auto。这就指示浏览器自动计算页面两边合适的空白宽度,从而将div置于中心。border: thin solid #000000这一规则在外部div的周围添加了一个边界,这是因为用CSS添加很容易,而如果用表格的话就很难了。CSS编码中的其它部份则规定了div的页眉,页脚,nav,以及主要内容。

div#header和div#footer则设定了那些div的页边空白以及填料。此外,div#header包含了text-align: center这一规则,它可以将页眉文本置于中心位置,div#footer则包含了border-top: thin solid #000000这一规则,它可以创建一个围绕该div的顶端边缘的边界,而在基于表格的版面设计中,与它相对应的则是位于页脚上方的一些水平线。

在这个居中的盒子的中央,div#nav和div#main建立了两个纵列。在div#nav样式中,float: left这一规则将div推到它的母元素(外部div)的左边,而width: 25%这一规则将该div的宽度设置为它的母元素的25%。由于该nav div被移到了左端,其宽度也被限定了,这就为主要的div留下了活动空间,让它可以移到该nav div的右边,这样就取得了两个纵列的效果。div#main样式包含了左边页面空白30%的规则,以让主要文本排列在一个整齐的纵栏中,而不是分散开来,甚至散到该nav纵栏外面。主要的div左边的空白页面比nav div中左边空白页面的宽度稍稍大一点。在我的“用CSS漂浮来创建一个三栏页面版面设计”一文中,我详细介绍了一种技术,这一技术是用CSS漂浮来创建页面设计中的多个纵列的。

hbuilder如何设置图片居中显示_Hbuilder div的垂直居中 前言我们都知道,固定高宽的div在网页中垂直居中很简单,相信大家也很容易的写出来,但是不是固定高宽的div如何垂直居中呢?我们在网页布局,特别是手机等web端网页经常是不固定高宽的div,那么这些div如何垂直居中呢?这篇文章,我总结一下。固定高宽div垂直居中 如上图,固定高宽的很简单,写法如下:position:absolute;left:50%;top:50%;width:200px;hei... 阅读详情

相关推荐

用div实现像table一样的布局方法

下面是我翻译的内容,是根据我对文章的理解意译的,你就别挑哪里翻译的不对了,我的目的只是传达这个CSS技巧。

用div来代替table

用div来代替table概述实战 概述 table是我们日常开发中经常用到的HTML标签,但我们也经常因为table饱受折磨,原生的table的样式丑出天际,第三方框架的样式可能样式是好看点了,但可能并不是我们想要的样子。面对这些情况,我觉得自己用div写去一个table是一个很好的方法,样式全部可按照自己想要的样子调整。 实战 首先贴出全部代码: <!DOCTYPE html> <html> <head lang="zh"> <meta charset="u

wsgzjdbb的博客 3143

浊音/清音/爆破音的时域及频域特性

第一周作业 浊音/清音/爆破音的时域及频域特性 思路:使用Audacity进行录制,时域部分将音频放大观察波形规律,频域部分生成并进行频谱分析。 (1)浊音U 时域分析: 时域表现为短周期性,波形比较规律。 频域分析: 频域上表现为频率集中在低频区域,共振峰较为明显,短时能量较高。 (2)清音S 时域分析: 时域波形没有周期性,整体振幅小于浊音。 频域分析: 频域波形平缓,无共振峰,能量比较集中。 (3)爆破音t 时域分析: 脉冲波,更为尖锐,整体上振幅降低。 频域分析: 没有像浊音一样的共振

Leylaaaa的博客 1228

DIV+CSS替代传统table

在网上找了好久都没有找到一个完整利用CSS+DIV代替传统table的代码,索性,自己亲自动手最终实现了利用CSS+DIV替代Table的代码,下面就是完整的代码,显示效果很不错!你可以直接运行就可以看到! 无标题文档 #header{ float:left; line-height:14px; font-family:Arial, Helvetica, sans...

jasstion的专栏 1106

Qt中输出中文出现乱码(win10系统下)

当我刚开始在win10下使用Qt Creator(4.3.0版本)时,遇到过这么个问题:当程序输出中文时,中文会乱码,程序本身的中文未乱码。 乱码截图如下: 我查阅了很多资料,最后在自己的不断的尝试下,解决了乱码问题。进入主题,具体如何解决乱码? ① 首先,我们先设置一下,可以直观在Qt界面上看到文件的编码方式: 点击工具(tool)->选项(option)->文本编辑器->显示->Diplayfileencoding,将其勾选上,点击apply,即可,截图如下...

请叫我皮皮虾的博客 5201

告别游戏卡关!用Cheat Engine 7.5修改单机游戏数据的保姆级教程(附Tutorial靶场练习)

本文提供了一份详细的Cheat Engine 7.5使用教程,帮助玩家轻松修改单机游戏数据。从基础操作到高级技巧,包括精确值扫描、模糊扫描、指针扫描和代码注入,教程还涵盖了《植物大战僵尸》和《星露谷物语》的实战案例,确保玩家能够安全、高效地优化游戏体验。

weixin_30082367的博客 784

用div,ul,li,span代替table设计表格

传统的表格一般都是用table标签设计的,现在网页设计很少用table了,主要用div,ul,li,span等标签,这是一种网页设计的思想了,和table不一样。用这种方式设计的html代码结构清晰,很容易输出后台的数据或调用程序的标签语言(碎片功能)。 <div class="head"> <ul> <li>服务器名</li> <li>服务器IP</li> <li>开区时间</li> <li>开区线

老头学编程的博客 3793

Excel地理探测器实战:5分钟搞定空间分异性分析(附完整数据集)

本文详细介绍了如何使用Excel地理探测器插件进行空间分异性分析。通过5分钟实战教程,手把手指导数据格式准备、软件操作及四大探测器(分异及因子、交互作用、风险区、生态探测器)的结果解读,帮助规划师、研究者快速验证地理因素对现象分布的影响,大幅降低GIS分析门槛。

peace的博客 608

关于Table的误解

随着DIV+CSS黄金组合的流行,越来越多的人抛弃了Table,说了一大堆这样那样的不好。认为Table不应该在被使用。 笔者在这里要为Table说两句。

幸福只是一种感觉 561

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 313

不用买VR设备!用UE5内置模拟器开发虚拟现实项目的完整教程

本文提供了一套无需购买昂贵VR硬件的虚拟现实开发最佳实践方案。详细介绍了如何利用虚幻引擎5内置的XR模拟器,从零开始配置开发环境、模拟操作、构建场景并实现核心交互逻辑。通过这套纯软件方案,开发者可以高效学习VR开发核心,大幅降低入门门槛和成本。

weixin_29019241的博客 621

尝试div+css代替table 制作日历

首先考虑下, 如何用DIV替代TABLE, 也就是手动绘制边框. 先搭配好HTML 效果图. [img] [img]http://dl.iteye.com/upload/attachment/0083/9534/8aed38d2-9e0a-3c3b-8418-d92a9fb1ec85.jpg[/img] [/img] [code="html"] DIV+C...

X_Szeto的博客 768

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令

ce123的技术博客 19万+

css居中大全(文字居中、块居中、水平居中、垂直居中)

css中经常需要我们对文字,内联元素和块元素居中对齐,本篇总结了各种居中,以便查阅。

yangyangdt的博客 2万+

芯片测试:WAT、CP、FT

最近部门来了一个日本回来的同事,虽然他尽量用非常Poor的中文给我解释一些东西,其中还夹杂着一些英文让我很受挫,于是最近来学一下WAT中的常用的单词含义。直接去查缩写、查单词很难去记住,要把具体的东西放在具体的场景,引发知识的连接才会在脑子里留下一定的映像。感兴趣的一起来学习一下这篇不错的文章吧。注释是我查询记录,如有不妥,欢迎指出修正。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5089

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

CSS布局——DIV水平居中和垂直居中

DIV水平居中和垂直居中

bao的博客 668

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

dev 居中_css的div垂直居中的方法,百分比div垂直居中

前言我们都知道,固定高宽的div在网页中垂直居中很简单,相信大家也很容易的写出来,但是不是固定高宽的div如何垂直居中呢?我们在网页布局,特别是手机等web端网页经常是不固定高宽的div,那么这些div如何垂直居中呢?这篇文章,我总结一下。固定高宽div垂直居中如上图,固定高宽的很简单,写法如下:position: absolute;left: 50%;top: 50%;width:200px;h...

weixin_39989949的博客 856

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

css css3 的div垂直居中的方法,百分比div垂直居中

我们都知道,固定高宽的div在网页中垂直居中很简单,相信大家也很容易的写出来,但是不是固定高宽的div如何垂直居中呢?我们在网页布局,特别是手机等web端网页经常是不固定高宽的div,那么这些div如何垂直居中呢? 固定高宽div垂直居中 position: absolute; left: 50%; top: 50%; width:200px; height:100px; margin-le...

mrzhangdulin的博客 384

一文大白话讲清楚CSS元素的水平居中和垂直居中

一文大白话讲清楚CSS元素的水平居中和垂直居中

xiaobangkeji的博客 1346

css的div垂直居中的方法,百分比div垂直居中

前言 我们都知道,固定高宽的div在网页中垂直居中很简单,相信大家也很容易的写出来,但是不是固定高宽的div如何垂直居中呢?我们在网页布局,特别是手机等web端网页经常是不固定高宽的div,那么这些div如何垂直居中呢?这篇文章,我总结一下。 固定高宽div垂直居中 如上图,固定高宽的很简单,写法如下: position: absolute; left: 50%; ...

dinghuoruo0011的博客 156

css布局中的垂直水平居中对齐

前言 我们都知道,固定高宽的div在网页中垂直居中很简单,相信大家也很容易的写出来,但是不是固定高宽的div如何垂直居中呢?我们在网页布局,特别是手机等web端网页经常是不固定高宽的div,那么这些div如何垂直居中呢?这篇文章,我总结一下。 固定高宽div垂直居中 如上图,固定高宽的很简单,写法如下: position: absolute; left: 50%; ...

aomiano55778的博客 126

页面水平居中布局

个人的学习笔记 一.水平居中布局(核心代码,四种方式) 1.display:flex + justify-content:center || margin:0 auto .parent宽是不固定的 类名为.child的div是display:block 默认与父元素同宽,父元素设置了display:flex后,子元素(.child)就变成了flex-item默认的宽是会根据内容的宽,父级元素再...

牧师的博客 574

css如何让背景上下居中显示,CSS有哪些方式可以实现垂直居中?

大家好,我是IT修真院郑州分院第四期的学员汪开放,一枚正直纯洁善良的web程序员今天给大家分享一下,CSS有哪些方式可以实现垂直居中?1.背景介绍44年前我们把人送上月球,但在CSS中我们仍然不能很好的实现垂直居中。——@James Anderson2.知识剖析垂直居中就是竖向居中接下来就讲解在css中实现垂直居中的几种方法:1、单行文本垂直居中方法说明:该方式只适用于情况比较简单的单行文本,只需...

weixin_39960710的博客 3528

div居中之css水平居中 单行多行文本垂直居中

div居中之css水平居中 单行多行文本垂直居中

陈万洲的专栏 2064

div垂直居中的方法(css的),百分比div垂直居中,html5

前言 我们都知道,固定高宽的div在网页中垂直居中很简单,相信大家也很容易的写出来,但是不是固定高宽的div如何垂直居中呢?我们在网页布局,特别是手机等web端网页经常是不固定高宽的div,那么这些div如何垂直居中呢?这篇文章,我总结一下。 固定高宽div垂直居中 如上图,固定高宽的很简单,写法如下: position: absolute; left: 50%;

milijiangjun的博客 797
上一篇: 设计模式-快餐简解-【策略模式】
下一篇: Struts标签中的多层logic:iterator详解
飞飞的魔毯小窝
博客等级 码龄14年 12粉丝 735原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值