powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос к организации простейшего TreeView
5 сообщений из 5, страница 1 из 1
Вопрос к организации простейшего TreeView
    #39820960
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понадобилось дерево TreeView. В поиске набрёл на очень простую реализацию, правда, потом потерял сайт и пока найти не могу.
Пример дерева показан на рисунке (см. ниже). Основой как обычно, является список <ul>, а узлы реализованы тегом input. Вот код:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    <ul>
        <li>
            <input type="checkbox" id="chk1"><label for="chk1">Здесь подпункты</label>
            <ul>
                <li>
                    <input type="checkbox" id="chk2"/><label for="chk2">Тоже можно раскрыть</label>
                    <ul>
                        <li>Пункт 1_1</li>
                        <li>Пункт 1_2</li>
                    </ul>
                </li>
                <li>Не раскрывается</li>
            </ul>
        </li>
        <li>Здесь нет подпунктов</li>
    </ul>



Ничего хитрого!
Вот CSS
Код: css
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
    <style type="text/css">
        li, ul {
            list-style: none;
            margin: 0;
            padding: 0;
            overflow: hidden;
        }

            li ul {
                margin-left: 16px;
                height: 0px;
            }

            li input {
                display: none;
            }

                li input:checked ~ ul {
                    height: auto;
                }

        /*Это квадратик с плюсиком +, когда нижележащий список свёрнут*/
        input + label:before {
            content: "";
            display: inline-block;
            height: 16px;
            width: 16px;
            background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAIAAAAmzuBxAAAACXBIWXMAAAsSAAALEgHS3X78AAAAkElEQVQYlXWOvRWDQAyDv/DYK2wQSro8OkpGuRFcUjJCRmEE0TldCpsjPy9qzj7Jki62Pgh4vnqbbbEWuN+use/PlArwHccWGg780psENGFY6W4YgxZIAM339WmT3m397YYxxn6aASslFfVotYLTT3NwcuTKlFpNR2sdEak4acdKeafPlE2SZ7sw/1BEtX94AXYTVmyR94mPAAAAAElFTkSuQmCC) no-repeat 0px 5px;
        }

        /* Это минус в квадратике -, когда нижележащий список раскрыт */
        input:checked + label:before {
            background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAIAAAAmzuBxAAAACXBIWXMAAAsSAAALEgHS3X78AAAAeklEQVQYlX2PsRGDMAxFX3zeK9mAlHRcupSM4hFUUjJCRpI70VHIJr7D8BtJ977+SQ9Zf7isVG16WSQC0/D0OW/FqoBlDFkIVJ2xAhA8sI/NHbcYiFrPfI0fGklKagDx2F4ltdtaM0J9L3dxcVxi+zv62E+MwPs7c60dClRP6iug7wUAAAAASUVORK5CYII=) no-repeat 0px 5px;
        }
    </style>



Длиннющие url для background задают квадратики с плюсиком и минусом, когда нижележащие узлы свёрнуты или развёрнуты. Никакие библиотеки jQuery не подключены - страница работает без них!!!

