几种网页元素居中方案小结

网页

先来看我一个简单XHTML/HTML文件代码(部分),我们的目的是让#container水平居中。

<body>
  <div id="container">
    <h1>content</h1>
    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Phasellus varius eleifend.</p>
  </div>
</body>

使用自适应边界(auto margin)

水平居中任意元素的首选办法是使用边界(margin)性质(property),并把左右之值设置为auto。但你必须为#container指定一个宽度。

div#container {
margin-left: auto;
margin-right: auto;
width: 168px;
}

这个方案在任何当代浏览器上都有效,即使是IE6,前提是在web标准兼容模式下(compliance mode)。不幸的是,它不会在先前版本的IE/Win中工作。我们为此列一个表格:
浏览的自适应边界支持一览表 浏览器   版本   支持
Internet Explorer   6.0, compliance mode   是
Internet Explorer   6.0, quirks mode   否
Internet Explorer   5.5 Windows   否
Internet Explorer   5.0 Windows   否
Internet Explorer   5.2 Macintosh   是
Mozilla   所有当前版本   是
Mozilla Firefox   所有版本   是
Netscape   4.x   否
Netscape   6.x+   是
Opera   6.0, 7.0 Macintosh and Windows   是
Safari   1.2   是

尽管受到浏览器支持的限制,大部分设计师还是提倡你尽可能这样做。但我们依然可以使用CSS应付一切情况。

使用文本排列(text-align)

此方案需要使用到text-align性质,应用给body元素并且赋予center的值。

body {
text-align: center;
}

它公正地对待各种浏览器,十分彻底,唾手可得。然而,这是赋予文本的性质,它使#container中的文本也居中了。所以,在布局上我们还得做一些额外工作:

div#container {
text-align: left;
}

这样才可以把文本的对齐方式返回默认状状态。

综合边界和文本排列

因为文本排列向后兼容,当代浏览器也支持自适应边界,很多设计师把他们结合起来,实现跨浏览器使用。

body {
text-align: center;
}
#container {
margin-left: auto;
margin-right: auto;
border: 1px solid red;
width: 168px;
text-align: left
}

唉,依然不完美,因为还是一个黑客技巧 (hack)。你不得不为文本排列写下多余的规则。但现在,我们可以使用更完美的跨浏览器的方案。

负边界解决方案

此方案得结合使用绝对定位(absolute positioning )。首先,把#container绝对定位并左偏移50%,这样,#container的左边界就是页面分辨率的一半。下一步,把#container的左边界设置为负值,值大小为#container宽度(width)的一半。

#container {
background: #ffc url(mid.jpg) repeat-y center;
position: absolute;
left: 50%;
width: 760px;
margin-left: -380px;
}

看,没有任何黑客技巧(no hacks)!连Netscape 4.x都支持!

时间: 2024-12-29 09:54:31

几种网页元素居中方案小结的相关文章

position-如何将html全部元素居中

问题描述 如何将html全部元素居中 html小白一个.遇到的代码想将它居中,然后尝试了align="center"和 都没有效果.代码精简后是这样的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="

