Bodrov
Bodrov

Reputation: 867

Is it possible to draw lines within this div?

I'm rendering data into a div and I want to see if I can use CSS to create three lines between the four columns. I'm using a single div in order to get the data to display properly. While it would be nice if I was using separate columns (then I'd do border-right: 2px solid black to each col), I like how the div expands as more items are added so I want to stick with a single div.

I've included a screencap that should better explain what I'm trying to achieve.

HTML snippet:

<div class="all-training">

    <h2>All Training Courses</h2>

    <div class="row">
        <div class="col">
          <ul class="all-courses-ul"></ul> 
        </div>
    </div>

</div>

CSS snippet:

.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%;
}

JS snippet:

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();

Upvotes: 0

Views: 67

Answers (2)

Andy Hoffman
Andy Hoffman

Reputation: 19119

As a flexbox fanatic, I'm going to suggest using it for your layout:

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>

Upvotes: 0

ilkovs
ilkovs

Reputation: 446

You can try the following maybe:

    .all-courses-ul li {
      border-right: 2px solid #000;
}

.all-courses-ul:last-child li {
     border-right: 0;
}

Not sure if that's what you mean.

Upvotes: 1

Related Questions