Трудно сказать, что вы делаете неправильно без вашего CSS. Тем не менее, я думаю, что подход, который вы должны использовать для решения вашей проблемы, должен быть следующим:
Absolute
позиционируйте ваш контент, который является тегом ul
. Это вывело бы контент из нормального потока рендеринга. - Чтобы сделать всю ячейку кликабельной, сделайте теги
a
display:block
и height: 100%
. - Поскольку контент
ul
абсолютно позиционирован, вам придется применить position: relative
к родителю, т.е. td
. Теперь содержимое должно быть размещено в соответствии с ячейкой, чтобы вы могли легко настроить ее положение.
Суть вышеупомянутого будет выглядеть примерно так:
*,
*:before,
*:after {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
table {
table-layout: fixed;
width:100%;
}
td {
border: 1px solid;
border-radius: 3px;
height: 100px;
padding: 10px;
background: #3f3f3f;
position: relative;
font-family: sans-serif;
}
a {
text-decoration: none;
color: inherit;
}
.cell {
color: #f2f2f2;
display: block;
height: 100%;
}
.cell_list {
position: absolute;
top: 50%;
transform: translateY(-50%);
font-size: 12px;
}
.cell_list__item {
background: #f9b42c;
border-radius: 3px;
padding: 3px 12px;
}
<table>
<tr>
<td>
<a href="#" class="cell">
<span>1</span>
</a>
<ul class="cell_list">
<li class="cell_list__item">
<a href="/another_link">content</a>
</li>
</ul>
</td>
<td>
<a href="#" class="cell">
<span>2</span>
</a>
<ul class="cell_list">
<li class="cell_list__item">
<a href="/another_link">content</a>
</li>
</ul>
</td>
<td>
<a href="#" class="cell">
<span>3</span>
</a>
</td>
</tr>
</table>