网络编程
位置:首页>> 网络编程>> 网页设计>> 使用CSS简单实现垂直居中

使用CSS简单实现垂直居中

作者:dudo 来源:dudo blog 发布时间:2008-06-23 07:32:00 

标签:居中,css,浮动

学习一些你已经知道的知识也没有什么坏处,是吧?

我知道这可能并不一定非常有意义,但是很多时候我们往往知其然而不知其所以然,这会使得事情出现惊人的差异。这就是CSS的魅力所在,你可以使用不同的方法实现相同的布局。这样的事情同样也发生在了我的身上,某个礼拜,我发现一个网站使用了一种不同的方法来实现居中布局,而这种方法对我们大家来说早已是都是很熟悉知的简单技术了。的确,可能对于大家很多人来说这种方法早已采用过,但是直到今天它起了我的注意。

传统做法:

我学到的第一个CSS知识就是如何把一个固定宽度和高度的元素水平或者垂直居中。这些居中的内容可能是入站欢迎页面(Splash Page http://searchsoa.techtarget.com/sDefinition/0,,sid26_gci213036,00.html)中图片,或者是一些设计喜欢的居中设计的网站等。最原始的解决办法就是把元素在窗口中距左和距上边缘进行50%的绝对定位。当然这只是把元素的右上角移动到了窗口的中央,接下来你还需要设置负的margin-left和margin-top并且使它们的值刚好是宽和高的一半来把元素拉加到屏幕的中央。

让我们看一下旧式做法的例子并注意一下其中的不足:

html,body{   
    height:100%;   
  margin:0;   
 padding:0;   
}   
body{   
  background:#eae7d7 url(images/vert-centre.jpg) repeat-x center center;   
    text-align:center;   
    min-width:626px;   
  min-height:400px;   
}   
#vert-hoz{   
  position:absolute;   
    top:50%;   
  left:50%;   
 margin-top:-198px;/* half elements height*/  
   margin-left:-313px;/* half elements width*/  
   width:624px;   
  height:394px;   
 border:1px solid silver;   
  background:#666;   
  overflow:auto;/* allow content to scroll inside element */  
    text-align:left;   
}   
h1 {color:#fff;margin:0;padding:0}  
<div id="vert-hoz">  
 <h1>Content goes here</h1>  
</div>  

效果如下图:



图1

为了页面美观起见我给各元素添加了一些背景颜色,这里我们真正感兴趣的是灰色居中部分(此外,你应该注意到为了使背景图片居中你应该设置html、body的高度为100%)。

如图1所示,这个结果正题我们想要的,元素在水平和垂直方向上都完美地实现了居中。文章中已经提到,对元素绝对定位使其top和left值都为50%,然后使用负的顶部填充和左侧填充并使填充的值为高和宽的一半。

尽管看起来没有什么问题,但是使用这种方法存在几个严重的不足,水平或者垂直缩小窗口你就会发现这个问题了。当窗口缩小到比元素还要小时,元素就会开始从窗口的上部和左侧滑出。滑出的部分即使是使用窗口的滚动条也无法可见。这就意味着使用较小屏幕的用户根本看不见这些内容。

图2显示了当窗口缩小时例子中单行文本发生的变化。

图2

文本上部有一半丢失,左侧也有一部分不见了。如果我们进一步缩小窗口,整个文本会完全消失。为了达到我们最初的目的,试着给body增加min-height和min-width属性,但是你会发现这根本没有任何效果,元素依然会滑出窗口之外。

0
投稿

猜你喜欢

  • 1 俄罗斯方块游戏《俄罗斯方块》原本是前苏联科学家阿列克谢&middot;帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公
  • 本文实例为大家分享了Python3 Tkinkter + SQLite 实现登录和注册界面,供大家参考,具体内容如下Ubuntu14 + P
  • 1.字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66
  • Math对象Math对象是在高中数学课就学过的内置对象。它知道解决最复杂的数学问题的所有公式,如果给它要处理的数字,即能计算出结果。Math
  • 以前从来没有写过特别多的代码,这次在阅读论文的时候跑别人的代码的时候出现了很多import的问题,这里我想跟大家分享一下,我在Ubuntu系
  • 一、功能实现对学生对个人信息的增删查改实现后台对所有学生信息的操作二、平台windows+pycharm(python开发工具)三、逻辑框图
  • 本文实例讲述了Python写入CSV文件的方法。分享给大家供大家参考。具体如下:# _*_ coding:utf-8 _*_#xiaohei
  • 问题你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架。解决方案构建一个REST风
  • 本文实例为大家分享了pygame实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下由于这段时间实在是太聊了,没什么事做,游戏也玩腻了,所以
  • 1.1.1 摘要在开发过程中,我们不时会遇到系统性能瓶颈问题,而引起这一问题原因可以很多,有可能是代码不够高效、有可能是硬件或网络问题,也有
  • SQL Server 的扩展存储过程,其实就是一个普通的 Windows DLL,只不过按照某种规则实现了某些函数而已。近日在写一个扩展存储
  • 项目中使用的vue,刚好有需求要实现轮播图,突出显示当前图片,两边展示其他图片;通过查各种资料,实现了,故在此记录下来下面我们来看下实现步骤
  • 废话不多说,直接开始拉~~~我们总共有 6 只海龟,颜色不同,它们以随机长度移动。首先,我们应该通过输入乌龟的颜色来押注乌龟。第一个越线的乌
  • 本文实例为大家分享了Python实现简单猜数字游戏的具体代码,供大家参考,具体内容如下一、需求分析编写一个猜数字游戏,游戏规则:计算机给出一
  • 我们经常会要用到页面的包含这样东西. 在asp.net 我开始也还是习惯用asp中的include 用起来感觉很麻烦.
  • 具体内容如下所示:一、常用函数1、ASCII()返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘&
  • 前言我们知道,enigma机是德军二战中重要的情报加密机器,其有许多特点。首先,它是一台加解密一体机其次,它有排己性,虽然多次输入同一明文可
  • 守护进程(daemon)是指在UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始
  • 1 逻辑数据库和表的设计数据库的逻辑设计、包括表与表之间的关系是优化关系型数据库性能的核心。一个好的逻辑数据库设计可以为优化数据库和应用程序
  • 前言本文主要给大家介绍了关于Python用字符串调用函数或方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:先看一个例子:&
手机版 网络编程 asp之家 www.aspxhome.com