在表格单元格上方放置一个按钮,并垂直对齐单元格中的文本

Sea*_*ene 2 html css

我试图在表格单元格上方放置一个按钮,这是我所实现的:

在此输入图像描述

这是代码:

body {
    margin: 100px;
}
td {
    border: 1px solid black;
    padding: 20px;
    text-align: center;
    vertical-align: middle;
}

td span {
    text-align: center;
}

table {
    border-collapse: collapse;
}

#btn {
    display: block;
    margin-left: auto;
    margin-right: auto;
    position: relative;
    height: 20px;
    top: -30px;
}
Run Code Online (Sandbox Code Playgroud)
<table>
    <tr>
        <td>
            <button id='btn'>test</button>
            <span>Alfreds Futterkiste</span>
        </td>
        <td>Maria Anders</td>
        <td>Germany</td>
    </tr>
    <tr>
        <td>Centro comercial Moctezuma</td>
        <td>Francisco Chang</td>
        <td>Mexico</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

看起来不错,我已将按钮放置在表格单元格上方。但有一件事困扰着我:第一个表格单元格中的文本没有垂直对齐。为什么?我用过vertical-align但是没效果。如何让它发挥作用

Chr*_* W. 6

将 btn 从 DOM 流中分离出来,position: absolute这样它就不会像这样在测量中被计算;

body {
    margin: 100px;
}
td {
    border: 1px solid black;
    padding: 20px;
    text-align: center;
    vertical-align: middle;
}

td span {
    text-align: center;
}

table {
    border-collapse: collapse;
}

#btn {
    height: 20px;
    position: absolute;
    top: -10px;
    left: 50%;
    transform: translateX(-50%);
}

.pos-relative {
  position: relative;
}
Run Code Online (Sandbox Code Playgroud)
<table>
    <tr>
        <td class="pos-relative">
            <button id='btn'>test</button>
            <span>Alfreds Futterkiste</span>
        </td>
        <td>Maria Anders</td>
        <td>Germany</td>
    </tr>
    <tr>
        <td>Centro comercial Moctezuma</td>
        <td>Francisco Chang</td>
        <td>Mexico</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)