html - 使用交替的文本行制作条纹 div
问题描述
我有一个 div,其中包含一些跨度文本。我想让文本条带化以实现类似于表格的内容
tr:nth-child(even) {background-color: #f2f2f2;}
tr:nth-child(odd) {background-color: #cccccc;}
基本上使每一行的背景不同。
#docIndHeader{
width: 300px;
}
<div id="docIndHeader" class="doc" >
<span class="assetType">IndHeader</span>
<span id="IndHeaderID"><span class="fieldName">ID </span>: 83176322</span>
<span id="IndHeaderVERSION"><span class="fieldName">VERSION </span>: 20190907:105916:000</span>
<span id="IndHeaderNAME"><span class="fieldName">NAME </span>: INDEX</span>
<span id="IndHeaderINDEX_STATUS"><span class="fieldName">INDEX_STATUS </span>: A</span>
<span id="IndHeaderCODE_PRIMARY"><span class="fieldName">CODE_PRIMARY </span>: T</span>
</div>
最简单的方法是什么?
解决方案
尝试这个
span.line.odd {
background-color: grey;
}
span.line.even {
background-color: white;
}
span {
display: block;
}
<body >
<div class="stripes">
<span class="line">Some Text<span>Another span</span></span>
<span class="line">Some Text<h2>this is a heading in the middle of the span!</h2></span>
<span class="line">Some Text</span>
<span class="line">Some Text</span>
</div>
<script type="text/javascript">
function stripes() {
var strblock = document.getElementsByClassName("stripes");
for(var i = 0; i < strblock.length; i++){
var lines = strblock[i].getElementsByClassName("line");
for(var j = 0; j < lines.length; j++){
if(j%2 == 0){
lines[j].classList.add("even");
}
else {
lines[j].classList.add("odd");
}
}
}
};
stripes();
</script>
</body>
它甚至可以在同一行中使用多个跨度。只需确保“条纹”div 中没有其他跨度具有该类line
,否则它将被 JS 片段计算在内。CSS 选择器会将其过滤掉,但 JS 需要调整以仅计算跨度。
推荐阅读
- javascript - jquery.trim() 是否已弃用?
- unity3d - 如何让玩家可以访问资产进行改装?
- sql - 如何根据sql中的某些条件连接两个表?
- java - 如何为 netbeans java 添加 jxbrowser 的许可证密钥?
- graph - Gremlin 查询输出到 CSV 文件
- python - 使用 pandas 的泊松过程的 KeyError
- android - 在 Android 中实现语言选择器
- c# - 如何确保从抽象泛型类派生的类将自身用作泛型参数
- c# - 如何使用 powershell 从非提升的 .NET 应用程序预配 UWP 应用程序
- excel - 在 Pandas 中转置数据