gpt4 book ai didi

CSS 高级 float /网格布局

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:33 24 4
gpt4 key购买 nike

我对 CSS 中的网格布局有点着迷。我有一个包装器(1000 像素宽),并希望将 div 与 float:left; 放在一起,并且每个 div 之间的边距为 23px。这可以使用 :nth-child 选择器轻松实现。但是现在我在左上角有一个文本 block ,它的高度是可变的,网格元素的数量也是可变的。

所以我将文本 block 和网格项的 right-margin 设置为 23px。但是当最右边的网格元素有 23px right-margin 时,它会中断到下一行。

我不能在这里使用 nth-child,因为我不知道我会得到多少行的两个元素和多少个三个元素。

我希望有一个纯 CSS 的解决方案来解决我的问题。

更新

这是一个显示我所做尝试的 fiddle :jsfiddle.net

这是我的布局:

+-------------------------------------------+
|+---------------+ +----------+ +----------+|
|| | | | | ||
|| | | | | ||
|| | | | | ||
|| | +----------+ +----------+|
|| Textblock | +----------+ +----------+|
|| | | | | ||
|| | | | | ||
|| | | | | ||
|+---------------+ +----------+ +----------+|
|+----------+ ^ ^ ^|
|| | (margin) (margin) (no margin)
|| | |
|| | |
|+----------+ |
+-------------------------------------------+
^
(no margin)

最佳答案

你可以这样做:http://codepen.io/pageaffairs/pen/svxLg

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
.float, .boxes div {background: #f7f7f7; }
.wrap {width: 1000px; margin: 0 auto; padding: 20px 0; background: #30353b;}
.float {float: left; width: 476px; height: 440px; margin: 0 23px 23px 0;}
.boxes {text-align: justify;}
.boxes div {width: 238px; height: 238px; display: inline-block;}
.boxes:after {content: ''; width: 100%; display: inline-block;}

</style>
</head>
<body>

<div class="wrap">
<div class="float"></div>
<div class="boxes">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>

</div>

</body>
</html>

这个解决方案部分来自另一个 conversation前几天,它引用了这个非常方便的技巧,将 inline-block 元素设置为 text-align: justify:http://www.barrelny.com/blog/text-align-justify-and-rwd/

这是另一个不同大小的版本:http://codepen.io/pageaffairs/pen/JrqIf

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
.float {background: #ccc;}
.boxes div {background: #f7f7f7; }
.wrap {width: 1000px; margin: 0 auto; padding: 20px 0; background: #30353b;}
.float {float: left; width: 318px; height: 400px; margin: 0 23px 23px 0;}
.boxes {text-align: justify;}
.boxes div {width: 318px; height: 200px; margin-bottom: 23px; display: inline-block;}
.boxes:after {content: ''; width: 100%; display: inline-block;}

</style>
</head>
<body>

<div class="wrap">
<div class="float"></div>
<div class="boxes">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>

</body>

</html>

编辑:我看到您现在已经发布了一个示例,下面是应用于您的代码的示例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>

#main {
width:1000px;
position:relative;
background-color:rgb(88, 88, 88);
}
#welcometext {
float: left;
width:318px;
margin-right:23px;
}
#welcometext p {
width:100%;
margin-top:30px;
}
.navelement {
width:318px;
height:189px;
overflow:hidden;
margin-top:40px;
border-radius:10px;
background-color:white;
display: inline-block;
}

.nav-wrap {text-align: justify;}
.nav-wrap:after {content: ''; width: 100%; display: inline-block;}


</style>
</head>
<body>

<div id="main">
<div id="welcometext">
<p>aximinctus incte pa idis sequati velit exero to tem si disci- enderi doloressit odi reptatum dolorrum et et autet aliti- assi rerio corum hitius am quidelibus. 318 px giatemporro esequam, eicias arum doleni vidis pre pa do- lupti orerum qui doluptatiam, voluptae conseritaque sita [...] imuscimin ne niendit.</p>
</div>
<div class="nav-wrap">
<div class="navelement">
</div>
<div class="navelement">
</div>
<div class="navelement">
</div>
</div>
</div>

</body>
</html>

关于CSS 高级 float /网格布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com