响应式设计中{ul> <li>中项目之间的空格

时间:2017-01-23 20:21:08

标签: html css

我制作了一个简单的菜单,但在纵向视图中无法正确查看列表项。它们相互重叠。

我尝试将font-size: 0;添加到<ul>,但这不会改变任何内容。

如何在垂直移动视图中的列表项之间创建空格?

ul#minimenu {
  padding: 0;
  margin-left: 8%;
}
ul#minimenu li {
  display: inline;
}
ul#minimenu li a {
  background-color: green;
  color: white;
  padding: 10px 10px;
  text-decoration: none;
  border-radius: 4px 4px 0 0;
}
ul#minimenu li a:hover {
  background-color: orange;
}
/*-------------------mobile-------------------*/

@media screen and (max-width: 900px) {
  ul#minimenu li {
    display: block;
  }
}
<br>
<DIV style="text-align : center;">

  <ul id="minimenu">
    <li>
      <B>levels :</B>
    </li>
    <li><a href="level1.html">Level 1</a>
    </li>
    <li><a href="level2.html">Level 2</a>
    </li>
    <li><a href="level3.html" style="background-color: #c0c0c0; color:      black;padding: 10px 10px;text-decoration: none;border-radius: 4px 4px 0 0;cursor:default;">Level 3</a>
    </li>

  </ul>

4 个答案:

答案 0 :(得分:2)

尝试在此类链接中添加display: inline-block;;

&#13;
&#13;
ul#minimenu {
	padding: 0;
	margin-left:8%;
}

ul#minimenu li {
	display: inline;
}

ul#minimenu li a {
	background-color: green;
	color: white;
	padding: 10px 10px;
	text-decoration: none;
	border-radius: 4px 4px 0 0;
}

ul#minimenu li a:hover {
	background-color: orange;
}

/*-------------------mobile-------------------*/

@media screen and (max-width:900px) 
{      

	ul#minimenu li {
		display: block;
	}
	ul#minimenu li a{
		display:inline-block;
	}

}
&#13;
<ul id="minimenu">
	<li><B>levels :</B></li> 
	<li><a href="level1.html" >Level 1</a></li>
	<li><a href="level2.html" >Level 2</a></li>
	<li><a href="level3.html" style="background-color: #c0c0c0; color:      black;padding: 10px 10px;text-decoration: none;border-radius: 4px 4px 0 0;cursor:default;">Level 3</a></li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

a中的li元素具有重叠的背景颜色,默认情况下a元素设置为display: inline;。内联元素不会影响DOM中其他元素的位置和垂直值(如垂直边距/填充/等)。要让元素占用垂直空间,请将其设为display: block;display: inline-block;

&#13;
&#13;
ul#minimenu {
  padding: 0;
  margin-left: 8%;
}
ul#minimenu li {
  display: inline;
}
ul#minimenu li a {
  background-color: green;
  color: white;
  padding: 10px 10px;
  text-decoration: none;
  border-radius: 4px 4px 0 0;
}
ul#minimenu li a:hover {
  background-color: orange;
}
/*-------------------mobile-------------------*/

@media screen and (max-width: 900px) {
  ul#minimenu li {
    display: block;
  }
  ul#minimenu li a {
    display: inline-block;
  }
}
&#13;
<br>
<DIV style="text-align : center;">

  <ul id="minimenu">
    <li>
      <B>levels :</B>
    </li>
    <li><a href="level1.html">Level 1</a>
    </li>
    <li><a href="level2.html">Level 2</a>
    </li>
    <li><a href="level3.html" style="background-color: #c0c0c0; color:      black;padding: 10px 10px;text-decoration: none;border-radius: 4px 4px 0 0;cursor:default;">Level 3</a>
    </li>

  </ul>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您遗失的内容是overflow:hidden在您的菜单li元素中:

@media screen and (max-width: 900px)
    ul#minimenu li {
        display: block;
        overflow: hidden;
        margin-bottom: 2px;
    }
}

您可能还希望添加一些margin-bottom,如上所述。我已经创建了一个Stack Snippet,展示了以下内容。

希望这有帮助! :)

&#13;
&#13;
ul#minimenu {
  padding: 0;
  margin-left: 8%;
}
ul#minimenu li {
  display: inline;
}
ul#minimenu li a {
  background-color: green;
  color: white;
  padding: 10px 10px;
  text-decoration: none;
  border-radius: 4px 4px 0 0;
}
ul#minimenu li a:hover {
  background-color: orange;
}
/*-------------------mobile-------------------*/

@media screen and (max-width: 900px) {
  ul#minimenu li {
    display: block;
    overflow: hidden;
    margin-bottom: 2px;
  }
}
&#13;
<br>
<DIV style="text-align : center;">

  <ul id="minimenu">
    <li>
      <B>levels :</B>
    </li>
    <li><a href="level1.html">Level 1</a>
    </li>
    <li><a href="level2.html">Level 2</a>
    </li>
    <li><a href="level3.html" style="background-color: #c0c0c0; color:      black;padding: 10px 10px;text-decoration: none;border-radius: 4px 4px 0 0;cursor:default;">Level 3</a>
    </li>

  </ul>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

你好吗?

我在html结构/语义上做了一些更改,因为不推荐使用某些标记,不建议使用内联css。

可以通过多种方式完成,我制作了两个,以便您可以选择最适合自己的方式。

V2
- (推荐) http://codepen.io/CesarCEARA/pen/OWggJX http://codepen.io/CesarCEARA/pen/OWggJX

ul#minimenu {
  display: inline-block;
  list-style: none;
  padding: 0;
}
ul#minimenu li {
  float: left;
  margin-right: 5px;
}
ul#minimenu li a {
  background-color: green;
  border-radius: 4px 4px 0 0;
  color: #fff;
  padding: 10px;
  text-decoration: none;		
}
ul#minimenu li a:hover {
  background-color: orange;
}
ul#minimenu li a.disabled {
  background-color: #c0c0c0;
  color: #000;
  cursor: default;
}
/*-------------------mobile-------------------*/
@media screen and (max-width: 900px) {
  ul#minimenu li {
    clear: both;
    display: flex;
    margin-right: 0;
    margin-bottom: 5px;
  }
  ul#minimenu li:last-child {
    margin-bottom: 0;
  }
}
<div style="text-align: center;">
  <ul id="minimenu">
    <li>
      <strong>levels: </strong>
    </li>
    <li>
      <a href="level1.html">Level 1</a>
    </li>
    <li>
      <a href="level2.html">Level 2</a>
    </li>
    <li>
      <a href="level3.html" class="disabled">Level 3</a>
    </li>
  </ul>
</div>

V1
http://codepen.io/CesarCEARA/pen/LxLyqq http://codepen.io/CesarCEARA/pen/LxLyqq

此致 塞萨尔巴罗斯