【问题标题】:How to split a form into two columns?如何将表格分成两列?
【发布时间】:2016-03-02 03:39:39
【问题描述】:

我有一个将输入传递给 PHP 脚本的基本表单。我想将表单拆分,以便第二个子条目(Person 2)位于第一个(Person 1)右侧的列中,而不是直接位于下方。

<link rel="stylesheet" href="test.css">    
    <form class="form-validation" method="post" action="script.php">
       <link rel="stylesheet" href="test.css">
       <h2>Person 1:</h2>
       <br>
       <div class="form-row form-input-name-row">
          <label>
          <span>Name</span>
          <input name="field1" type="text">
          </label>
       </div>
       <div class="form-row form-input-name-row">
          <label>
          <span>Age</span>
          <input name="field2" type="text">
          </label>
       </div>
       <div class="main-content">
          <h2>Person 2:</h2>
          <br>
          <div class="form-row form-input-name-row">
             <label>
             <span>Name</span>
             <input name="field3" type="text">
             </label>
          </div>
          <div class="form-row form-input-name-row">
             <label>
             <span>Age</span>
             <input name="field4" type="text">
             </label>
          </div>
    </form>
    <div>
    <button name="submit">Submit form</button>
    </div>
    </div>

【问题讨论】:

标签: html css forms


【解决方案1】:

将两个条目包装在具有相同类(例如“子条目”)的 div 中,并将它们以 50% 的宽度向左浮动:

.sub-entry {
    width: 50%;
    float: left;
}

.button {
    text-align: center;
    padding-top: 20px;
    clear: both;
}
<form class="form-validation" method="post" action="script.php">
    <link rel="stylesheet" href="test.css">
    <div class="sub-entry">
        <h2>Person 1:</h2>
        <br>
        <div class="form-row form-input-name-row">
            <label>
                <span>Name</span>
                <input name="field1" type="text">
            </label>
        </div>
        <div class="form-row form-input-name-row">
            <label>
                <span>Age</span>
                <input name="field2" type="text">
            </label>
        </div>
    </div>
    <div class="sub-entry">
        <div class="main-content">
            <h2>Person 2:</h2>
            <br>
            <div class="form-row form-input-name-row">
                <label>
                    <span>Name</span>
                    <input name="field3" type="text">
                </label>
            </div>
            <div class="form-row form-input-name-row">
                <label>
                    <span>Age</span>
                    <input name="field4" type="text">
                </label>
            </div>
        </div>
    </div>
</form>
<div class="button">
    <button name="submit">Submit both forms</button>
</div>

请注意,我还为包含按钮的 div 赋予了一个类按钮,并将其设置为表单的中心。

【讨论】:

    【解决方案2】:

    你可以试试 CSS flexbox

    form { display: flex; }
    <form class="form-validation" method="post" action="script.php">
    
      <div class="person-1">
        <h2>Person 1:</h2>
        <div class="form-row form-input-name-row">
          <label>
            <span>Name</span>
            <input name="field1" type="text">
          </label>
        </div>
        <div class="form-row form-input-name-row">
          <label>
            <span>Age</span>
            <input name="field2" type="text">
          </label>
        </div>
      </div><!-- end .person-1 -->
      
      <div class="main-content person-2">
        <h2>Person 2:</h2>
        <div class="form-row form-input-name-row">
          <label>
            <span>Name</span>
            <input name="field3" type="text">
          </label>
        </div>
        <div class="form-row form-input-name-row">
          <label>
            <span>Age</span>
            <input name="field4" type="text">
          </label>
        </div>
      </div><!-- end .person-2 -->
      
    </form>
    
    <div><button name="submit">Submit form</button></div>

    flexbox 的好处:

    1. 最小代码;非常高效
    2. centering, both vertically and horizontally, is simple and easy
    3. equal height columns are simple and easy
    4. multiple options for aligning flex elements
    5. 反应灵敏
    6. 与浮动和表格不同,它们提供有限的布局容量,因为它们从未用于构建布局,flexbox 是一种现代 (CSS3) 技术,具有广泛的选项。

    请注意,所有主流浏览器都支持 flexbox,except IE 8 & 9。一些最新的浏览器版本,例如 Safari 8 和 IE10,需要vendor prefixes。要快速添加所需的所有前缀,请使用Autoprefixer。更多浏览器兼容性详情请见this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2021-03-23
      • 2023-02-21
      • 1970-01-01
      • 2023-02-03
      相关资源
      最近更新 更多