2014-12-03 99 views
0

我已经研究了很多帖子,没有一个完全与我自己的情况有关,我不能为我的生活找出这一个。我在绝对定位的容器内部有一个响应式图像。页面上有许多这样的图像,它是图像的图像网格,但每个图像的宽度和高度都不相同。如何将文本垂直和水平居中放置在绝对定位的响应图像上?

我需要通过图像链接来阅读'查看项目',才能完全居中垂直和水平居中。我可以通过从图像顶部设置最适合的边距来手动执行此操作,但这是页面上所有图像的很多代码时间的地狱,就像我所说的那样,它们都是不同的宽度和高度。

我基本的代码看起来是这样..

<div class="item" style="position: absolute; left: 0px; top: 0px;"> 
    <a href="link-to-view-project-on-a-different-page.html" title=""> 
    <img style="width: 100%;" alt="" src="http://placekitten.com/600/400"> 
    <h2>View Project</h2> 
    </a> 
</div> 

回答

0

根据浏览器的支持,你可以使用CSS绝对定位转变。 E.g:

h2 { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    transform: translateX(-50%) translateY(-50%); 
} 

Demo

如果浏览器支持,您可以使用负利润来实现类似的效果的问题。 E.g:

h2 { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    margin-top: -5px; /* This value should be half the height of the h2 element */ 
    margin-left: -5px; /* This value should be half the width of the h2 element */ 
} 
+0

感谢这么多的快速反应:)这似乎是工作,我只需要调整边距和利润率左(在你的第二个解决方案),以获得文本要准确居中(例如,margin-top设置为-60px,margin-left设置为-30px)。虽然这有效,但我不知道或理解为什么此解决方案可以工作。我不是最好的编码者!我现在要在其他图像上尝试一下,并在不同的浏览器中检查它。我会尽快回复,再次感谢。 – user2664397 2014-12-03 14:44:52

+0

您使用负边距的原因是抵消顶部和左侧的50%。例如,当你设置'left:50%'时,元素左侧的位置为50%。所需的效果通常是将元素的中间值设置为50%而不是左侧,因此您可以使用宽度/高度的一半的负边距将其拉回中央。希望更有意义。 – Guy 2014-12-03 14:58:25

0

这里是工作提琴http://jsfiddle.net/xnjy0dar/

基本上你想要的包装的形象和H2元素。将包装器设置为角落中的绝对位置或您希望图像出现的位置。也将h2设置为绝对位置。包装将完全与图像一样大。现在像这样定位h2。

.image1 { 
    top: 0; 
    left: 0; 
} 
.image2 { 
    top: 200px; 
    left: 0; 
} 
.image1, .image2 { 
    position: absolute; 
    text-align: center; 
} 
.image1 h2, .image2 h2 { 
    position: absolute; 
    display: block; 
    width: 100%; 
    top: 50%; 
    margin-top: -14px; 
    margin-bottom: 0; 
    left: 0; 
} 

它是margin-top的原因:-14px是为了补偿h2的高度。在这个例子中,14px是h2高度的一半,所以要相应地调整。

下面是HTML:

<div class="image1"> 
    <img src="http://placehold.it/350x150" /> 
    <h2>View Project</h2> 
</div> 
<div class="image2"> 
    <img src="http://placehold.it/150x250" /> 
    <h2>View Project</h2> 
</div> 
+0

干杯,我想我慢慢到达那里。进一步使事情复杂化,以及图库中的所有图像具有不同的高度和宽度,其中一些图像具有不同大小的文本块,该文本块位于父容器内的图像的上方或下方。所以它看起来像我仍然需要设置个别类来定位h2完全在中心取决于给定的图像本身(或者我应该说给定的容器本身的大小,其中包含所有不同的元素)。 – user2664397 2014-12-03 15:07:48