对我来说,这似乎很奇怪。您可以看到我们有一个简单的details元素,该元素应由所有权利横向运行。但事实并非如此。 grid
似乎也不起作用。
为什么?我在规范中没有看到关于布局模型对这些元素有任何不同的任何信息。
details {
display: flex;
flex-direction: row;
}
<details open>
<summary>foo</summary>
<div>bar</div>
<div>baz</div>
</details>
您不能覆盖details元素的显示行为,但是如果要让子代显示在一行上,则可以在子代上使用display
或float
:
一些示例要测试通过不同的浏览器使用前。
为视觉测试添加边界,颜色和背景
details {clear:both;margin:2em;border:solid;color:red;}
details.flkid {overflow:auto;/* to deaal with floatting children*/}
summary {background:yellow;}
details > *{padding:0 1em;color:green}
details.flkid > *{float:left;}
details.ib > *{display:inline-block;}
details.tbcl > *{display:table-cell;}
/* and so on with inline-table,inline-flex,inline-grid */
<details class="flkid" open>
<summary>foo</summary>
<div>bar</div>
<div>baz</div>
</details>
<details class="ib" open>
<summary>foo</summary>
<div>bar</div>
<div>baz</div>
</details>
<details class="tbcl" open>
<summary>foo</summary>
<div>bar</div>
<div>baz</div>
</details>
div {
display: grid;
grid-template-columns: repeat(5, auto);
}
details {
display: contents/* removed from the flow, so the grid div becomes the parent */
}
div {
border: solid;
margin: 2px
}
details[open]> :not(summary) {
/* hide them from the flow except for summary */
position: absolute;
right: 100%;
}
div[class] {
grid-row: span 2;
}
<div>
<details><!-- attribute open removed you can add it if you want it closed at first :( -->
<summary>foo</summary>
<div>bar</div>
<div>baz</div>
<div>bar</div>
<div>baz</div>
<div>bar</div>
<div class>bazbazbazbazbazb</div>
<div>bar</div>
<div>baz</div>
<div>bar</div>
<div>baz</div>
<div>bar</div>
<div>baz</div>
</details>
</div>
.flex {
display: flex;
flex-direction: row;
}
.flex>* {
padding: 5px;
}
<details open>
<summary>foo</summary>
<div class="flex">
<div>bar</div>
<div>baz</div>
</div>
</details>