Ordep81
Ordep81

Reputation: 1107

How do you add bullets without using a list?

Havent touched html/css in years so I need some help. I have a nested list, and want to style the outer list (#todo), and just have 'normal' bullets on the inside list (#task). Problem is when I style the outer list it automatically styles the inside list as well. As a rigged fix, i thought of removing the li tags from and just making them <p> and somehow add a bullet to the front of them. How do you add bullets to the front of <p> tag?

#parent .todo ul li:before{
    content: "";
    position: absolute;
    top: 5px;
    left: -25px;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    border: 2px solid #0bb5f4;
}



#parent .todo ul li:after{
    content: "";
    position: absolute;
    top: 14px;
    left: -21px;
    width: 2px;
    height: 75px;
    background: #0bb5f4
}

.task{
    padding-left: 25px;
}
<div class="todo">
    <div class="title">
        <p class="bold">Title1</p>
    </div>
                        
    <ul>
        <li>
            <div class="date">today</div>
            <div class="info">
                <p class="semi-bold">Name</p>
                <p class="description"><em>location</em></p>
                <div class="task">
                     <p>task1</p>
                     <p>task2</p>
                     <p>task3</p>
                </div>
            </div>
        </li>
                            
        <li>
            <div class="date">yesterday</div>
            <div class="info">
                <p class="semi-bold">Name2</p>
                <p class="description"><em>location2</em></p>
                <div class="task">
                    <p>item1</p>
                    <p>item2</p>
                    <p>item3</p>
                </div>
            </div>
        </li>
    </ul>
</div>

Upvotes: 1

Views: 5261

Answers (1)

Yousaf
Yousaf

Reputation: 29282

Add a class on the li elements of the outer list and apply the styles you want to apply on the outer list, on this class. This way, inner list's li elements won't be styled.

.outer-li {
  position: relative;
  list-style: none;
  margin: 10px 0 0 0;
}

.outer-li::before {
  content: "";
  position: absolute;
  top: 5px;
  left: -25px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  border: 2px solid #0bb5f4;
}

.outer-li::after {
  content: "";
  position: absolute;
  top: 14px;
  left: -21px;
  width: 2px;
  height: 75px;
  background: #0bb5f4
}
<div class="todo">
  <div class="title">
    <p class="bold">Title1</p>
  </div>

  <ul class="outer">
    <li class="outer-li">
      <div class="date">today</div>
      <div class="info">
        <p class="semi-bold">Name</p>
        <p class="description"><em>location</em></p>
        <ul class="task">
          <li>task1</li>
          <li>task2</li>
          <li>task3</li>
        </ul>
      </div>
    </li>

    <li class="outer-li">
      <div class="date">yesterday</div>
      <div class="info">
        <p class="semi-bold">Name2</p>
        <p class="description"><em>location2</em></p>
        <ul class="task">
          <li>task1</li>
          <li>task2</li>
          <li>task3</li>
        </ul>
      </div>
    </li>
  </ul>
</div>

Alternatively, you could use ::before pseudo selector.

li {
  position: relative;
  list-style: none;
  margin: 10px 0 0 0;
}

li::before {
  content: "";
  position: absolute;
  top: 5px;
  left: -25px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  border: 2px solid #0bb5f4;
}

li::after {
  content: "";
  position: absolute;
  top: 14px;
  left: -21px;
  width: 2px;
  height: 75px;
  background: #0bb5f4
}

.task {
  padding-left: 25px;
}

.task p {
  position: relative;
}

.task p::before {
  content: '';
  position: absolute;
  background: #222;
  width: 5px;
  height: 5px;
  left: -13px;
  top: 50%;
  transform: translateY(-50%);
  border-radius: 50%;
}
<div class="todo">
  <div class="title">
    <p class="bold">Title1</p>
  </div>

  <ul>
    <li>
      <div class="date">today</div>
      <div class="info">
        <p class="semi-bold">Name</p>
        <p class="description"><em>location</em></p>
        <div class="task">
          <p>task1</p>
          <p>task2</p>
          <p>task3</p>
        </div>
      </div>
    </li>
  </ul>
</div>

Upvotes: 4

Related Questions