gpt4 book ai didi

javascript - 扩展 div 以填充父元素但不超过最大宽度

转载 作者:行者123 更新时间:2023-11-30 08:56:16 28 4
gpt4 key购买 nike

我试图在左侧 float 的 div 上设置最小和最大宽度/高度,并让它们展开以填充父元素(正文)。我想知道是否有办法用 css 实现这一点,如果没有,也许我可以使用一些 JS。

为了想象这种效果,开始调整窗口大小,您会注意到 div 右侧将有一个空白区域,直到空间大到足以让一些 div 移入其中。我想做的是让所有 div 扩展以填充空白空间,直到达到最大值,现在是时候弹出更多 div,此时 div 的大小将根据行中的数量重新调整.

最后我想让这些 div 永远不会超过最大宽度或小于最小宽度,而是在这些限制内 self 调整以填充整个 body 宽度

示例代码如下:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<style>
.imageitem {
background-color: blue;
margin: 0 5px 5px;
min-width: 200px;
min-height: 200px;
max-width: 250px;
max-height: 250px;
float: left;
}
</style>
</head>
<body>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
<div class="imageitem"></div>
</body>
</html>

最佳答案

你问的实际上是一个相对复杂的布局,虽然它基本上只是响应式的。本质上,您想要两个 div 扩展以填满屏幕(就像表格中的两个单元格一样),但是一旦屏幕达到特定宽度,第三个 div 就会向上移动到行中。

正如 Clark 所说,您将无法同时获得指定的尺寸和填满屏幕。宽度为 505 像素时,两个 div 将适合(2x 250,间隙为 5 像素)。至少 610 像素宽(3x 200,间隙为 2x 5 像素)才适合三个,这意味着有 105 像素的宽度,您的 div 不会填满屏幕。

媒体查询可能是最好的选择,但您的边距可能必须指定为百分比,而不是 5 像素(除非您想在 jQuery 或类似工具中执行此操作)。

根据 Clark 的回答修改为这个 fiddle http://jsfiddle.net/UHqWF/2/

body {
background:#edeee6;
}

.imageitem {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
float:left;
max-width:250px;
min-width:200px;
padding:5px;
width:100%;
}

.imageitem div {
background:#4e84a4;
max-height:250px;
min-height:200px;
}

@media all and (min-width:420px) {
.imageitem {
width:50%;
}
}

@media all and (min-width:630px) {
.imageitem {
width:33.33333%;
}
}

@media all and (min-width:840px) {
.imageitem {
width:25%;
}
}

@media all and (min-width:1050px) {
.imageitem {
width:20%;
}
}

但是,如上所述,它很不稳定。

更好的解决方案是不施加宽度限制(从而阻止右侧偶尔出现的间隙),例如 http://jsfiddle.net/UHqWF/3/

body {
background:#edeee6;
}

.imageitem {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
float:left;
padding:5px;
width:100%;
}

.imageitem div {
background:#4e84a4;
min-height:200px;
text-align:center;
}

@media all and (min-width:420px) {
.imageitem {
width:50%;
}
}

@media all and (min-width:630px) {
.imageitem {
width:33.33333%;
}
}

@media all and (min-width:840px) {
.imageitem {
width:25%;
}
}

@media all and (min-width:1050px) {
.imageitem {
width:20%;
}
}​

或者甚至在中心有额外的空间,而不是边缘,例如 http://jsfiddle.net/UHqWF/4/

body {
background:#edeee6;
}

.imageitem {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
float:left;
padding:5px;
width:100%;
}

.imageitem div {
background:#4e84a4;
max-width:250px;
margin:0 auto;
min-height:200px;
text-align:center;
}

@media all and (min-width:420px) {
.imageitem {
width:50%;
}
}

@media all and (min-width:630px) {
.imageitem {
width:33.33333%;
}
}

@media all and (min-width:840px) {
.imageitem {
width:25%;
}
}

@media all and (min-width:1050px) {
.imageitem {
width:20%;
}
}​

关于javascript - 扩展 div 以填充父元素但不超过最大宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434606/

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