使div成为可点击链接与垂直居中之间的冲突

时间:2013-09-06 18:12:28

标签: html css

要使圆角框(请参阅http://jsfiddle.net/L36nq/)可点击/可收回,我需要使用

a {
    display: block;
}

然而,为了保持图像(两个方格)居中,我需要使用

#left  {
    display:table;
    ...
}
#right {
    display:table;
    ...
}

如何在保持图像居中的同时使全圆框可点击/可悬空?

HTML

<div id="left">
    <div id="cell">
        <a href="http://google.com/">
            <img src="box.svg" width="75%" height="75%" />
        </a>
    </div>
</div>

<div id="right">
    <div id="cell">
        <a href="http://bing.com/">
            <img src="box.svg" width="75%" height="75%" />
        </a>
    </div>
</div>

CSS

#left  {
    display:table; position:absolute;
    top:25%; left:25%; width:24%; height:50%;
    vertical-align:middle; text-align:center; margin: auto; border-radius:30px;
    background-color: #D88;
}
#right {
    display:table; position:absolute;
    top:25%; left:51%; width:24%; height:50%;
    vertical-align:middle; text-align:center; margin: auto; border-radius:30px;
    background-color: #88D;
}
#cell {display:table-cell; vertical-align:middle;}

a {
    display: block;
}

body { background-color: #9D9; }

2 个答案:

答案 0 :(得分:0)

a {
display: block;
min-width: 100%;
min-height: 100%;
position:absolute;
top:0;
}

你的锚标签不是继承,高度或宽度所以它基本上是0x0 px。以上css为我提供了小提琴:http://jsfiddle.net/MkfAe/

答案 1 :(得分:0)

这样的事可能适合你。 http://jsfiddle.net/ZNXvT/1/

我正在使用您的#cell元素并将其保留为块级元素,并在其上设置height: 100%;。我还在你的锚元素上设置了height: 100%;

#cell {
    height: 100%;
}
a {
    display: block;
    height: 100%;
}

现在进入魔术。您可以在a中添加一个元素(我称之为我的.valign-height)并将其设置为height: 100%;,并添加vertical-align: middle;

a .valign-height {
    display: inline-block;
    height: 100%;
    vertical-align: middle;
    width: 0;
}

然后使用图像(或svg)本身,我将其设置为vertical-align: middle;

a img {
    vertical-align: middle;
}

元素本身不能垂直对齐,因为vertical-align与其兄弟对齐。如果我们有一个隐藏元素会欺骗您的垂直对齐,它将始终将您的内容置于中心位置。这样,您可以保持锚点填充空间,并使img元素保持垂直居中。