【问题标题】:CSS Float fails for HTML5 Input ElementsHTML5 输入元素的 CSS Float 失败
【发布时间】:2015-05-10 17:38:37
【问题描述】:

在使用带有 CSS 浮动属性的 HTML5 表单输入类型(数字、日期、电子邮件等)时遇到了问题。我试图将这些浮动到右侧,但他们不尊重该设置。

这是我在测试期间将 CSS 内联的片段:

<div class="center" style="width: 100%">
...
<div style="width: 90%" class="textfont">
...
<table style="width:100%;">
     <thead>
         <tr class="tableHeading">
             <td style="width: 50%; text-align: center;">
                 Unit Types
              </td>
              <td style="text-align: center;">
                  Number of Units
              </td>
          </tr>
       </thead>
       <tbody>
           <tr>
               <td style="border-right: 1px;">
                   Single&#45;Family Detached
                </td>
                <td>
                   <input type="number" name="txtDetached" style="width:25%; float:right" />
                 </td>
            </tr>
            <tr>
                <td style="height: 32px">
                    Townhouse, Row, or Cluster
                 </td>
                 <td style="height: 32px">
                     <input type="number" name="txtCuster" style="width:25%; float:right" />
                 </td>
             </tr>
             <tr>
                 <td>
                     Garden
                 </td>
                 <td>
                     <input type="number" name="txtGarden" style="width:25%; float:right" />
                 </td>
              </tr>
              <tr>
                 <td style="height: 43px">
                      Mid&#45;rise (3&#45;5)
                 </td>
                 <td style="height: 43px">
                      <input type="number" name="txtMidrise" style="width:25%; float:right" />
                  </td>
               </tr>
                <tr>
                    <td>
                        High&#45;rise (6&#43;)
                    </td>
                    <td>
                        <input type="number" name="txtHighRide" style="width:25%; float: right" />
                   </td>
                </tr>
                <tr>
                    <td>
                        Other
                    </td>
                    <td>
                        <input type="text" name="txtOther" style="width: 80%; float: right;" />
                    </td>
                </tr>
            </tbody>
        </table>
   ...
   </div>
  ...
</div>

是的,我知道桌子不受欢迎......

这是整体 CSS:

    .Header
    {
        font-size: 30px;
        font-family: Cambria;
        color: White;
        background: #254117;
        text-align: center;
        font-weight: bold;
        width: 90%;
    }
    .subHeading
    {
        font-family: Arial;
        font-size: 11px;
        text-align: left;
    }

    .container
    {
        display: table;
        width: 90%;
        border-collapse: collapse;
    }
    .heading
    {
        font-weight: bold;
        display: table-row;
        background-color: #C91622;
        text-align: center;
        line-height: 25px;
        font-size: 14px;
        font-family: georgia;
        color: #fff;
    }
    .table-row
    {
        display: table-row;
        text-align: center;
    }
    .col
    {
        display: table-cell;
        border: 1px solid #CCC;
    }

    .tableHeading
    {
        font-family: Arial;
        background: #99C68E;
        font-size: 18px;
        text-align: left;
    }

    .textfont
    {
        font-size: 15px;
        font-family: Arial;
        text-align: left;
    }

    input[type=text]
    {
        width: 100%;
        height: 22px;
    }

    textarea
    {
        width: 98%;
    }
    table
    {
        border-collapse: collapse;
        border: 1px solid black;
        border-spacing: 10px;
    }
    tr
    {
        border-collapse: collapse;
        border: 1px solid black;
    }
    td, th
    {
        padding: 5px;
    }
    .center
    {
        margin-left: auto;
        margin-right: auto;
    }

这是显示的内容:

正如您所见,带有type="text" 的输入元素可以正常工作,但是当type="number" 时,它仍然是默认值,左对齐。

此行为存在于 IE 10、FireFox 和 Chrome 中。

我发现解决方法是将 HTML5 输入类型包装在 div 中,然后将 CSS 设置为使 div 向右浮动,这样就可以正常工作了。我在网上查找这方面的信息时遇到问题,但这是一个已知问题吗?解决方法实际上是处理此问题的正确方法吗?

编辑:添加了完整的 CSS(减去我移动内联进行测试的内容)。添加了整个表和它们所包含的 div。如果我将所有这些复制到 jsFiddle 它可以正常工作,所以我显然在这里做错了......

【问题讨论】:

  • 对我来说似乎工作正常。请发布与表格及其单元格相关的所有 CSS - 一个显示您的问题的孤立案例。
  • 是的,它工作正常,您可以在这里看到:jsfiddle.net/98h5jrbw
  • works fine for me 在 chrome、ff 和 ie11 中,如果您遇到问题。与其将输入向右浮动,不如在 td 上使用 text-align right
  • 嗯...我必须有一些其他的 CSS 让我失望。让我进行一些挖掘,然后我将发布更新并包含更多代码。
  • @JNYRanger 你确定表内的每个 tr 总是有 2 个 td 吗?

标签: css html css-float


【解决方案1】:

好的,&lt;td&gt;内部浮动元素的问题,使用text-align可以解决。

<td style="text-align:right;">
  ...
</td>

更多内容可以在这里阅读DIV in <td> float right

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2016-01-28
    • 2013-03-28
    • 2019-03-26
    相关资源
    最近更新 更多