css - 使用内联、弹性、浮动或其他方式在窗口调整大小时堆叠 3 个元素
问题描述
我知道有很多关于这个的问题,他们中的大多数人说这是不可能的,因为他们只问了一种方法,这个问题是关于任何方法的,我简直不敢相信这在 CSS 中是不可能的。
我有 3 个元素,其中 2 个堆叠在左侧,另一个更高,他的宽度填充剩余空间,当屏幕变小时它们堆叠,所以右侧元素在第一个和最后一个元素之间移动:
我尝试了不同的方法,例如display:inline-block
,float:left
(和正确的),display:flex
(以及一些 flex 属性)甚至表格!我无法实现它。
这是我最好的 3 次尝试:
.test_inline div{display:inline-block;}
.test_inline .right{flex-grow:1; width: calc(100% - 130px);min-width:100px;}
.test_flex{display:flex;flex-wrap: wrap}
.test_flex .right{flex-grow:1; width: calc(100% - 130px);min-width:100px;}
.test_float .left{float:left;}
.test_float .right{display: flow-root;}
/* */
.main{ margin: 50px; }
div div{ border: 1px solid #333; }
.left{ width: 100px; }
.right{ height: 50px; }
<div class='main test_inline'>
<div class='left'>1 Top left</div>
<div class='right'>2 Right</div>
<div class='left'>3 Bottom Left</div>
</div>
<div class='main test_flex'>
<div class='left'>1 Top left</div>
<div class='right'>2 Right</div>
<div class='left'>3 Bottom Left</div>
</div>
<div class='main test_float'>
<div class='left'>1 Top left</div>
<div class='right'>2 Right</div>
<div class='left'>3 Bottom Left</div>
</div>
谢谢您的帮助!
解决方案
我简直不敢相信这在 CSS 中是不可能的。
有可能的。事实上,使用 CSS Grid 相当简单。
不需要浮动、内联块、绝对定位甚至是 flex。
jsFiddle 演示
.test_grid {
display: grid;
grid-template-columns: 150px 1fr;
grid-template-rows: 50px 50px;
grid-gap: 5px;
}
.right {
grid-row: span 2;
}
@media ( max-width: 600px) {
.test_grid {
grid-template-columns: 1fr;
grid-template-rows: 50px 50px 50px 50px;
}
}
/* */
.main {
margin: 50px;
}
div div {
border: 1px solid #333;
}
<div class='main test_grid'>
<div class='left'>1 Top left</div>
<div class='right'>2 Right</div>
<div class='left'>3 Bottom Left</div>
</div>
推荐阅读
- c# - C# 代码不允许我在他们的库中使用函数
- symfony - 如何将 getter 或类属性传递给 symfony 自定义约束?
- css - 如何在使用 max-width:100% 调整大小后将 1 个图像粘贴到另一个图像上并将它们保持在一起
- deep-learning - 神经网络输出层激活
- android - Android按钮主题不适用
- r - 如何在特定目录中写入多个 csv 文件,然后将它们合并到一个 csv 中?
- javascript - 使用 Jest 检查字符串是否包含来自数组的子字符串之一
- sql - SQL Server 2008 中各行的平均值
- sql - 如何在 SQL 中获得精确的十进制值?
- jquery - 如何从 jQuery contextMenu (2.x) 触发 ClipboardJS