Изменить контент тега при определенных условиях /checked //дерево css

какова последовательность этих обращений

/*див, затем еще див и на том же уровне список (который меняет дисплей на блок если,,,) 
потом плюс див див див, который ховер (справа условия?)*/

.div.demo-list-hide div ul.hide-list+div.list-item div div.icon:hover {
  display: block;
}

.hide-list {
  display: none;
}

.icon:hover {
  background-color: green;
}
<div class="demo-list-hide">
  <div class="list-item">
    <div class="header-list-items">
      текст и подсписок
    </div>
    <div class="icon">
      иконка
    </div>
  </div>
  <ul class="hide-list">
    <li>a</li>
    <li>b</li>
    <li>c</li>
  </ul>
</div>

Как нужно обращаться к элементам при помощи определенных условий, "если кнопка нажата - контент меняется"

.list div.under-list-visible ul {
  display: none;
}

.list div.under-list-visible>input:checked+label+ul {
  display: block;
  margin-left: 2em;
}

ul {
  list-style: none;
}

.span-under-list2 {
  position: relative;
  content: "";
  display: inline-block;
  width: 0.4em;
  height: 0.4em;
  border-right: 0.2em solid black;
  border-top: 0.2em solid black;
  transform: rotate(45deg);
  margin-right: 0.5em;
}


/* тут я пытаюсь обратиться к стрелке, чтобы изменить её направление, 
мне надо будет её повернуть, чтобы она смотрела вниз, 
в качестве теста я просто меняю ее цвет, 
но видимо порядок обращения к элементам нарушен, не понимаю как это работает */

.list div.under-list-visible>input:checked+label+ul+.span-under-list2 {
  border-right: 0.2em solid red;
  border-top: 0.2em solid red;
}
<ul class="list">
  <li>
    <div class="under-list-visible">
      <input type="checkbox" id="under-list2" style="display:none;" />

      <label for="under-list2">
    <span class="span-under-list2"></span>
     1 (подсписок)</label>

      <ul class="hide-list">
        <li>а</li>
        <li>б</li>
        <li>в</li>
      </ul>
    </div>
  </li>
</ul>


Ответы (1 шт):

Автор решения: Сергей В.

Селекторы! Срочно учить! Я про самый базовый селектор, в виде пробела (комбинатор потомков) )) Ты выбрал label, дальше пробелом выбираем span. Верстка мудреная, это можно сделать чище по коду, безо всякого спана, ну да ладно...

.list div.under-list-visible ul {
  display: none;
}

.list div.under-list-visible>input:checked+label+ul {
  display: block;
  margin-left: 2em;
}

ul {
  list-style: none;
}

.span-under-list2 {
  position: relative;
  content: "";
  display: inline-block;
  width: 0.4em;
  height: 0.4em;
  border-right: 0.2em solid black;
  border-top: 0.2em solid black;
  transform: rotate(45deg);
  margin-right: 0.5em;
}


/* тут я пытаюсь обратиться к стрелке, чтобы изменить её направление, 
мне надо будет её повернуть, чтобы она смотрела вниз, 
в качестве теста я просто меняю ее цвет, 
но видимо порядок обращения к элементам нарушен, не понимаю как это работает */

.list div.under-list-visible>input:checked + label .span-under-list2 {
  border-right: 0.2em solid red;
  border-top: 0.2em solid red;
}
<ul class="list">
  <li>
    <div class="under-list-visible">
      <input type="checkbox" id="under-list2" style="display:none;" />

      <label for="under-list2">
    <span class="span-under-list2"></span>
     1 (подсписок)</label>

      <ul class="hide-list">
        <li>а</li>
        <li>б</li>
        <li>в</li>
      </ul>
    </div>
  </li>
</ul>

→ Ссылка