Я отображаю данные в div и хочу посмотреть, смогу ли я использовать CSS для создания трех строк между четырьмя столбцами. Я использую один div, чтобы данные отображались правильно. Хотя было бы неплохо, если бы я использовал отдельные столбцы (тогда я бы сделал border-right: 2px solid black для каждого столбца), мне нравится, как расширяется div по мере добавления новых элементов, поэтому я хочу придерживаться одного div.
Я включил скриншот, который должен лучше объяснить, чего я пытаюсь достичь.
<div class = "all-training">
<h2>All Training Courses</h2>
<div class = "row">
<div class = "col">
<ul class = "all-courses-ul"></ul>
</div>
</div>
</div>
.all-courses-ul {
display: block;
}
.all-courses-ul li {
display: inline-block;
font-size: 15px;
list-style-type: none;
padding-bottom: 30px;
text-align: left;
width: 25%;
}
import testjson from './test.json';
function loadAllCourses() {
let jsonRes = testjson.d.results.map(function(val) {
return {
"Title": val.Title
}
});
let allTitles = jsonRes;
for (var i = 0; i < allTitles.length; i++) {
$(".all-courses-ul").append("<li>" + allTitles[i].Title + "</li>")
};
} // ------------------ loadAllCourses
loadAllCourses();






Вы можете попробовать следующее, возможно:
.all-courses-ul li {
border-right: 2px solid #000;
}
.all-courses-ul:last-child li {
border-right: 0;
}
Не уверен, что ты это имеешь в виду.
Как фанатик flexbox, я предлагаю использовать его для вашего макета:
h2 {
text-align: center;
}
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.main-content,
.new-content {
display: flex;
}
.main-content{
flex-grow: 1; /* Take the most possible vertical space */
}
.container .col {
flex-basis: 25%;
}
.main-content .col:not(:last-child) {
border-right: 2px solid black;
}
html, body {
margin: 0;
}<div class = "container">
<h2>All Training Courses</h2>
<div class = "main-content">
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
</div>
<div class = "new-content">
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
<div class = "col">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
</div>
</div>Я бы использовал Flexbox, поверьте мне, но мой проект в основном будет использоваться с IE, который не полностью с ним совместим.
@Bodrov Я думаю, ты мог бы хотя бы сократить слова до .all-courses-ul:not(:last-child) li { border-right: 2px solid black; }
Учитывая, что это выглядит так, как будто вы, возможно, визуализируете табличные данные, имеет ли смысл использовать
<table>? Или вы хотите использовать CSSdisplay: table?