【问题标题】:inline-block independent margin in <li><li> 中的内联块独立边距
【发布时间】:2015-10-25 18:45:55
【问题描述】:

我有以下菜单:

.menu ul {
  list-style: none;
}
.menu ul li {
  height: 35px;
  text-align: center;
  line-height: 35px;
}
li.current {
  background-color: #3eb5f1;
  color: white;
}
li.current::after {
  content: "";
  height: 11px;
  width: 8px;
  display: inline-block;
  background-image: url("../images/nav-arrow.png");
}
<div class="menu">
  <ul>
    <li class="current">Home page</li>
    <li>Inventory</li>
  </ul>
</div>

如图所示,li.current 元素有一个图标,但我想添加一个边距。但是,当我在li.current::after 中定义margin 时,它会影响整个元素; &lt;li class="current"&gt; 中的文字不仅仅是图标。

如何设置 li.current::after 的边距?图片 - http://oi59.tinypic.com/108658l.jpg

【问题讨论】:

  • 问题是因为text-align: center;。它会影响所有内联内容
  • 可以上传图片吗?它可能有助于澄清所需的输出;您可能不需要添加边距。
  • 好的,这是图片 - oi59.tinypic.com/108658l.jpg

标签: html css margin


【解决方案1】:

将伪元素的位置设置为绝对位置,而不是display: inline-block。然后您可以对其应用左边距而不影响“主页”的文本位置:

.menu ul {
  list-style: none;
}
.menu ul li {
  height: 35px;
  text-align: center;
  line-height: 35px;
}
li.current {
  background-color: #3eb5f1;
  color: white;
}
li.current::after {
  content: "image";
  height: 11px;
  width: 8px;
  position: absolute;
  margin-left: 50px;
}
<div class="menu">
  <ul>
    <li class="current">Home page</li>
    <li>Inventory</li>
  </ul>
</div>

【讨论】:

  • 但是当文本是另一个大小时,我需要为每个文本大小设置另一个边距
  • 无论li文本的宽度如何,您是否希望图标放置在相同的水平位置?在这种情况下,请使用 left 而不是 margin-left 的绝对位置。
  • 如果我们使用内联块,它已经很好地放置了,但是我需要在文本和箭头之间添加一些空间,还需要在顶部边缘添加一些空间。见 img - oi59.tinypic.com/108658l.jpg
  • 如果您希望菜单项彼此重叠排列,请删除text-align: center,并为它们应用左边距。然后,您可以使用绝对位置和 leftmargin-left ... 定位图标,具体取决于它们应该放置的位置。
  • 好的,但是如果我需要使用 text-align: center ,有没有办法在没有绝对定位的情况下独立于伪元素使用 margin-top?
猜你喜欢
  • 2020-08-03
  • 2012-09-10
  • 2011-12-13
  • 2010-12-22
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
相关资源
最近更新 更多