[英]Add a div between rows in an unordered list
有可能,但並非所有瀏覽器都能按預期方式呈現它,因為它不是有效的html。
您可以將列表完全替換為div's
以獲得更好的保證...
證明它有效:
ul { display: flex; flex-wrap: wrap; flex-direction: row; } li { margin: 5px; background-color: green; width: 50px; height: 40px; } div { width: 100%; }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>Test</title> </head> <body> <ul> <li>123</li> <li>123</li> <li>123</li> <li>123</li> <div>This the between content</div> <li>123</li> <li>123</li> <li>123</li> <li>123</li> </ul> </body> </html>
據我了解,您需要一個解決方案,使行中的項目數量可變,同時仍將div牢牢固定在適當的位置。 如果您可以將特殊的div
始終排在第二行,那么可以使用一種僅涉及CSS的簡單解決方案,其中涉及flexbox和一些絕對定位。
將您的列表包裝在提供新堆疊上下文的容器中( position: relative;
)。
將您的ul
和您的特殊div
放在該容器中。
使用flexbox將列表放入靈活的塊狀網格中,並為列表項設置一個高度。
通過為列表的第一個孩子設置底邊距為div
騰出空間。
將div
定位為absolute
,使其高度與您所創建的底部邊距非常吻合,在頂部位置與列表項的高度(加上邊距)相匹配,並且寬度為100%。
* { box-sizing: border-box; } .with-static-row { position: relative; --margin: 0.5rem; --box: 10rem; --banner: 7rem; } ul{ display: flex; flex-wrap: wrap; list-style: none; padding-left: 0; justify-content: center; } ul > :nth-child(1) { margin-bottom: calc(var(--banner) + var(--margin) * 3); } li { flex-basis: var(--box); height: var(--box); border: 3px solid black; background-color: #eee; margin: var(--margin); } li, .static { display: flex; justify-content: center; align-items: center; } .static { width: 100%; border: 3px dashed black; height: var(--banner); position: absolute; top: calc(var(--box) + var(--margin) * 3) }
<div class="with-static-row"> <ul> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> <li><li></li> </ul> <div class="static"><div></div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.