【问题标题】:Input Element is not Shown Inline输入元素未内联显示
【发布时间】:2019-06-25 20:44:25
【问题描述】:

除了div 内的两个按钮之外,我们还有一个input 元素,td 内。我不太明白,当它的父级(td)有宽度时,如何将 div 的所有子级放在一行中。

这里是an example

例如,我可以将输入元素的宽度设置为 65%,但这只是一个 hack。

有人知道,为什么输入元素需要所有宽度如果表格单元格具有宽度属性?我没有找到任何提示in the spec

我怎样才能将输入元素 (display) 设置为内联? display: flex 代表 div(就像是 suggested for this)?

生存工具包

HTML

<p>Input takes all width?</p>
<table>
    <tbody>
        <tr>
            <td width="163px">
                <div>
                    <input type="text" name="some-field" />
                    <button class="symbol" type="button"></button>
                    <button class="symbol" type="button"></button>
                </div>
            </td>
        </tr>
    </tbody>
</table>

CSS

button.symbol {
    border-width: 0;
    background: white;
    display: inline;
}
button.symbol::before {
    content: '\0394';
}
input {
    display: inline;
}

【问题讨论】:

标签: html css


【解决方案1】:

好吧,我会说(我不是专家,所以不要认为我的话是理所当然的)它将元素设置为彼此相邻(在您的 jsfiddle 第二个示例中),因为您从未指定宽度。因此,它将所有这些都对齐,因为它没有要记住的界限。 但是,当您为td 设置宽度时,它必须牢记x px 的边界。如果您不指定,将设置输入的默认宽度。现在,考虑到您的按钮也有默认宽度。这意味着它尝试成为inlineinline-block,但“失败”,因为它仍然有边界。 因此,当您设置某个百分比时,它确实有效,因为它会采用 x percentage 相对于其父级。因此,要么增加td 的宽度,要么为按钮和输入字段设置x px。如果这不是一个选项,您可以选择百分比。

但同样,我不是这个话题的专家,所以不要相信我的话。这是我的 2 美分。

【讨论】:

    【解决方案2】:

    有人知道,如果表格单元格具有宽度属性,为什么输入元素会占据所有宽度?

    事实并非如此。 inputtype="text" 元素的默认 size 为 20,这可能导致不同的宽度(取决于字体、字体大小等)。

    在您的情况下,您已将 163px 宽度分配给您的 td。如果将宽度增加为250px,则所有元素都将排成一行。

    例如:

    button.symbol {
      border-width: 0;
      background: white;
      display: inline;
    }
    button.symbol::before {
      content: '\0394';
    }
    input {
      display: inline;
    }
    <p>Input takes all width?</p>
    <table>
      <tbody>
        <tr>
          <td width="250px">
            <div>
              <input type="text" name="some-field" />
              <button class="symbol" type="button"></button>
              <button class="symbol" type="button"></button>
            </div>
          </td>
        </tr>
      </tbody>
    </table>
    
    <p>No Width</p>
    <table>
      <tbody>
        <tr>
          <td>
            <div>
              <input type="text" name="some-field" />
              <button class="symbol" type="button"></button>
              <button class="symbol" type="button"></button>
            </div>
          </td>
        </tr>
      </tbody>
    </table>

    希望对你有帮助!

    【讨论】:

    • 输入元素的这个默认宽度是多少? Here 我们有一个提示:这显然取决于浏览器。
    • @BairDev 原来尺寸和宽度是两个不同的东西,检查一下:stackoverflow.com/questions/1480588/input-size-vs-width
    • 是的,默认的sizeseems to be 20,这可能会导致各种宽度(取决于字体和字体大小等),但我们可以看到最小值在这里。
    猜你喜欢
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2020-09-08
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多