html - 对齐字段集中的元素

标签 html css

我正在尝试对齐标签和输入的组合。当前使用 fieldset > table > tr > td 结构。我在网上读到这通常是不好的做法,但是,我很难使用 CSS 来完成我需要的外观。

这是一个示例:

td.right {
  text-align: right;
}

fieldset {
  display: block;
  margin-left: 2px;
  margin-right: 2px;
  padding-top: 0.35em;
  padding-bottom: 0.625em;
  padding-left: 0.75em;
  padding-right: 0.75em;
  border: 2px groove;
}
<fieldset>
  <table>
    <tr>
      <td class="right">Date of Call:</td>
      <td><input class="datepicker2" name="callDate"></td>
      <td class="right">Caller code Number:</td>
      <td><input class="CodeMaker" name="callerCodeNum"></td>
      <td class="right">What is the jurisdiction?</td>
      <td><input type="text" name="jurisdiction"></td>
    </tr>
    <tr>
      <td class="right">Date of Offense:</td>
      <td><input class="datepicker2" name="crimeDate"></td>
      <td class="right">Time of Offense:</td>
      <td><input class="timePicker?" name="crimeTime"></td>
      <td class="right">Number:</td>
    </tr>
  </table>
</fieldset>

这可以很好地呈现表格格式(第一行有 3 个标签/输入组合,第二行有 3 个标签/输入组合)。基本上有 3 列。

如有任何意见,我们将不胜感激。

最佳答案

您可以使用具有 display 属性和值的 CSS 复制表格 table table-row table-cell 等等

使用表格进行布局是一种不好的做法,原因有很多。快速搜索将返回数十篇关于此问题的文章。

我认为主要原因是:表格布局不符合语义;如果您不显示表格数据,请不要使用表格。表格布局不可访问——使用屏幕阅读器的用户会不高兴。一旦您习惯了使用 CSS 为您的布局提供样式,您会发现它更易于维护。

fieldset {
  display: block;
  margin-left: 2px;
  margin-right: 2px;
  padding-top: 0.35em;
  padding-bottom: 0.625em;
  padding-left: 0.75em;
  padding-right: 0.75em;
  border: 2px groove;
}

.table {
  display: table;
}

.tr {
  display: table-row;
}

.td {
  display: table-cell;
  vertical-align: top;
}

.td.right {
  text-align: right;
}
<fieldset class="table">
  <div class="tr">
    <div class="td right">Date of Call:</div>
    <div class="td"><input class="datepicker2" name="callDate"></div>
    <div class="td right">Caller code Number:</div>
    <div class="td"><input class="CodeMaker" name="callerCodeNum"></div>
    <div class="td right">What is the jurisdiction?</div>
    <div class="td"><input type="text" name="jurisdiction"></div>
  </div>
  <div class="tr">
    <div class="td right">Date of Offense:</div>
    <div class="td"><input class="datepicker2" name="crimeDate"></div>
    <div class="td right">Time of Offense:</div>
    <div class="td"><input class="timePicker?" name="crimeTime"></div>
    <div class="td right">Number:</div>
  </div>
  <div class="tr">
    <div class="td right">Date of Call:</div>
    <div class="td"><textarea rows="5" cols="15"></textarea></div>
    <div class="td right">Caller code Number:</div>
    <div class="td"><textarea rows="5" cols="15"></textarea></div>
    <div class="td right">What is the jurisdiction?</div>
    <div class="td"><textarea rows="5" cols="15"></textarea></div>
  </div>
</fieldset>

关于html - 对齐字段集中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46165219/

相关文章:

javascript - Jquery 对象到字符串并返回到对象

css - 一个元素与内容对齐的程式化导航栏

css - Chrome 调整大小使子元素在某些缩放级别上太大

html - 如何让我的按钮保持在图像 slider 下方的中间?

html - 图像显示在边缘

HTML/CSS - 小盒子中的大盒子

java - 不确定使用 Spring 加载 SELECT 对象的正确方法

html - 单击单选按钮时如何突出显示标签?

html - 为什么 top-margin 会压低一个以上的 div?

javascript - Bootstrap 列垂直对齐而不是水平对齐