我有一个导航菜单,该菜单包含3列,每列33%的宽度。在移动设备上,我希望每列的宽度为100%,并重新排列各列,以使中间列位于所有其他列的上方。
通过查看以下示例,可以更轻松地了解我要实现的目标。您知道如何在屏幕宽度小于500像素时重新排列中间列,使其位于所有其他列上方吗?如果有一个很棒的CSS解决方案,我相信我可以轻松地用Javascript实现,如果可能的话,我只会更喜欢CSS2 / CSS3的想法。
.col-1 {
background-color: #eee;
text-align: center;
}
.col-2 {
background-color: #ccc;
text-align: center;
}
.col-3 {
background-color: #aaa;
text-align: center;
}
.title {
text-align: center;
margin-top: 75px;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/2.0.3/pure-min.css">
<link rel="stylesheet" href="https://unpkg.com/purecss@2.0.3/build/grids-responsive-min.css">
<p class="title">Desktop Look</p>
<div id="menu" class="pure-g">
<div class="col-1 pure-u-1-3">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-2 pure-u-1-3">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-3 pure-u-1-3">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>
<p class="title"><i>Desired </i>Mobile Look</p>
<div id="menu" class="pure-g">
<div class="col-2 pure-u-1">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-1 pure-u-1">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-3 pure-u-1">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>
答案 0 :(得分:2)
您可以根据设备大小在弹性项目上使用order
属性。
这里我在order: -1;
上使用了.col-2
。
.col-1 {
background-color: #eee;
text-align: center;
}
.col-2 {
background-color: #ccc;
text-align: center;
order: -1;
}
.col-3 {
background-color: #aaa;
text-align: center;
}
.title {
text-align: center;
margin-top: 75px;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/2.0.3/pure-min.css">
<link rel="stylesheet" href="https://unpkg.com/purecss@2.0.3/build/grids-responsive-min.css">
<p class="title">Desktop Look</p>
<div id="menu" class="pure-g">
<div class="col-1 pure-u-1-3">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-2 pure-u-1-3">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-3 pure-u-1-3">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>
答案 1 :(得分:1)
可以使用order完成此操作 我创建了一个单独的类并向其中添加了CSS代码,因为在默认的purecss代码上编写CSS并不是一种好习惯。
.col-1 {
background-color: #eee;
text-align: center;
}
.col-2 {
background-color: #ccc;
text-align: center;
}
.col-3 {
background-color: #aaa;
text-align: center;
}
.title {
text-align: center;
margin-top: 75px;
}
@media(max-width: 768px) {
.top_menu {
display: flex;
}
.top_menu-middle {
order: 0;
}
.top_menu-left {
order: 1;
}
.top_menu-right {
order: 2;
}
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/2.0.3/pure-min.css">
<link rel="stylesheet" href="https://unpkg.com/purecss@2.0.3/build/grids-responsive-min.css">
<p class="title">Desktop Look</p>
<div id="menu" class="pure-g top_menu">
<div class="col-1 pure-u-1 pure-u-md-1-3 top_menu-left">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-2 pure-u-1 pure-u-md-1-3 top_menu-middle">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-3 pure-u-1 pure-u-md-1-3 top_menu-right">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>
<p class="title"><i>Desired </i>Mobile Look</p>
<div id="menu" class="pure-g">
<div class="col-2 pure-u-1">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-1 pure-u-1">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-3 pure-u-1">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>
答案 2 :(得分:0)
在移动设备上,我希望每一列的宽度都为100%
您只需从以下位置更新css:
<div class="pure-g">
<div class="col-1 pure-u-1-3"> ... </div>
<div class="col-2 pure-u-1-3"> ... </div>
<div class="col-3 pure-u-1-3"> ... </div>
</div>
收件人:
<div class="pure-g">
<div class="col-1 pure-u-1 pure-u-md-1-3"> ... </div>
<div class="col-2 pure-u-1 pure-u-md-1-3"> ... </div>
<div class="col-3 pure-u-1 pure-u-md-1-3"> ... </div>
</div>
现在,此网格中的元素在小屏幕上将为width: 100%
,但在中型屏幕及以上的屏幕上将缩小为width: 33.33%
。
并重新排列列,以使中间列位于所有其他列的上方。
因为您可以在order
列上使用.col-2
,例如:
@media screen and (max-width: 767px) {
.col-2 {
order: -1;
}
}
工作演示:
.col-1 {
background-color: #eee;
text-align: center;
}
.col-2 {
background-color: #ccc;
text-align: center;
}
@media screen and (max-width: 767px) {
.col-2 {
order: -1;
}
}
.col-3 {
background-color: #aaa;
text-align: center;
}
.title {
text-align: center;
margin-top: 75px;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/2.0.3/pure-min.css">
<link rel="stylesheet" href="https://unpkg.com/purecss@2.0.3/build/grids-responsive-min.css">
<p class="title">Desktop Look</p>
<div id="menu" class="pure-g">
<div class="col-1 pure-u-1 pure-u-md-1-3">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-2 pure-u-1 pure-u-md-1-3">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-3 pure-u-1 pure-u-md-1-3">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>
<p class="title"><i>Desired </i>Mobile Look</p>
<div id="menu" class="pure-g">
<div class="col-2 pure-u-1">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-1 pure-u-1">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-3 pure-u-1">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>
答案 3 :(得分:0)
您可以使用媒体查询来设置弹性项目的宽度和顺序。
.col-1 {
background-color: #eee;
text-align: center;
}
.col-2 {
background-color: #ccc;
text-align: center;
}
.col-3 {
background-color: #aaa;
text-align: center;
}
.title {
text-align: center;
margin-top: 75px;
}
@media only screen and (max-width: 500px) {
/* Using specificity to force 100% width */
.col-1.pure-u-1-3, .col-2.pure-u-1-3, .col-3.pure-u-1-3 {
width: 100%;
}
.col-1 {
order: 2;
}
.col-2 {
order: 1;
}
.col-3 {
order: 3;
}
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/2.0.3/pure-min.css">
<link rel="stylesheet" href="https://unpkg.com/purecss@2.0.3/build/grids-responsive-min.css">
<p class="title">Desktop Look</p>
<div id="menu" class="pure-g">
<div class="col-1 pure-u-1-3">
<div class="pure-menu pure-menu-horizontal custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
<div class="col-2 pure-u-1-3">
<div class="pure-menu">
<a href="#" class="pure-menu-heading custom-brand">Brand</a>
</div>
</div>
<div class="col-3 pure-u-1-3">
<div class="pure-menu pure-menu-horizontal custom-menu-3 custom-can-transform">
<ul class="pure-menu-list">
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
<li class="pure-menu-item"><a href="#" class="pure-menu-link">Link</a></li>
</ul>
</div>
</div>
</div>