Я пытаюсь настроить макет в HTML / CSS для отображения данных JSON.Я бы хотел, чтобы надписи были выровнены по левому краю, чтобы справа был двоеточие, и исключить текст, который они содержат, если элемент становится маленьким, чтобы отобразить все его правильно.
long label :
long label :
long l... :
Пока у меня естьрабочая реализация Мне было интересно, есть ли способ избавиться от дополнительного элемента span
в моем HTML и CSS?
Минимальный рабочий пример:
В настоящее время моя стратегия заключается в переносе текстав пределах span
и оберните это в div
, класс которого установлен в label
.Ellidation включается на span
, и он настроен на заполнение большей части содержащего div
минус некоторое пространство справа для символа;двоеточие, :
, в данном случае.div
использует псевдоэлемент ::after
для добавления символа.Наконец, display
устанавливается на flex
и justify-content
на space-between
, чтобы заполнить горизонтальное пространство между span
и символом.
div {
border : 1px solid blue;
outline : 1px solid invert;
}
div.label {
/* Dimensions */
width : 20%;
border-radius : 5px;
padding : 3px 3px 3px 3px;
/* Behaviour */
clear : left;
float : left;
display : flex;
justify-content : space-between;
/* Style */
font-weight : bold;
}
div.label span {
/* Dimensions */
width : /* fallback */ 95%;
width : calc(100% - 10px);
/* Alternatively : margin : 0px 10px 0px 0px; */
/* Behaviour */
/* - Enable text-overflow */
white-space : nowrap;
overflow : hidden;
/* Style */
/* - Format text-overflow */
text-overflow : ellipsis;
}
div.label:after {
/* Contents */
content : ":";
}
div.value {
/* Dimensions */
border-radius: 5px;
padding : 3px;
/* Behaviour */
float : left;
}
<article>
<div class="label"><span>Short label</span></div>
<div class="value">Short string</div>
<div class="label"><span>A very long label</span></div>
<div class="value">A very long string, so long in fact that it will have to wrap more then one line, possibly even more if you have a sufficiently small screen</div>
</article>
(некоторые из них были в Google, но я не могу найти примеры, которые лучше, чем моя реализация, особенно SO, похоже, не имеет связанныхвопрос / ответ)