我的问题或多或少是不言自明的,我试图找到一种标准的动态方法来集中y轴上的元素,就像:
margin: auto;
对于x轴。有什么想法吗我说的是下面这段代码,空页,在中间对齐一个图像。
<div id="main" style="display: block;"> <img style="margin: auto; display: block;" src="http://www.example.com/img.jpg" /> </div>
任何帮助将不胜感激!:)
qv7cva1a1#
给予吧,在这一个上使用表格,使用vertical-align: middle。您可以只使用一个单行、单单元格的表,而不会感到太内疚(我对此睡得像个婴儿)。这不是世界上最语义化的东西,但是你更愿意维护什么,一个小的单格table,还是计算出确切的高度并使用负边距进行绝对定位?
vertical-align: middle
5kgi1eie2#
如果知道要居中的元素的高度,则可以执行以下操作:
img { display: block; height: 500px; position: absolute; top: 50%; margin-top: -250px; /* 50% of your actual height */ }
gijlo24d3#
我只知道一个办法:
#mydiv { position: fixed; top: 50%; left: 50%; width: 100px; height: 100px; margin-top: -50px; margin-left: -50px; }
这是针对x轴和y轴的-但是必须为每个元素更改宽度/高度和边距。我讨厌它:-)此外,如果元素大于浏览器窗口,则会出现问题。
4c8rllxm4#
最著名的方法是使用绝对定位。您将顶部金额设置为50%,然后将边距顶部设置为元素的负一半。
#main { position: relative; } #main img { position: absolute; top: 50%; margin-top: -(half your image height)px; }
svgewumm5#
下面是使用vertical-align的变体http://jsfiddle.net/audetwebdesign/r46aS/它有一个缺点,即您需要为line-height指定一个值,该值还将定义包含元素的高度,该元素的作用类似于视口(用蓝色边框表示)。
vertical-align
line-height
注意:您可以通过设置body或html元素的高度(100%)来解决窗口高度问题,但您需要尝试一下(参见第3篇参考文献)。
然而,好的一面是,您不必根据图像的尺寸进行一些数学运算。以下是一些与垂直对齐相关的参考资料:http://css-tricks.com/what-is-vertical-alignhttp://blog.themeforest.net/tutorials/vertical-centering-with-csshttp://www.jakpsatweb.cz/css/css-vertical-center-solution.html有时候我必须记住基本的东西,所以我重读:http://www.w3.org/TR/CSS21/visudet.html这可能不能解决OP的问题,但在其他上下文中可能有用。
0dxa2lsx6#
在我的样式表中使用#menu img { vertical-align: middle; }对于最新版本的FireFox、Opera、Safari和Chrome都很好用,但在IE9中就不行了。我必须手动添加style="vertical-align: middle"到每一行img代码。例如:
#menu img { vertical-align: middle; }
style="vertical-align: middle"
<li><a href="../us-hosts.php"> <img src="../images/us-button.png" width="30" height="30" alt="US Hosts" style="vertical-align: middle;"/> US Hosts</a> </li>
t5fffqht7#
试试这个CSS:
margin-top:auto; margin-bottom:auto; display:block;
txu3uszq8#
答案有点过时了,所以这里有一个更现代的解决方案:
display: flex; align-items: center;
8条答案
按热度按时间qv7cva1a1#
给予吧,在这一个上使用表格,使用
vertical-align: middle
。您可以只使用一个单行、单单元格的表,而不会感到太内疚(我对此睡得像个婴儿)。这不是世界上最语义化的东西,但是你更愿意维护什么,一个小的单格table,还是计算出确切的高度并使用负边距进行绝对定位?5kgi1eie2#
如果知道要居中的元素的高度,则可以执行以下操作:
gijlo24d3#
我只知道一个办法:
这是针对x轴和y轴的-但是必须为每个元素更改宽度/高度和边距。我讨厌它:-)
此外,如果元素大于浏览器窗口,则会出现问题。
4c8rllxm4#
最著名的方法是使用绝对定位。您将顶部金额设置为50%,然后将边距顶部设置为元素的负一半。
svgewumm5#
下面是使用
vertical-align
的变体http://jsfiddle.net/audetwebdesign/r46aS/
它有一个缺点,即您需要为
line-height
指定一个值,该值还将定义包含元素的高度,该元素的作用类似于视口(用蓝色边框表示)。注意:您可以通过设置body或html元素的高度(100%)来解决窗口高度问题,但您需要尝试一下(参见第3篇参考文献)。
然而,好的一面是,您不必根据图像的尺寸进行一些数学运算。
以下是一些与垂直对齐相关的参考资料:
http://css-tricks.com/what-is-vertical-align
http://blog.themeforest.net/tutorials/vertical-centering-with-css
http://www.jakpsatweb.cz/css/css-vertical-center-solution.html
有时候我必须记住基本的东西,所以我重读:
http://www.w3.org/TR/CSS21/visudet.html
这可能不能解决OP的问题,但在其他上下文中可能有用。
0dxa2lsx6#
在我的样式表中使用
#menu img { vertical-align: middle; }
对于最新版本的FireFox、Opera、Safari和Chrome都很好用,但在IE9中就不行了。我必须手动添加style="vertical-align: middle"
到每一行img代码。例如:t5fffqht7#
试试这个CSS:
txu3uszq8#
答案有点过时了,所以这里有一个更现代的解决方案: