好的,所以这基本上是通常的“如何垂直居中CSS”的问题,但有一些捕获。垂直居中,未知高度,页面上的其他内容
没有Javascript。仅限HTML和CSS。只要今天的浏览器能很好地支持CSS3就行。
元素的内容以及高度是未知的。它可能在几十到几百像素的任何地方。将来我甚至可能会有一个脚本添加和删除里面的元素,所以当用户与它交互时它可能会改变高度。
页面上还有其他内容 - 左侧导航栏和顶部菜单。这些需要可以访问。
我使用的方法是使用显示三容器的div方法:表单元,如在记载:http://www.jakpsatweb.cz/css/css-vertical-center-solution.html这解决了问题1和2,但不3.
http://imgh.us/vcenter.jpg节目设计和问题。黄色框是最内层的容器。整个页面周围的红色和绿色虚线框(由于JPEG编码已经变得有些模糊)分别是最外层和中层容器。 (不合理的页脚是一个单独的问题...)
这个布局的问题是外部容器覆盖整个页面,这使得无法点击导航栏,因为它现在是“下“那些容器。 Z-index可以将它们移动到底部,但是随后点击红色框内的任何内容变得不可能,因为它现在位于页面的主要内容框“下面”。 (XHTML只允许<内部的单个元素>,因此我只是将它全部包装在<div>中。)即使外部两个容器具有z-index:-100且内部容器具有z-index: 200,由于某种原因它仍然在主要内容框下结束。 (我尝试了各种位置属性。)
我见过的唯一解决方案是一个新的CSS3属性,pointer-events,它理论上允许我按照我的意愿使事件通过透明容器;然而,这似乎是相当新的,并且SVG之外的大多数浏览器都不支持,我想我会遇到与Z-index相同的麻烦。
我确实希望元素位于页面中心,而不是内容区域的中心(即忽略位置计算中的导航栏),因此将容器放置在内容区域内不是理想的解决方案。 (我在登录页面也使用了这种风格,它没有导航栏,如果“居中”元素相对于不总是可见的导航栏居中,它会显得有点奇怪。)
总之,我需要的是在没有使用Javascript的情况下,在其边缘具有其他内容的页面上未知高度的元素居中,而不覆盖具有不可见层的任何内容(并且因此使其不可见)。
这些“捕获”是几乎相同的通常的窘境。 – Ben 2010-11-16 06:31:45