【问题标题】:Sticking to modular styling坚持模块化造型
【发布时间】:2013-11-07 18:25:28
【问题描述】:

我有两个模块:

.master-header.header-nav

.header-nav.master-header 内部,是一个简单的导航:

<nav class="header-nav">
          <ul>
            <li class="active">
              <a href="/home">Home</a>
            </li>
            <li class="">
              <a href="/here">Item</a>
            </li>
            <li class="">
              <a href="/photos">Photos</a>
            </li>
            <li class="">
              <a href="/here">Item</a>
            </li>
          </ul>
        </nav>

在我的.header-nav 模块中,我将aliulheight 设置为100%,然后将.header-navheight 设置为100px.master-header 中,因为从逻辑上讲,它的子项的布局样式应该属于哪里。

现在,问题来了,因为我希望将 a 中的文本垂直居中。行高非常适合这个,但 100% 不起作用,因为 100% 是字体的高度。 line-height: 100px 是解决问题的最佳选择,但将其放在 .header-nav 模块中似乎是错误的,因为这表明所有 .header-nav 都应该是这样的。我更希望它说 50% 但我不能这样做 padding-top: 50% 因为那是基于项目的宽度。

有什么想法吗?

尼尔

【问题讨论】:

  • 请提供一个 jsfiddle,以便那些愿意帮助您的人拥有比标记更多的东西来玩!
  • 不仅如此,还不清楚你想要实现什么。 “完美的东西”没问题 - 你的意思是你想要像 this fiddle 这样的东西 - 但后来它变得混乱了。
  • 如果我没猜错的话,解决方案是除了px%之外还有其他单位。 em 怎么样?在我的例子中,header-nav 是 6em 高,所以其中一半是 3em。这行得通吗?
  • 或者,正如您似乎指出的那样,header-nav 类的元素更多,您的问题是您想挑选出这个特定的元素吗?在这种情况下,只需再给它上课。您可以在 class 属性中为元素提供任意数量的类:class="header-nav yes-this-one"
  • 我没有做 jsfiddle,因为它不是一种编程问题,更多的是“我在哪里放置这个?”问题。 line-height: 100px 可以解决我的问题,但我必须将该行放在我的 .header-nav 模块中,根据 BEM 模块方法,这似乎不是正确的位置。

标签: css module bem


【解决方案1】:

您可以使用 display: table-cell 来实现垂直对齐。

.header-nav {height: 100px}

.header-nav ul,
.header-nav li {height: 100%}

.header-nav ul {display: table;}
.header-nav li {display: table-cell; vertical-align: middle}

Check out this plunker for a working version

【讨论】:

  • 除了 CSS 属性之外,最好避免使用“标签选择器”,因为它们会降低页面性能并使未来的支持更加困难。更多信息在这里bem.info/articles/yandex-frontend-dev
  • Yandex 在其网站和其他服务中使用 bem 中的标签选择器。
  • 您能解释一下为什么在您的主页上使用.b-center .b-tabs td 选择器吗?
  • 我不确定提到了谁的主页。如果是我的,我可以解释一下是否有链接。
  • 实际上BEM的CSS部分的目的是提供独立的块组件,这只有在避免标签选择器的情况下才有可能。你可以在这里找到解释coding.smashingmagazine.com/2012/04/16/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
  • 1970-01-01
  • 2017-10-10
相关资源
最近更新 更多