Есть дерево такого типа
.tree {
float:left;
width: 200px;
background-color: #eaeaff;
}
.level {
margin-left: 15px;
}
.value {
font-weight: bold;
}
<div class="tree">
<div class="level">
<div class="node">
<span class="name">Name 1</span>
<span class="value">Value</span>
</div>
<div class="level">
<div class="node">
<span class="name">Name 1.1</span>
<span class="value">Value</span>
</div>
<div class="level">
<div class="node">
<span class="name">Name 1.1.1</span>
<span class="value">Value</span>
</div>
<div class="level">
<div class="node">
<span class="name">Long long long name</span>
<span class="value">Value</span>
</div>
</div>
</div>
<div class="level">
<div class="node">
<span class="name">Name 1.1.2</span>
<span class="value">Value</span>
</div>
<div class="level">
<div class="node">
<span class="name">Long long long name</span>
<span class="value">Value</span>
</div>
</div>
</div>
</div>
</div>
</div>
Я хочу, чтобы в дереве все <span class="value">
отображались в столбик справа, а длинные <span class="name">
переносились на несколько строк.
Т.е. хочется вот так
Name 1 Value
Name 1.1 Value
Name 1.1.1 Value
Long long long Value
name
Name 1.1.2 Value
Long long long Value
name
При этом разметкой и стилями дерева я не управляю и мне они неизвестны.
Я могу модифицировать только класс tree
и стили и наполнение элементов <div class="node">
. Собственно эти элементы я создаю сам. А все дерево - сторонняя библиотека
Update
@Vladimir Rodichev подсказал решение, но к сожалению justify-content: space-between;
не помогает. Т.к., как оказалось, библиотека вставляет блоки в узлы с display: inline-block;
. Если переопределить у себя
.anchor {
display: inline;
}
то плывет отрисовка узлов
Update 2
Т.к. все советы не работают для моей задачи, то привожу конкретную задачу.
Дерево отрисовывается при помощи библиотеки jstree
Эта библиотека добавляет свои узлы со своими стилями
jQuery(function($) {
$("#tree").jstree();
$("#tree").jstree("open_all");
});
.tree {
float: left;
width: 250px;
background-color: #eaeaff;
}
.node {
display: inline;
}
.value {
font-weight: bold;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" />
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.0.js'></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.2/jstree.min.js"></script>
<div id="tree" class="tree">
<ul>
<li>
<div class="node">
<span class="name">Name 1</span>
<span class="value">Value</span>
</div>
<ul>
<li>
<div class="node">
<span class="name">Name 1.1</span>
<span class="value">Value</span>
</div>
<ul>
<li>
<div class="node">
<span class="name">Name 1.1.1</span>
<span class="value">Value</span>
</div>
<ul>
<li>
<div class="node">
<span class="name">Long long long name</span>
<span class="value">Value</span>
</div>
</li>
</ul>
</li>
<li>
<div class="node">
<span class="name">Name 1.1.1</span>
<span class="value">Value</span>
</div>
<ul>
<li>
<div class="node">
<span class="name">Long long long name</span>
<span class="value">Value</span>
</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
Или полностью рантайм
jQuery(function($) {
const data = {
text: '<div class="node"><span class="name">Name 1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name 1.1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name 1.1.1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name Long Long Name</span><span class="value">Value</span></div>',
}, {
text: '<div class="node"><span class="name">Name 1.2.1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name Long Long Name</span><span class="value">Value</span></div>',
}]
}]
}]
}]
};
$("#tree").on("load_node.jstree", function() {
$("#tree").jstree("open_all");
}).jstree({
core: {
data: data
}
});
});
.tree {
float: left;
width: 250px;
background-color: #eaeaff;
}
.node {
display: inline;
}
.value {
font-weight: bold;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" />
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.0.js'></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.2/jstree.min.js"></script>
<div id="tree" class="tree"></div>
Вариант 2:
jQuery(function($) {
const data = {
text: '<div class="node"><span class="name">Name 1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name 1.1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name 1.1.1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name Long Long Name</span><span class="value">Value</span></div>',
}, {
text: '<div class="node"><span class="name">Name 1.2.1</span><span class="value">Value</span></div>',
children: [{
text: '<div class="node"><span class="name">Name Long Long Name</span><span class="value">Value</span></div>',
}]
}]
}]
}]
};
$("#tree").on("load_node.jstree", function() {
$("#tree").jstree("open_all");
}).jstree({
core: {
data: data
}
});
});
.tree {
float: left;
width: 250px;
background-color: #eaeaff;
}
.node {
display: inline;
}
.value {
font-weight: bold;
}
.name {
white-space: normal;
}
.node {
display: inline-flex;
justify-content: space-between;
width: 100%;
/* width: calc(100% - 51px); */
}
a.jstree-anchor {
width: calc(100% - 24px);
height: auto !important;
/* width: 100%; */
white-space: normal;
display: inline-flex;
box-sizing: border-box;
}
.jstree-default .jstree-hovered {
background: #90caf9 !important;
}
.jstree-default .jstree-clicked {
background: #2196f3 !important;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" />
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.0.js'></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.2/jstree.min.js"></script>
<div id="tree" class="tree"></div>
Добавь в CSS:
.node {
display: flex;
justify-content: space-between;
}
.anchor {
display: inline-block;
width: 100%;
}
Или принудительно меняем свойство:
.anchor {
display: block !important;
}
.tree {
float: left;
width: 200px;
background-color: #eaeaff;
}
.level {
margin-left: 15px;
}
.value {
font-weight: bold;
}
.anchor {
display: inline-block;
width: 100%;
}
.node {
display: flex;
justify-content: space-between;
}
<div class="tree">
<div class="level">
<a class="anchor">
<div class="node">
<span class="name">Name 1</span>
<span class="value">Value</span>
</div>
</a>
<div class="level">
<a class="anchor">
<div class="node">
<span class="name">Name 1.1</span>
<span class="value">Value</span>
</div>
</a>
<div class="level">
<a class="anchor">
<div class="node">
<span class="name">Name 1.1.1</span>
<span class="value">Value</span>
</div>
</a>
<div class="level">
<a class="anchor">
<div class="node">
<span class="name">Long long long name</span>
<span class="value">Value</span>
</div>
</a>
</div>
</div>
<div class="level">
<a class="anchor">
<div class="node">
<span class="name">Name 1.1.2</span>
<span class="value">Value</span>
</div>
</a>
<div class="level">
<a class="anchor">
<div class="node">
<span class="name">Long long long name</span>
<span class="value">Value</span>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне надо сделать так что-бы по нажатию на <a>Музыка</a> начинал воспроизводится аудиопоток
Как сделать, чтобы панель была изначально выдвинута, и только после нажатия закрывалась, и её опять можно было бы выдвинуть?
Как вытянуть данные узла температур из данного xml файла, который расположен по ссылке https://xmlmeteoservice