我想使用HTML和CSS绘制这样简单的东西:
|_____|_____|_____|_____|
每个垂直条下面有对齐的数字,例如0, 1, 2, 3, 4
等。
我还想以编程方式调整条形之间的空间。有没有我可以效仿的例子?
答案 0 :(得分:16)
以下是小提琴中的一些CSS on-screen rulers :-p可能有更好/更好的方法来设置间距,但我提供了一个循环并调整显着值的简单示例。
答案 1 :(得分:8)
我尝试永远不会使用表格来表示非表格数据,但您可以使用表格来执行此操作:
<table width=100% style='font-family: monospace;'>
<tr style='border-bottom: 1px solid #000;'>
<td>
|
</td><td>
|
</td><td>
|
</td><td>
|
</td><td width=1%>
|
</td>
</tr>
<tr>
<td>
0
</td><td>
1
</td><td>
2
</td><td>
3
</td><td>
4
</td>
</tr>
</table>
答案 2 :(得分:5)
这是一个很好的例子:
<label>0</label>
<label>100</label>
<label>200</label>
...
https://codepen.io/cfenzo/pen/jEGQGm
或其他例子
答案 3 :(得分:1)
静态答案:
<pre>
|____|____|____|____|
0 1 2 3 4
</pre>
为了能够更改它,请使用JavaScript。
答案 4 :(得分:1)
检查一下: http://jsfiddle.net/thirdender/kwcug/
<ul class="ruler"><li>1</li><li>2</li><li>3</li><li>4</li></ul>
<div>
<ul class="ruler" data-items="10"></ul>
</div>
看起来更加花哨,可以轻松定制。
答案 5 :(得分:0)
这是我在标尺中使用的解决方案。 仅HTML和CSS!
注意:
解决方案: 创建一个标尺单元格div,添加标记的背景图像(可以使用线性渐变),为每个标记添加设置百分比位置。在CSS中,此操作只能执行一次,并且如果使用同一图像,则对该文件将只有一个请求,如果使用线性渐变,则意味着完全没有额外的请求。由于您设置了百分比位置,因此您可以根据需要拉伸标尺,它仍然看起来不错。
如果在某些情况下(例如在移动设备屏幕上,或者在拉伸标尺进行放大时),您可能希望在标尺点之间动态创建更多标记。在这种情况下,只需使用javascript为标尺单元分配一个新类(如.big),然后为该类设置不同的标记背景集。他们会切换的很好。
此外,由于我们使用非伪元素-真实div,真实背景-这种标尺的模块化方法使您可以使用javascript动态更改它。
代码:
.comment{color:darkgreen}
.container{
resize:horizontal;
overflow:auto;
width:60%;
min-width:100px;
margin:0px auto;
border:1px solid black;
padding:20px;
}
.ruler{
margin:20px 0px;
background-color:rgb(255, 255, 223);
height:20px;
width:100%;
display:flex;
justify-content:center
}
.ruler-cell{
position:relative;
height:100%;
width:calc(100% - 20px);
border-left:1px solid black;
border-right:1px solid black;
background-repeat:no-repeat;
background-size:
100% 1px,
1px 8px,
1px 8px,
1px 8px,
1px 8px;
background-position:
0% center,
20% center,
40% center,
60% center,
80% center;
background-image:
linear-gradient(gray, gray),
linear-gradient(gray, gray),
linear-gradient(gray, gray),
linear-gradient(gray, gray),
linear-gradient(gray, gray);
}
.ruler-cell span{
position:absolute;
top:-15px;
font-size:12px;
text-align:center;
}
.zero{
left:0;
transform:translateX(-50%);
display:none;
}
.number{
right:0px;
transform:translateX(50%);
}
.ruler-cell:first-child .zero{
display:block;
}
<div class="container">
<p class="comment">#this container is resizeable! Try to resize it!</p>
<div class="ruler">
<div class="ruler-cell">
<span class="zero">0</span>
<span class="number">1</span>
</div>
</div>
</div>
Jsfiddle:https://jsfiddle.net/w423gLuf/