jQuery插件实现控制网页元素动态居中显示

 这篇文章主要介绍了jQuery插件实现控制网页元素动态居中显示,实例分析了jQuery插件的实现与元素动态显示的技巧,需要的朋友可以参考下     本文实例讲述了jQuery插件实现控制网页元素动态居中显示的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 (f

IOS当4种UI元素的可用性问题及优化建议

  这周又是一篇来自Nielsen Norman Group的文章.供参考吧,这种文章背后的思维模式甚至是精神才是最该汲取的,内容本身反而是其次;这样的东西看的越多,实践当中具有代表性的产品案例经历的越多,你越会发现,设计这种事,在很多时候,无明无暗,无是无非,有的只是特定的产品.特定的资源.特定的情境.特定的用户群体,以及所有这些因素混杂在一起之后摆在面前的需要不断权衡.争取或妥协的各种可能性.下面进入正文. 那些大的软件公司,譬如Apple.微软.Google等等,通常会为第三方app设计师

《用Python写网络爬虫》——2.2 三种网页抓取方法

2.2 三种网页抓取方法 现在我们已经了解了该网页的结构,下面将要介绍三种抓取其中数据的方法.首先是正则表达式,然后是流行的BeautifulSoup模块,最后是强大的lxml模块. 2.2.1 正则表达式 如果你对正则表达式还不熟悉,或是需要一些提示时,可以查阅https://docs.python.org/2/howto/regex.html 获得完整介绍. 当我们使用正则表达式抓取面积数据时,首先需要尝试匹配 元素中的内容,如下所示. >>> import re >>&

正确使用DOM--如何访问网页元素

dom|访问|网页 Firefox以及其他Gecko引擎的浏览器遇到的最常见的兼容性问题是IE DHTML和W3C DOM的区别.不规范的DHTML脚本中最容易犯的一个错误就是使用不规范的方式来访问网页元素.我们曾经用spider爬一些国内著名门户网站,单从数量上看,95%以上的javascript错误都来自于此.常见的访问网页元素的不规范方式有一下几种: 1. 直接用id或name属性名访问网页元素,例如: <div id="icefable1">...</div&

FrontPage XP网页元素的制作

经过上次的学习,想必读者朋友们已经基本掌握了使用FrontPage XP建立和管理站点的方法,那么建立好一个站点以后,接下来的工作就是读者朋友们最为关心的网页的制作和编辑了.我们知道,一个站点是由多个网页组成,一个网页又是由文字.图像.声音.视频.超链接等多种对象构成,这次我们就围绕网页元素的制作,来使用FrontPage XP一步步完成. 网页的创建 网页的创建有两种方法,一种是基于空白网页创建,另外一种就是基于FrontPage XP提供的网页模板快速建立.前者需要作者自己构造网页布局格式,

windows-将剪切板中的图片输出到网页有哪些方案?

问题描述 将剪切板中的图片输出到网页有哪些方案? 我想在网页上按CTRL+V后,将剪切板中的图片以的形式输出到网页上 解决方案 网页中的text元素捕获粘贴这一操作,获取剪切板内容. 类似的,要实现所需功能,先找到哪个元素支持图片. 解决方案二: 设计阶段粘的话有很多方法,为什么非要粘贴呢 . 解决方案三: 图片通过截屏软件存入了剪切板,然后要CTRL+V输出到网页上 解决方案四: 猜测粘贴板中获取的图片信息包含图片的地址 解决方案五: 首先直接Ctrl+V,然后就是在网页元素支持插入图片的情况

《PaaS程序设计》一2.3 PaaS:综合两种方式的最佳方案

2.3 PaaS:综合两种方式的最佳方案 对于开发者来说,通常会以共享主机的方式起步.很快,就会经历需要更强的功能和控制的阶段,于是,就会转向独立主机托管.在完全拥有了控制权之后,你可能会感到很惬意,也会很兴奋,因为你可以对服务器进行调整和优化,让它们运行得更快,网站可以更快地的被加载,并且可以处理更多的用户请求. 然后,随着时间的流逝,兴奋感很快就会烟消云散,因为日复一日维护服务器所增加的负担,会让人筋疲力尽.独立服务器可以提供更强的功能和控制,但是很容易就会遭受攻击,而作为开发者,你必须自己

JavaScript实现自动生成网页元素功能(按钮、文本等)_javascript技巧

创建元素的方法: 1.利用createTextNode()创建一个文本对象 2.利用createElement()创建一个标签对象 3.直接利用容器标签中的一个属性:innerHTML-----本质上改该标签容器中的"html代码",不是我们认为的对象树的操作 详解代码: <body> <input type="button" value="创建并添加节点1" onclick="addNode1()"/>