Я бы порекомендовал использовать дочерний комбинатор (>
) для установки display: none
на значках верхнего уровня (ul > li > .fas
), а затемтакже используется специфичность CSS для дополнительного добавления более специфичного селектора для элементов, расположенных ниже по иерархии.
Хотя оба селектора на самом деле нацеленыдочерние значки, поскольку есть более специфический селектор, который снова устанавливает значки как видимые, эти элементы будут отображаться.
Это можно увидеть в следующем:
ul > li > .fas {
display: none;
}
ul li > ul .fas {
display: inline-block;
}
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<link href="https://use.fontawesome.com/releases/v5.0.7/css/all.css" rel="stylesheet"/>
<ul>
<li class="treeview"><i class="fas fa-level-up-alt"></i>aaa</li>
<li class="treeview"><i class="fas fa-level-up-alt"></i>bbb</li>
<li class="treeview"><i class="fas fa-level-up-alt"></i>ccc
<ul>
<li class="treeview"><i class="fas fa-level-up-alt"></i>subccc</li>
</ul>
</li>
<li class="treeview"><i class="fas fa-level-up-alt"></i>ddd
<ul>
<li class="treeview"><i class="fas fa-level-up-alt"></i>subddd</li>
</ul>
</li>
</ul>