ฉันมีตาราง "sortable" ที่ส่วนหัวของคอลัมน์เรียงปัจจุบันแสดงไอคอน:
ไอคอนการเรียงจะแสดงที่ท้ายข้อความ (เช่นเรากำลังสนับสนุน 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>
ความคิดใด ๆ เกี่ยวกับวิธีการบรรลุ UI นี้? สิ่งนี้อาจมีส่วนเกี่ยวข้องกับตารางหรือปุ่มเล็กน้อย จริง ๆ แล้วฉันต้องการThing A
"แน่นหนา" ด้านล่าง / สิ้นสุดจัดชิดกับThing B
(ของความกว้างที่ยืดหยุ่นและซึ่งสามารถมีข้อความที่ห่อ) แต่Thing A
ไม่สามารถห่อลงบนบรรทัดของตัวเอง
ฉันได้ลองทำล้อเล่นกับflex
ค่าต่างๆ แต่การรวมกันใด ๆ ก็ทำให้การห่อข้อความก่อนกำหนดหรือไม่เร็วพอ