html - 在较小屏幕上的其他元素之间移动侧边栏
问题描述
我不完全确定这是可能的,但我想我会问。
我想在遇到断点时在某些内容之间移动侧边栏。
所以,例如这样的事情:
+---------------------+ +-------------+
| | | |
| Top Content | | |
| | | Sidebar |
| | | |
+---------------------+ | |
+---------------------+ | |
| | | |
| | | |
| | | |
| Other | | |
| Content | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+---------------------+ +-------------+
对此:
+-------------------------+
| |
| Top Content |
| |
+-------------------------+
+-------------------------+
| |
| |
| Sidebar |
| |
| |
| |
+-------------------------+
+-------------------------+
| |
| |
| |
| |
| Other |
| Content |
| |
| |
| |
| |
+-------------------------+
所以我知道我可以设置订单,但我不太确定如何正确设置“流程”。
我想知道这样的事情:
.flex-container {
display: flex;
flex-direction: row;
}
.top-content {
order: 1;
}
.sidebar {
order: 3;
justify-self: flex-end;
}
.other-content {
order: 2;
}
@media screen and (max-width: 767px) {
.flex-container {
flex-direction: column;
}
.sidebar {
order: 2;
}
.other-content {
order: 3;
}
}
<div class="flex-container">
<div class="top-content">
...
</div>
<div class="sidebar">
...
</div>
<div class="other-content">
...
</div>
</div>
但我不确定这是否合理?想知道这是否需要用 CSS Grid 来代替?无论如何,只是一个想法。希望使用相同的内容结构,而不必使用断点隐藏/显示相同的内容并在页面上编写更多标记。
解决方案
使用 CSS Grid 更简单、更容易。
.grid-container {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 3fr;
grid-gap: .5em;
height: 100vh;
background-color: gray;
}
.top-content {
grid-column: 1;
background-color: orangered;
border: 1px dashed black;
}
.sidebar {
grid-column: 2;
grid-row: 1 / -1;
background-color: aqua;
border: 1px solid black;
}
.other-content {
grid-column: 1;
background-color: lightgreen;
border: 1px dashed black;
}
body {
margin: 0;
}
@media (max-width: 500px) {
.grid-container {
grid-template-columns: 1fr;
grid-template-rows: auto;
}
.sidebar {
grid-column: 1;
grid-row: 2;
}
}
<div class="grid-container">
<div class="top-content">top content</div>
<div class="sidebar">sidebar</div>
<div class="other-content">other content</div>
</div>
jsFiddle 演示
推荐阅读
- c++ - 为什么 gmp 在此处重新分配时会因“无效的下一个大小”而崩溃?
- c# - 管理直线频道 Web 小部件的会话
- python - Python Tkinter 滑块自定义
- php - 在类中使用 PDO - 在 null 上调用成员函数 prepare()
- python - 使用已使用 numpy save 保存的 numpy fromfile 恢复二进制数据
- sed - 如何使用 sed 将文件中某些行的间距加倍
- amazon-web-services - 如何找到只有 id 的 Amazon EC2 AMI?
- python - 用 Pandas 中行前后值的平均值替换给定列的异常值
- git - Git添加所有修改过的文件,但有一些例外
- windows - 为什么我会从 chrome 收到两种不同类型的通知?