CSS - Задание границы для li - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь дать границу своему списку.Я использую li для этого.Я создал что-то, и я приложил это выше, вы это проверяетеЯ сделал это, используя дополнительные div.Но мне нужно удалить все лишние элементы div и указать границы таким образом, используя только css.Можем ли мы сделать это?

.counter {
  position: relative;
  max-width: 600px;
}

.counter ul {
  display: inline-block;
  max-width: 600px;
  margin: 0 auto;
  width: 100%;
}

.counter li {
  float: left;
  width: 33.33%;
  height: 100px;
}

.counter li .c-grid {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  align-content: stretch;
  height: 100%;
  width: 100%;
}

.line-1 {
  height: 1px;
  width: 100%;
  background: #000;
  position: absolute;
  left: 0;
  right: 0;
  top: 65%;
}

.line-2 {
  height: 1px;
  width: 100%;
  background: #000;
  position: absolute;
  left: 0;
  right: 0;
  top: 35%;
}

.line-3 {
  height: 100%;
  width: 1px;
  background: #000;
  position: absolute;
  right: 35%;
  top: 0;
  bottom: 0;
}

.line-4 {
  height: 100%;
  width: 1px;
  background: #000;
  position: absolute;
  right: 65%;
  top: 0;
  bottom: 0;
}
<div class="counter">
  <div class="line-1"></div>
  <div class="line-2"></div>
  <div class="line-3"></div>
  <div class="line-4"></div>
  <ul>
    <li>
      <div class="c-grid"> 1 </div>
    </li>
    <li>
      <div class="c-grid"> 2 </div>
    </li>
    <li>
      <div class="c-grid"> 3 </div>
    </li>
    <li>
      <div class="c-grid"> 4 </div>
    </li>
    <li>
      <div class="c-grid"> 5 </div>
    </li>
    <li>
      <div class="c-grid"> 6 </div>
    </li>
    <li>
      <div class="c-grid"> 7 </div>
    </li>
    <li>
      <div class="c-grid"> 8 </div>
    </li>
    <li>
      <div class="c-grid"> 9 </div>
    </li>
  </ul>
</div>

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Здесь я удалил четыре div строки и использовал li рамку, вы можете добавить столько же строк, сколько будет в ней, и она будет продолжать следовать. Также добавлено box-sizing: border-box;, чтобы избежать разрушения сетки

* {
  box-sizing: border-box;
}
.counter {
  position: relative;
  max-width: 600px;
}

.counter ul {
  display: inline-block;
  max-width: 600px;
  margin: 0 auto;
  width: 100%;
  padding: 0;
}

.counter li {
  float: left;
  width: 33.33333%;
  height: 100px;
}

.counter li .c-grid {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  align-content: stretch;
  height: 100%;
  width: 100%;
}

li {
  border-right: 1px solid #000;
  border-bottom: 1px solid #000;
}

li:nth-child(3n) {
  border-right: none;
}

li:nth-last-child(-n+3),
li:nth-last-child(-n+2),
li:last-child {
  border-bottom: none;
}
<div class="counter">
  <ul>
    <li>
      <div class="c-grid"> 1 </div>
    </li>
    <li>
      <div class="c-grid"> 2 </div>
    </li>
    <li>
      <div class="c-grid"> 3 </div>
    </li>
    <li>
      <div class="c-grid"> 4 </div>
    </li>
    <li>
      <div class="c-grid"> 5 </div>
    </li>
    <li>
      <div class="c-grid"> 6 </div>
    </li>
    <li>
      <div class="c-grid"> 7 </div>
    </li>
    <li>
      <div class="c-grid"> 8 </div>
    </li>
    <li>
      <div class="c-grid"> 9 </div>
    </li>
  </ul>
</div>
0 голосов
/ 30 января 2019

Самый простой подход - использовать CSS Grid с некоторыми nth-child стилями границ.Используя этот подход, мы можем удалить:

  • ненужные <div> s
  • float
  • избыточные стили

html, body, ul {
  margin: 0;
  padding: 0;
}

ul {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

ul > li {
  padding: 20px 15px;
  text-align: center;
}

/* First 6 items */
ul > li:nth-child(-n + 6)  {
  border-bottom: 1px solid black;
}

/* Every 3rd item, starting from the 2nd item */
ul > li:nth-child(3n + 2) {
  border-left: 1px solid black;
  border-right: 1px solid black;  
}
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
</ul>

enter image description here

https://jsfiddle.net/2hg9zr4q/3/

0 голосов
/ 30 января 2019

Добавить list-style-position:inside;

.borderlist {
list-style-position:inside;
border: 1px solid black;

}

...