能否仅用CSS实现details标签展开后内容与summary横向并排?
实现details展开后summary与内容横向并排的纯CSS方案
嘿,这个探索性的问题真的挺有意思的!我完全懂你想摆脱额外父容器和display:contents限制的想法——毕竟就是想折腾原生标签的潜力嘛😉
其实不用绕弯子,直接把<details>本身设置成flex容器就行,利用它原生的展开/折叠行为来控制内容显示,完美符合你的需求:
<details style="display: flex; margin: 10px auto; padding: 0 20px;"> <summary style="background-color:#d80000; background-position: center center; background-repeat: no-repeat; background-size: cover; height: 200px; outline: 1px solid #ffffff; outline-offset: -15px; color: #ffffff; text-align: center; padding-top: 25px; font-size: 0; width: 33%;"> <span style="display: block; font-size: 10px; letter-spacing: 4px; margin-bottom: 5px; text-transform: uppercase;">Title</span> </summary> <article style="border: 1px solid #000000; padding: 10px; font-size: 12px;"> Here's stuff </article> </details>
原理说明:
- 直接给
<details>设置display: flex,让它成为flex容器,这样<summary>和内部内容(这里是<article>)就会自动成为flex子项。 - 依赖
<details>的原生行为:折叠状态下,summary之外的内容会被自动隐藏;展开后这些内容会显示出来,同时因为flex布局的特性,自然和summary横向并排。 - 你可以通过调整
width、flex-grow等属性来灵活控制两者的宽度比例,完全不需要额外的嵌套或者特殊属性。
这个方案既简洁又符合你的要求,没有用到伪类(完全依赖原生标签行为),也不需要额外父容器,完美适配你探索原生标签边界的需求~
内容的提问来源于stack exchange,提问作者CSS-Only
相关产品推荐
相关产品推荐