Всё работает замечательно! Но вот проблема - хочу узнать свёрнут или развёрнут узел, то есть что стоит в квадратике + или -. Но как это сделать не понимаю.
Смущает в стилях запись:
input:checked + label:before { ... }
Вроде бы нет такого псевдокласса :checked ! Такое имеется в jQuery, но здесь jQuery отсутствует, а без этой конструкции работа нарушается.
Как быть?
С уважением ВВГ
...
Рейтинг: 0 / 0
Вопрос к организации простейшего TreeView
    #39821008
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос к организации простейшего TreeView
    #39821042
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGer,
А можно ещё проще, без псевдоэлемента :before  
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
<!DOCTYPE html>
<html>
<head>
<title>Дерево без javascript</title>
<style>
* {font:14px Arial;}
input {display:none;}
li, ul{box-sizing:border-box; list-style:none; margin:0; padding:0; overflow:hidden;}
li {padding-left:16px;}
li ul{height:0;}
li label {
  height:20px;
  line-height:20px;
  padding-left:16px;
  cursor:pointer;
  background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAIAAAAmzuBxAAAACXBIWXMAAAsSAAALEgHS3X78AAAAkElEQVQYlXWOvRWDQAyDv/DYK2wQSro8OkpGuRFcUjJCRmEE0TldCpsjPy9qzj7Jki62Pgh4vnqbbbEWuN+use/PlArwHccWGg780psENGFY6W4YgxZIAM339WmT3m397YYxxn6aASslFfVotYLTT3NwcuTKlFpNR2sdEak4acdKeafPlE2SZ7sw/1BEtX94AXYTVmyR94mPAAAAAElFTkSuQmCC) no-repeat 2px 2px;
}
li input:checked ~ ul {height:auto;}
li input:checked + label{
  background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAIAAAAmzuBxAAAACXBIWXMAAAsSAAALEgHS3X78AAAAeklEQVQYlX2PsRGDMAxFX3zeK9mAlHRcupSM4hFUUjJCRpI70VHIJr7D8BtJ977+SQ9Zf7isVG16WSQC0/D0OW/FqoBlDFkIVJ2xAhA8sI/NHbcYiFrPfI0fGklKagDx2F4ltdtaM0J9L3dxcVxi+zv62E+MwPs7c60dClRP6iug7wUAAAAASUVORK5CYII=) no-repeat 2px 2px;
}
</style>
</head>
<body>
<p style="color:#444;">Дерево без javascript. Раскрыть уровень можно не только по знаку плюсика, но и просто щелкнув по тексту. </p>
<ul>
  <li>
    <input type="checkbox" id="chk1_1"><label for="chk1_1">Малкольм Мерлин</label>
    <ul>
      <li>
        <input type="checkbox" id="chk1_1_1"><label for="chk1_1_1">Ты подвел этот город</label>
        <ul>
          <li>
            <input type="checkbox" id="chk1_1_1_1"><label for="chk1_1_1_1">И как это я умудрился?</label>
            <ul>
              <li>Предприятие.</li>
              <li>Я его остановлю.</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li>
    <input type="checkbox" id="chk2_1"><label for="chk2_1">Кто же убил Сару Лэнс?</label>
    <ul>
      <li>
        <input type="checkbox" id="chk2_1_1"><label for="chk2_1_1">Варианты зрителей</label>
        <ul>
          <li>Тея Куин</li>
          <li>Малкольм Мерлин</li>
          <li>Слейд Уилсон</li>
          <li>По приказу А.Р.Г.У.С.А</li>
        </ul>
      </li>
      <li>
        <input type="checkbox" id="chk2_2_1"><label for="chk2_2_1">Что нам показали в 9 серии</label>
        <ul>
          <li>Тея Куин, под влиянием Малкольма</li>
          <li>Но по логике очень не сходится</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
</body>
</html>

...
Рейтинг: 0 / 0
Вопрос к организации простейшего TreeView
    #39821087
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQLPowerUser,

Прямо замечательно, спасибо большое!
...
Рейтинг: 0 / 0
Вопрос к организации простейшего TreeView
    #39821808
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<!doctype html>
<html lang="en">
<head>
	<meta charset="utf-8"/>
	<title>Details example</title>
	<style>details div details {margin-left: 2em;}</style>
</head
<body>
<details>
	<summary>Animals</summary>
	<div>
		<details>
			<summary>Dogs</summary>
			<ul>
				<li>Bobik</li>
				<li>Juchka</li>
			</ul>
		</details>
		<details>
			<summary>Cats</summary>
			<ul>
				<li>Vaska</li>
				<li>Tishka</li>
			</ul>
		</details>
	</div>
</details>
</body>
</html>
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Вопрос к организации простейшего TreeView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]