Я создал два столбца ярлыков, которые сгибают и обертывают. У меня есть две проблемы, которые я не могу понять, как решить с помощью CSS.Как сделать все метки одинаковыми по высоте с помощью flexbox?
- Я хотел бы, чтобы высота всех этикеток была равна самой высокой этикетке.
- Последний элемент не равен половине ширины div, но расширяется до полной ширины div.
Вот мой демо: http://jsfiddle.net/pdExf/869/
HTML:
<div>
<label>
<input type="checkbox"/>
<span > 1-thisisaverrrrrrrrrrrrryyyyyy_long_word_with_no_spaces </span>
</label>
<label>
<input type="checkbox"/>
<span> 2-thisisaverrrrrrrrrrrrryyyyyy_long_word_with_no_spaces </span>
</label>
<label>
<input type="checkbox"/>
<span> 3-thisisaverrrrrrrrrrrrryyyyyy_long_word_with_no_spaces </span>
</label>
<label>
<input type="checkbox"/>
<span> 4-very_short_word </span>
</label>
<label>
<input type="checkbox"/>
<span> 5-medium_length_word </span>
</label>
<label>
<input type="checkbox"/>
<span> 6-still_no_spaces </span>
</label>
<label>
<input type="checkbox"/>
<span> 7-thisisaverrrrrrrrrrrrryyyyyy_long_word_with_no_spaces </span>
</label>
</div>
CSS:
span {
margin-left: 14px;
word-break: break-all;
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
background-color: yellow;
}
label {
box-sizing: border-box;
background: white;
color: black;
padding: 10px;
margin: 10px 10px 20px 10px;
border: 1px solid black;
flex-grow: 1;
flex-shrink: 1;
width: calc(100%/3); // n_rows + 1;
max-width: calc(50% - 20px); // 50% minus the pixels
}
div {
height: 200px;
background-color: lightblue;
overflow: scroll;
display: flex;
flex-wrap: wrap;
}
UPDATE: Я понял, как второе требование. Однако первый остается на свободе. Как я могу сделать метки равными наибольшему с помощью js, если CSS невозможно?
Что вы подразумеваете под * «в группе» * @ 1.? –
@AndreiGheorghiu Я просто имею в виду самую высокую метку среди всех лейблов. – AlanH
Нет * чистого *, правильный способ сделать это с помощью CSS. Flexbox позволяет только сделать все элементы в строке равной высоте. Вас интересует чистый способ «js»? Если да, у вас есть 'jQuery' в проекте или вы хотите« ваниль »? Есть некоторые хаки, которые вы можете попробовать с помощью CSS, но вам нужна дополнительная разметка (обертки вокруг 'li'. Я думаю, что с помощью 'js', если это делается правильно, это чище. –