使用textarea和标签排列值列表

dre*_*ves 9 html css layout textarea

这里有一些CSS和HTML,可以在数据点列表下面创建一个textarea:

form label {
  width: 140px;
  float: left;
}
form ol li {
  background: #98c8dc;
  list-style: none;
  padding: 5px 10px;
}

<form>
<ol>
<li>
  <label><br/><br/><br/><br/>Recent data</label>
  <ol>
  <li>3 99</li>
  <li>5 98</li>
  <li>15 97</li>
  <li>28 96</li>
  </ol>
</li>
<li>
  <label>New data</label>
  <textarea placeholder="30 95" rows="4"></textarea>
</li>
</ol>
</form>
Run Code Online (Sandbox Code Playgroud)

它呈现如下:

在此输入图像描述

你会怎么推荐我把它排好呢?也就是说,"最近的数据"应该排在"28 96"线上,也许最棘手的是,"30 95",尽管在文本区域,但应排成一行,好像它只是在"28 96"之后的另一行.

Bee*_*Bee 5

垂直对齐在内联元素中不起作用,但在表格中有效(有关vertical-align的更多详细信息).

所以这是一个解决方案:我只是将第一个li中的两个主要元素包装在一个表格行中,并将垂直对齐设置为底部以强制将"最近数据"标签放在底部.(可能有某种方法使用display属性来更改li内联元素?)

您还需要调整的填充ollabelS和table标签让一切都行了.在现实生活中,您可能会使用某种重置css来规范所有这些不同元素的默认样式规则,因此您可能需要进行不同的调整以使所有内容完美排列,但这就是我想出的.

现在一共

现在总共:

<style>
table,tbody,tfoot,thead,tr,th,td {
   margin:0;
   padding:0;
   border:0;
   outline:0;
   font-size:100%;
   vertical-align:baseline;
   background:transparent}
body{line-height:1}
ol,ul{list-style:none}
table {border-spacing: 0px;}
table td{
  vertical-align: bottom;
}

* {
  font-size: 14px;
  font-family: Times New Roman, serif;
} 
form label {
  width: 140px;
  float: left;
} 
form ol li {
  background: #98c8dc;
  list-style: none;
  padding: 5px;
  margin-bottom: 2px;
} 
form ol li:last-child {
  margin-bottom: 0px;
}
form li label{
  padding: 4px 0 4px 0;
} 
</style>

<form>
<ol>
<li>
<table><tr><td>
  <label>Recent data</label>
</td><td>
  <ol>
  <li>3 99</li>
  <li>5 98</li>
  <li>15 97</li>
  <li>28 96</li>
  </ol>
</td>
</tr></table>
</li>
<li>
  <label>New data</label>
  <textarea placeholder="30 95" rows="4"></textarea>
</li>
</ol>
</form>
Run Code Online (Sandbox Code Playgroud)


Ric*_*asi 3

这是 CSS 定位的一个很好的例子。的元素position:absolute相对于其最近定位的父元素进行定位。position:relative这意味着我们可以使用<ol>、 和position:absolute标签将标签锚定到其容器的顶部/左侧。

示例如下: http: //jsfiddle.net/YhQYS/1/

HTML

<form action="." method="post">
    <ol>
        <li class="recent-data">
          <strong>Recent data</strong>
          <ol>
              <li>3 99</li>
              <li>5 98</li>
              <li>15 97</li>
              <li>28 96</li>
          </ol>
        </li>
        <li class="new-data">
          <label>New data</label>
          <textarea placeholder="30 95" rows="4"></textarea>
        </li>
    </ol>
</form>
Run Code Online (Sandbox Code Playgroud)

CSS

form > ol {
    background: #98c8dc;
    font-family: serif;
}
.recent-data > ol,
.new-data > ol {
    list-style: none;
    padding: 5px 10px 5px 0;
    line-height:20px;
}
.recent-data li { padding-left:5px; }
.recent-data,
.new-data {
    position:relative;
    padding-left:140px;
}
.recent-data strong,
.new-data label {
    position:absolute;
    left:10px;
    line-height:20px;
}
.recent-data strong { bottom:5px; }
.new-data label { top:5px; }
.new-data textarea {
    font-family:serif;
    font-size:100%;
    padding:4px;
}
Run Code Online (Sandbox Code Playgroud)

这很容易推理,并且跨浏览器可靠。请注意,您不应使用<label>没有相应表单控件的控件。


这些东西看起来像表格数据......这是您的选择,我们没有足够的上下文来知道什么标记更合适。因此,这是一种使用表的语义上更正确的方法,rowspan并且vertical-align

HTML

<form action="." method="post">
    <table id="results">
        <tbody>
            <tr>
                <th rowspan="4" scope="row" class="recent-label">Recent data</th>
                <td>2</td>
                <td>47</td>
            </tr>
            <tr>
                <td>3</td>
                <td>99</td>
            </tr>
            <tr>
                <td>5</td>
                <td>98</td>
            </tr>
            <tr>
                <td>5</td>
                <td>98</td>
            </tr>
            <tr>
                <th rowspan="1" scope="row" class="new-label">New data</th>
                <td colspan="2" class="new-data">
                    <textarea>23</textarea>
                </td>
            </tr>
        </tbody>
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

CSS

form {
    background: #98c8dc;
    font-family: serif;
}
#results th,
#results td {
    padding:3px 5px;
}

#results .recent-label {
    vertical-align:bottom;
}
#results .new-label {
    vertical-align:top;
}
#results .new-data {
    padding-left:0px;
}
#results textarea {
    padding:4px; // +1px border
    font-size:100%;
    font-family:serif;
}
Run Code Online (Sandbox Code Playgroud)

示例位于http://jsfiddle.net/quqf8/1/