У мене є "сортована" таблиця, де в заголовку поточно відсортованого стовпця відображається значок:
Піктограма сортування повинна відображатися в кінці тексту (тобто ми підтримуємо LTR / RTL). Я зараз використовую display:flex
. Однак якщо ширина таблиці зменшується і текст заголовка стовпця починає загортатись, я стикаюся з неоднозначними станами, де не зрозуміло, який стовпець відсортовано:
Натомість я хотів би відповідати наступним вимогам:
- Піктограма завжди повинна бути «щільно» вирівняна з «кінцем» найдовшого рядка тексту (навіть якщо комірка / кнопка, що обгортає, ширше).
- Піктограма також повинна бути вирівняна внизу з останнім рядком тексту.
- Ікона ніколи не повинна обертатися на власну лінію.
- Кнопка повинна бути присутнім і повинна охоплювати всю ширину комірки. (Внутрішній стиль та розмітка можуть змінюватися за потреби.)
- CSS та HTML, лише якщо це можливо.
- Він не може покладатися на відому / задану ширину стовпця або текст заголовка.
Наприклад:
Я експериментував з купою різних комбінацій display: inline/inline-block/flex/grid
, position
, ::before/::after
і навіть float
(!) , Але не може отримати бажане поведінку. Ось мій поточний код, що демонструє проблему:
.table {
border-collapse: collapse;
width: 100%;
}
.thead {
border-bottom: 3px solid #d0d3d3;
}
.thead .tr {
vertical-align: bottom;
}
.button {
padding: 1rem;
text-align: start;
font-family: Arial, "noto sans", sans-serif;
font-size: 0.875rem;
border: 0;
background-color: transparent;
width: 100%;
display: flex;
align-items: flex-end;
font-weight: bold;
line-height: 1.4;
}
.sort {
width: 1.25rem;
height: 1.25rem;
}
<table class="table">
<thead class="thead">
<tr class="tr">
<th class="th">
<button class="button">
Age
<span class="sort"></span>
</button>
</th>
<th class="th">
<button class="button">
Favorite Food
<span class="sort"></span>
</button>
</th>
<th class="th" aria-sort="ascending">
<button class="button">
Favorite Color
<span class="sort">
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" role="presentation" style="width: 1.25rem; height: 1.25rem;"> <path d="M11.4709 4.2136C11.7638 3.92071 12.2386 3.92071 12.5315 4.2136L17.1277 8.8098C17.4206 9.10269 17.4206 9.57756 17.1277 9.87046C16.8348 10.1633 16.3599 10.1633 16.0671 9.87046L12.7512 6.55459V19.25C12.7512 19.6642 12.4154 20 12.0012 20C11.587 20 11.2512 19.6642 11.2512 19.25V6.55459L7.93533 9.87046C7.64244 10.1633 7.16756 10.1633 6.87467 9.87046C6.58178 9.57756 6.58178 9.10269 6.87467 8.8098L11.4709 4.2136Z"> </path></svg>
</span>
</button>
</th>
<th class="th">
<button class="button">
Likes Neil Diamond?
<span class="sort"></span>
</button>
</th>
</tr>
</thead>
</table>
Будь-які ідеї, як досягти цього інтерфейсу? Це, мабуть, мало стосується таблиці або кнопкових матеріалів. Дійсно, мені потрібно Thing A
«щільно» вирівняти низ / кінець Thing B
(гнучкої ширини і, який може мати загорнутий текст), але я Thing A
не можу перегорнутись на власну лінію.
Я спробував возитися з flex
значеннями, але будь-яка комбінація або перетворює текст передчасно, або недостатньо скоро.