html - 具有列状结构的 HTML 页面的响应性
问题描述
我正在寻找一种技术来处理 html 页面中的响应性,这些页面具有包含多个项目的列状结构。
这是一个例子: Codepen
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet" />
<div class="row" style="width:200;">
<div class="col-sm-6">
<div class="item">
First
<br><br>
</div>
<div class="item">
Second Second Second Second Second Second Second
<br><br>
</div>
<div class="item">
Third<br><br>
</div>
</div>
<div class="col-sm-6">
<div class="item">
First First First First First<br><br>
</div>
<div class="item">
Second<br><br>
</div>
<div class="item">
Third<br><br>
</div>
</div>
</div>
我希望它看起来像这样:
每个“项目”的高度需要根据其文本长度和浏览器窗口宽度动态增长和缩小,同时与另一列保持对齐。
我还需要当屏幕足够窄时,右栏应该在左栏下方移动。
我的问题是,对于 Bootstrap,我似乎需要将每一列放入一个单独的 div 中。另一方面,当列并排出现时,如果我希望相应的项目出现在相同的高度,我需要将它们分成行而不是列。
PS。我尝试了 display:flex 但找不到可行的方法。
有任何想法吗?谢谢阿里
解决方案
如果您使用 BS3 但愿意在flex
一边使用,您可以考虑grid
在 mediaquerie 和自定义类中代替:
你的评论我的反应是:
感谢 G-Cyrillus。用 Flex 和 Bs3 可以做到这一点吗?这是一个完全使用 BootStrap3 构建的大型网站,目前还不能升级到 Bs4。
BS3 的可能示例,在媒体查询中使用自定义类:
/*see us, demo purpose */
.row div {
box-shadow: 0 0 0 1px
}
/* custom class for the breakpoint where rows are drawn into columns with matching rows */
@media screen and (max-width: 992px) and (min-width:768px) {
:before,
:after {
grid-row: -1
}
.grid-md-2 {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-auto-flow: row dense;
}
.grid-md-2 [class^="col"] {
width: 100%;
grid-column: 1;
}
/*.grid-md-2 [class^="col"]:nth-child(3)~[class^="col"]*/
/* update for a repeating pattern */
.grid-md-2 [class^="col"]:nth-child(6n -2),
.grid-md-2 [class^="col"]:nth-child(6n -1),
.grid-md-2 [class^="col"]:nth-child(6n) {
grid-column: 2;
}
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="row grid-md-2">
<div class="col-sm-6 col-md-4 col-xs-12">
First
</div>
<div class="col-sm-6 col-md-4 col-xs-12">
Second
</div>
<div class="col-sm-6 col-md-4 col-xs-12">
Third
</div>
<div class="col-sm-6 col-md-4 col-xs-12">
First First First
<br><br> First First
</div>
<div class="col-sm-6 col-md-4 col-xs-12">
Second<br>Second
</div>
<div class="col-sm-6 col-md-4 col-xs-12">
Third
</div>
</div>
</div>
推荐阅读
- mongodb - 使用 $and、$or 的 Mongo 数组查询
- reactjs - PropTypes 导致表单刷新 onSubmit redux-form
- openstack - openstack 计算服务列表 --service nova-compute 安装 nova 后返回空行
- azure - 即使使用 sudo,Yeoman 也会给出权限错误
- java - 写入内部存储
- multi-tenant - TenantAccessor.getCurrentTenant() 抛出 TenantNotAvailableException:无法获取当前租户:没有可用的请求
- php - 调用 dispatch 时 Lumen 内存不足
- server - 如何在谷歌云上找到私有IP地址?
- laravel - Eloquent 方法在子类中调用时使用子类而不是父类
- swift - 如何为我的枚举返回一个空白值