我有一个“可排序”表,其中当前排序列的标题显示一个图标:
排序图标将显示在文本的末尾(即,我们支持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
值,但是任何组合都会使文本过早包装或不够快。