【发布时间】:2020-04-05 22:07:42
【问题描述】:
我正在寻找一种将两个元素彼此相邻放置的方法。一个元素包含一个链接,另一个元素包含两个按钮。如果在没有换行符的情况下无法容纳两个元素,则应同时换行:
大屏幕:
----------------------------------------------------------------------
https://this-is-a-link.com/with-a-slug c x |
https://this-is-a-link.com/with-a-long-long-long-long-long-slug c x |
----------------------------------------------------------------------
小屏幕:
-------------------------------------
https://this-is-a-link.com/with- c |
a-slug x |
https://this-is-a-link.com/with- c |
a-long-long-long-long-long-slug x |
-------------------------------------
我要避免的是一个元素会包裹但另一个元素不会包裹的场景:
-------------------------------------
https://this-is-a-link.com/with- c x |
a-slug |
https://this-is-a-link.com/with- c x |
a-long-long-long-long-long-slug |
-------------------------------------
我也想避免这种情况:
-------------------------------------------------------------------
https://this-is-a-link.com/with-a-slug c |
x |
https://this-is-a-link.com/with-a-long-long-long-long-long-slug c |
x |
-------------------------------------------------------------------
标记目前看起来像这样,但可以根据需要进行更改
<ol>
<li>
<span class="link">https://this-is-a-link.com/with-a-slug</span>
<span class="buttons">
<button>c</button>
<button>x</button>
</span>
</li>
<li>
<span class="link">https://this-is-a-link.com/with-a-long-long-long-long-long-slug</span>
<span class="buttons">
<button>c</button>
<button>x</button>
</span>
</li>
</ol>
而here 是一个简单的基本设置。
ol {
background: lightgrey;
max-width: 600px;
list-style-type: none;
}
li {
border: 1px solid black;
}
<ol>
<li>
<span class="link">https://this-is-a-link.com/with-a-slug</span>
<span class="buttons">
<button>c</button>
<button>x</button>
</span>
</li>
<li>
<span class="link">https://this-is-a-link.com/with-a-long-long-long-long-long-slug</span>
<span class="buttons">
<button>c</button>
<button>x</button>
</span>
</li>
</ol>
我尝试了各种我能想到的事情,比如制作每个 li 元素 flex 或尝试将整个列表放入 grid (尝试各种 minmax() 组合),但我从未能够实现我想看到的效果如上所述。我一直遇到这样的情况:元素宁愿换行而不是占据整个空间,或者一个元素会换行而另一个元素会拒绝。
【问题讨论】:
-
我能得到的最接近的是使用网格并为所有元素指定
max-content。但是,当屏幕变得太小时,这会将元素推出可见区域,这是我目前无法解决的问题。类似jsfiddle.net/j3z01epk