显示基于@media 查询格式化为弹性框的 <li>
Posted
技术标签:
【中文标题】显示基于@media 查询格式化为弹性框的 <li>【英文标题】:Show a(n) <li> formated as a flexbox based on @media query 【发布时间】:2018-11-07 11:32:19 【问题描述】:我无法根据媒体查询显示和隐藏一些 <li>
项目。我有一个 <ul>
元素,它显示为 flexbox,包含 <li>
元素。每个相应的<li>
也显示为弹性框,包含一个图标和文本。我想要两个 <li>
元素(第一个和最后一个)在屏幕宽度为 925px 或更小时显示。然而,这似乎只在<li>
元素不显示为弹性框时才有效。但是,我需要 <li>
元素是弹性框,所以我可以简单地格式化图标和文本。如果<li>
元素被格式化为弹性框,有什么方法可以根据屏幕宽度显示/隐藏<li>
元素?
我在下面的链接中有代码,与本文下面显示的代码相同。 https://codepen.io/anon/pen/XYrxmG
我想在屏幕宽度小于 925px 时显示的 <li>
元素用粉红色背景表示。
<nav id="navigation">
<ul id="nav-content">
<li id="nav-left"></li>
<li id="op1"><img src="https://via.placeholder.com/30x30"><h2>Option1</h2></li>
<li id="op2"><img src="https://via.placeholder.com/30x30"><h2>Option2</h2></li>
<li id="op3"><img src="https://via.placeholder.com/30x30"><h2>Option3</h2></li>
<li id="op4"><img src="https://via.placeholder.com/30x30"><h2>Option4</h2></li>
<li id="nav-right"></li>
</ul>
</nav>
*
margin: 0px;
padding: 0px;
color: black;
#nav-content
display: flex;
flex-direction: row;
justify-content: flex-start;
list-style-type: none;
border: solid 2px black;
// Each list element in nav bar
#nav-content>li
// When this display: flex is turned on, my <li> gets formatted correctly
// but the pink elements stop showing based on media query
//display: flex;
align-items: center;
padding: 10px 20px 10px 20px;
#nav-content > li:hover
background-color: grey;
#nav-left, #nav-right
display: none;
background-color: pink;
@media (max-width: 500px)
#nav-left,
#nav-right
display: flex;
【问题讨论】:
【参考方案1】:这似乎只是选择器的权重问题:
*
margin: 0px;
padding: 0px;
color: black;
#nav-content
display: flex;
flex-direction: row;
justify-content: flex-start;
list-style-type: none;
border: solid 2px black;
#nav-content > li
display: flex;
align-items: center;
padding: 10px 20px 10px 20px;
#nav-content > li:hover
background-color: grey;
#nav-content > #nav-left,
#nav-content > #nav-right
display: none;
background-color: pink;
@media (max-width: 925px)
#nav-content > #nav-left,
#nav-content > #nav-right
display: flex;
<nav id="navigation">
<ul id="nav-content">
<li id="nav-left"></li>
<li id="op1"><img src="http://via.placeholder.com/30x30"><h2>Option1</h2></li>
<li id="op2"><img src="http://via.placeholder.com/30x30"><h2>Option2</h2></li>
<li id="op3"><img src="http://via.placeholder.com/30x30"><h2>Option3</h2></li>
<li id="op4"><img src="http://via.placeholder.com/30x30"><h2>Option4</h2></li>
<li id="nav-right"></li>
</ul>
</nav>
修复 & forked pen:
#nav-content > #nav-left,
#nav-content > #nav-right
display: none;
background-color: pink;
@media (max-width: 500px)
#nav-content > #nav-left,
#nav-content > #nav-right
display: flex;
【讨论】:
以上是关于显示基于@media 查询格式化为弹性框的 <li>的主要内容,如果未能解决你的问题,请参考以下文章
将对象序列化为 JSON,然后使用 NEST 在弹性搜索中发送查询