details元素似乎忽略了显示弯曲或网格?

问题描述 投票:1回答:2

对我来说,这似乎很奇怪。您可以看到我们有一个简单的details元素,该元素应由所有权利横向运行。但事实并非如此。 grid似乎也不起作用。

为什么?我在规范中没有看到关于布局模型对这些元素有任何不同的任何信息。

details {
	display: flex;
	flex-direction: row;
}
<details open>
	<summary>foo</summary>
	<div>bar</div>
	<div>baz</div>
</details>
html css specifications
2个回答
1
投票

您不能覆盖details元素的显示行为,但是如果要让子代显示在一行上,则可以在子代上使用displayfloat

一些示例要测试通过不同的浏览器使用前

为视觉测试添加边界,颜色和背景

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>


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.