如何利用justify-content: space-between使textarea对齐兄弟行按钮右侧?
实现动态宽度按钮组对齐的textarea布局
可以通过CSS Grid布局完美解决这个问题,不管按钮组宽度如何变化,textarea都能自动对齐按钮组的最右侧位置。
修改后的完整代码
CSS
.container { display: grid; /* 定义三列:文本自适应宽度、剩余空间、按钮组自适应最宽内容 */ grid-template-columns: auto 1fr max-content; gap: 10px; } .row { display: contents; /* 让行内元素直接成为Grid子项 */ } .text { grid-column: 1; align-self: center; } .buttons { grid-column: 3; display: flex; gap: 10px; } .button { border-radius: 10px; padding: 10px; height: 20px; width: 50px; border: 1px solid black; } .button.row_one { background: purple; } .button.row_two { background: red; } .textarea-wrapper { grid-column: 2 / 4; /* 占据按钮组右侧到文本左侧的全部空间 */ align-self: center; } textarea { resize: none; border-radius: 10px; padding: 10px; width: 100%; box-sizing: border-box; height: 40px; }
HTML
<div class="container" dir="rtl"> <div class="row"> <div class="text"> <p>Row 1</p> </div> <div class="buttons"> <div class="button row_one"></div> <div class="button row_one"></div> <div class="button row_one"></div> <div class="button row_one"></div> <div class="button row_one"></div> </div> </div> <div class="row"> <div class="text"> <p>Row 2</p> </div> <div class="buttons"> <div class="button row_two"></div> <div class="button row_two"></div> <div class="button row_two"></div> <div class="button row_two"></div> <div class="button row_two"></div> </div> </div> <div class="text"> <p>Row 3</p> </div> <div class="textarea-wrapper"> <textarea>Hello</textarea> </div> </div>
核心逻辑
- Grid列布局:通过
grid-template-columns: auto 1fr max-content定义三列,其中max-content列会自动适配所有按钮组的最大宽度,确保按钮组始终对齐;1fr列占据文本和按钮组之间的剩余空间。 - RTL适配:由于设置了
dir="rtl",Grid列的视觉顺序自动反转,文本列在最右侧,按钮组列在最左侧,中间的1fr列正好是按钮组的右侧区域。 - textarea定位:最后一行的textarea容器通过
grid-column: 2 / 4占据中间1fr列和按钮组列的位置,实现从按钮组最右侧开始延伸到文本左侧的效果。
内容的提问来源于stack exchange,提问作者pileup
相关产品推荐
相关产品推荐

