Демо
  • 6,57 КБ
  • HTML, CSS
  • Список
  • Лицензия MIT
HTML
<ul>
    <li class="curved-arrow">Летят по небу журавли</li>
    <li class="cross">На фоне красного пятна.</li>
    <li class="heart">А в созерцании земли</li>
    <li class="star">Нам дарит образы весна.</li>
    <li class="circle-checkmark">Когда шумит листва в саду,</li>
    <li class="checkmark">Подобно нашим сожаленьям</li>
    <li class="diamond">Ветра не знают направленья —</li>
    <li class="plus">С ветрами нужно жить в ладу.</li>
    <li class="line">На свете жил камыш пруда,</li>
    <li class="arrow">Забытый Богом в тишине,</li>
    <li class="triangle">И корни он пускал на дне,</li>
    <li class="square">Чтоб не оставить и следа.</li>
</ul>
CSS
li {
    list-style: none;
    position: relative;
    padding: 0 0 0 20px;
    color: #9c9fa3;
}

li.square:before {
    content: "";
    position: absolute;
    left: 0;
    top: 5px;
    width: 10px;
    height: 10px;
    background-color: rgb(0, 102, 204);
}

li.triangle:before {
    content: "";
    position: absolute;
    left: 0;
    top: 5px;
    width: 0;
    height: 0;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-bottom: 10px solid rgb(0, 102, 204);
}

li.arrow:before {
    content: "";
    position: absolute;
    left: 0;
    top: 6px;
    height: 5px;
    width: 5px;
    border: 1px solid rgb(0, 102, 204);
    border-width: 2px 2px 0 0;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
}

li.line:before {
    content: "";
    position: absolute;
    left: 0;
    top: 9px;
    width: 8px;
    display: block;
    border-top: 2px solid rgb(0, 102, 204);
}

li.plus:before {
    content: "";
    position: absolute;
    background: rgb(0, 102, 204);
    left: 0;
    top: 9px;
    height: 2px;
    width: 8px;
}

li.plus:after {
    content: "";
    position: absolute;
    background: rgb(0, 102, 204);
    left: 3px;
    top: 5px;
    height: 10px;
    width: 2px;
}

li.diamond:before {
    content: "";
    position: absolute;
    left: 0px;
    top: 0px;
    width: 0;
    height: 0;
    border: 5px solid transparent;
    border-bottom-color: rgb(0, 102, 204);
}

li.diamond:after {
    content: "";
    position: absolute;
    left: 0px;
    top: 10px;
    width: 0;
    height: 0;
    border: 5px solid transparent;
    border-top-color: rgb(0, 102, 204);
}

li.checkmark:before {
    content: "";
    position: absolute;
    left: 2px;
    top: 5px;
    width: 3px;
    height: 6px;
    border: solid rgb(0, 102, 204);
    border-width: 0 2px 2px 0;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
}

li.circle-checkmark:before {
    content: "";
    position: absolute;
    left: 0;
    top: 2px;
    border: solid 8px rgb(0, 102, 204);
    -webkit-border-radius: 8px;
    -moz-border-radius: 8px;
    border-radius: 8px;
}

li.circle-checkmark:after {
    content: "";
    position: absolute;
    left: 5px;
    top: 5px;
    width: 3px;
    height: 6px;
    border: solid rgb(22, 26, 34);
    border-width: 0 2px 2px 0;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
}

li.star:before {
    content: "";
    position: absolute;
    left: 0;
    top: 5px;
    background: rgb(0, 102, 204);
    width: 10px;
    height: 10px;
    text-align: center;
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
}

li.star:after {
    content: "";
    position: absolute;
    top: 5px;
    left: 0;
    height: 10px;
    width: 10px;
    background: rgb(0, 102, 204);
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
}

li.heart:before,
li.heart:after {
    content: "";
    position: absolute;
    left: 7px;
    top: 5px;
    width: 7px;
    height: 12px;
    background: rgb(0, 102, 204);
    -webkit-border-radius: 50px 50px 0 0;
    -moz-border-radius: 50px 50px 0 0;
    border-radius: 50px 50px 0 0;
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
    -webkit-transform-origin: 0 100%;
    -moz-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
}

li.heart:after {
    content: "";
    position: absolute;
    top: 5px;
    left: 0;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
    -webkit-transform-origin: 100% 100%;
    -moz-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
}

li.cross:before {
    content: "";
    position: absolute;
    height: 15px;
    border-left: 2px solid rgb(0, 102, 204);
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
    top: 2px;
    left: 5px;
}

li.cross:after {
    content: "";
    position: absolute;
    height: 15px;
    border-left: 2px solid rgb(0, 102, 204);
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
    top: 2px;
    left: 5px;
}

li.curved-arrow:before {
    content: "";
    position: absolute;
    width: 0;
    height: 0;
    left: 4px;
    top: 3px;
    border-top: 9px solid transparent;
    border-right: 9px solid rgb(0, 102, 204);
    -webkit-transform: rotate(10deg);
    -moz-transform: rotate(10deg);
    -o-transform: rotate(10deg);
    transform: rotate(10deg);
}

li.curved-arrow:after {
    content: "";
    position: absolute;
    border: 0 solid transparent;
    border-top: 3px solid rgb(0, 102, 204);
    -webkit-border-radius: 20px 0 0 0;
    -moz-border-radius: 20px 0 0 0;
    border-radius: 20px 0 0 0;
    top: 0;
    left: -5px;
    width: 12px;
    height: 12px;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
}

Давайте разберемся в этом интересном коде, который добавляет изюминку в обычный список с помощью CSS, делая его не просто списком, а настоящей коллекцией иконок. Представьте себе обыденный список, как список покупок на вашем холодильнике. Теперь, вместо скучных точек, вы хотите добавить уникальные иконки для каждого пункта – например, сердечко для любимого лакомства вашего партнера или звездочку для того самого незаменимого снека. Вот что делает этот код, но для веб-страницы.

Сначала у нас есть список элементов (<li> теги), каждый с собственным классом, например heart или star. Это не просто элементы списка; они собираются преобразиться.

Магия происходит в части с CSS (это та самая волшебство стилей). CSS нацелен на каждый элемент списка по его классу и использует псевдоэлементы :before и :after для создания эффектных иконок перед текстом каждого пункта. Это как бы сообщение: «Эй, прежде чем показать этот текст, вставь сюда крутую иконку.» Например, иконка сердца создается путем сочетания двух форм с закругленными вершинами, а иконка звезды получает свои острые углы за счет перекрывающихся квадратов, повернутых под углом. Каждая форма аккуратно расположена и окрашена, чтобы выглядеть именно так, как нужно.

Цвета, формы, даже поворот – все тщательно определено, чтобы превратить каждый элемент списка из обычного в захватывающий внимание. Это идеальный способ выделить важные моменты или просто добавить немного индивидуальности на страницу.

Так что, в следующий раз, когда вы увидите на веб-странице эффектные иконки рядом с текстом, помните, за кулисами действует изощренный CSS, делающий эти списки гораздо более интересными для взгляда!

Меню