Saya memiliki tabel "sortable" di mana tajuk kolom yang saat ini disortir menampilkan ikon:
Ikon sortir akan ditampilkan di akhir teks (yaitu, kami mendukung LTR / RTL). Saya sedang menggunakan display:flex
. Namun, jika lebar tabel menyusut dan teks tajuk kolom mulai membungkus, saya mengalami keadaan ambigu di mana tidak jelas kolom mana yang diurutkan:
Sebaliknya saya ingin memenuhi persyaratan berikut:
- Ikon selalu "erat" selaras dengan "ujung" dari baris teks terpanjang (bahkan jika sel / tombol pembungkus lebih luas).
- Ikon juga harus sejajar dengan baris terakhir dari teks.
- Ikon tidak boleh membungkus ke garis sendiri.
- Tombol harus ada dan harus merentang sel penuh. (Ini gaya dan markup internal dapat berubah sesuai kebutuhan.)
- CSS dan HTML hanya jika memungkinkan.
- Itu tidak bisa mengandalkan lebar kolom atau teks header yang diketahui / diatur.
Sebagai contoh:
Saya telah bereksperimen dengan sekelompok kombinasi yang berbeda dari display: inline/inline-block/flex/grid
, position
, ::before/::after
, dan bahkan float
(!) Tapi tidak bisa mendapatkan perilaku yang diinginkan. Ini kode saya saat ini yang menunjukkan masalah:
.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>
Ada ide tentang bagaimana mencapai UI ini? Ini mungkin tidak ada hubungannya dengan hal-hal tabel atau tombol. Benar-benar saya perlu Thing A
"erat" bawah / ujung selaras ke Thing B
(dari lebar yang fleksibel dan yang dapat membungkus teks) tetapi Thing A
tidak dapat membungkus ke baris sendiri.
Saya sudah mencoba mengacaukan flex
nilai - nilai tetapi kombinasi apa pun membuat pembungkus teks terlalu dini atau tidak cukup cepat.