【问题标题】:html input element expand to full widthhtml输入元素扩展为全宽
【发布时间】:2016-01-11 00:45:58
【问题描述】:

我有一个简单的问题,但我尝试过的解决方案不起作用。我的表单中有两列布局。此外,右列分为两列。左边是固定宽度(标签),右边是输入。我想在同一行输入和标签,如果可能的话,输入字段填充剩余的可用空间。 请看小提琴,让我知道我错过了什么。

<div style="float: left; width: 45%">
  <div id="keepTogether">
    <div id="label">
      Description
    </div>
    <div id="rightColumn">
      <input id="inputfield" />    
    </div>

  </div>
</div>

#keepTogether {
  height: 24px;
  margin-bottom: 8px;
  margin-top: 0px;
}

#Label {
  width: 100px;
  float: left;
  display: inline-block;
}

#inputfield {
  float: right;
  width: 100%;
}

#rightColumn {
  width: auto;
}

https://jsfiddle.net/workmonitored/4m0sj1fq/4/#&togetherjs=j3i2Q105hF

【问题讨论】:

    标签: html css fluid-layout


    【解决方案1】:

    选项 1 使用 display flex

    sn-p

    #main{
     float: left;
     width:60% ;
       display:flex;
       border:solid;
    }
    #keepTogether {
      border:solid;
    }
    
    #label {
      display: inline;
      flex: 0 0 100px;
    }
    
    #inputfield {
          -webkit-box-flex:1;
          -webkit-flex:1;
              -ms-flex:1;
                  flex:1;
      
    }
    <div id='main'>
        <div id="label">
          Description
        </div>
          <input id="inputfield" />    
    </div>

    使用表格标签的选项 2

    这是一个sn-p

    table{
      width:60%;
    }
    td {
      padding:0px;
      margin:0px;
    }
    #inputfield{
      width:100%;
      margin:none;
      padding:0;
    
    }
    #label{
      width:50px;
    }
    <table>
    <tr id='main'>
          <td id="label">
          Description:</td>
        <td id="rightColumn">
           <input id="inputfield" />   
        </td>
      </tr>
      </table>

    【讨论】:

    • jsfiddle.net/workmonitored/4m0sj1fq/15/… 我通过将 main 更改为宽度 45% 来尝试示例,它可以工作,但由于溢出被隐藏,输入字段被切断。有没有办法让它在同一行而不被切断输入?
    • 你也可以使用 display flex...answer 编辑来显示这个... :D
    • 我使用了 table 标签,因为我无法以任何其他方式处理它。其他解决方案都没有奏效。我无法使用 flex,因为 IE 8 似乎不支持它。
    【解决方案2】:

    希望这对你有用。

    #keepTogether {
            height: 24px;
            margin-bottom: 8px;
            margin-top: 0px;
        }
    
        #Label {
            width: 20%;
            float: left;
            display: inline-block;
        }
    
        #inputfield {
            float: right;
            width: 100%;
        }
    
        #rightColumn {
            width: 80% !important;
            width: auto;
            float: left;
        }
    

    【讨论】:

    • 有没有办法让标签固定宽度?
    • 您可以相对于其他元素给定一个固定的大小。您可能会看到修复大小不适用于某些屏幕分辨率。所以你必须在每个屏幕尺寸下进行测试。媒体查询可能对您有所帮助。如果您可以使用 Bootstrap 框架轻松进行布局。它简单且经过良好测试。
    【解决方案3】:

    我在您的代码中发现了一些错误。
    - 你的第一个 div 没有必要保留。
    - 您的 id 选择不正确。应该是#label 你也应该按照这个代码结构和 css 来解决这个问题。

    #keepTogether {
      display: inline-block;
    }
    
    #label {
      float: left;
      padding-right: 10px;
    }
    
    #inputfield {
      width: 200px;
    }
      <div id="keepTogether">
        <div id="label">
          Description
        </div>
        <input id="inputfield" />
      </div>

    【讨论】:

    • 左栏是什么意思?如果#label 是左列,你可以给它 45% 的宽度 (#label: {width: 45%}) 并将 #keepTogether 的宽度设置为 100% (#keepTogether {width: 100%})。在jsfiddle.net/4m0sj1fq/16 上查看此代码并且您仍然不需要额外的 div 将左列宽度设置为 45%
    猜你喜欢
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2023-01-13
    • 2019-12-20
    • 1970-01-01
    • 2016-09-26
    • 2022-01-06
    • 2011-04-12
    相关资源
    最近更新 更多