Охват содержимого без дополнительного тега элемента

Я пытаюсь создать значки плюс и минус, используя промежутки для моих аккордеонов. Мне удалось украсить промежуток в круг, однако, не ставя <p>+</p> внутри <span class="accordian-icon"></span> Как я могу поставить "+" внутри диапазона, используя правило содержимого CSS?

HTML

<div class="accordian-head">
   <h3><a href="#">Normal text</a></h3><span class="accordian-icon"></span>
</div>

CSS

.accordian-container .accordian-head span.accordian-icon{
  content:  "+";    
  display: block;
  width: 30px;
  height: 30px;
  float: right;
  background: white;
  -webkit-border-radius: 30px;
  -moz-border-radius: 30px;
  border-radius: 30px;
  margin:10px;
 }

2 ответа

Решение

Как насчет этой скрипки (в качестве примера того, как это можно сделать, есть несколько подходов).

Важно отметить, что content свойство может быть использовано только в сочетании с :after или же :before псевдоэлементы.

CSS

.accordian-icon{
    display:inline-block;
    position:relative;
    border:1px solid blue;
    border-radius:99px;
    background:blue;
    height:20px;
    width:20px;
    position:relative;
}
.accordian-icon:after{
    color:white;
    content:'+';
    position:relative;
    margin-left:5px;
}

Вы можете сделать это с помощью &:after/&:before и позиционировать их как абсолютные значения в относительном контейнере (в этом примере span).

Вот скрипка с простым предварительным просмотром того, что я имею в виду.

HTML<span class="plus"></span>

CSS

.plus {
    width: 200px;
    height: 60px;
    background-color: red;
    display: inline-block;

    position: relative;
}

.plus:after {
    content: '+';
    color: #fff;
    font-family: arial, sans-serif;
    font-size: 16px;
    position: absolute;
    right: 21px;
    top: 50%;
    margin-top: -8px;
}
Другие вопросы по тегам