html - 垂直对齐不是像素完美的

标签 html css bootstrap-4 vertical-alignment

我试图在导航面板内垂直对齐标题。

但是,当我在图像查看器中检查屏幕截图时,我发现垂直对齐像素不完美。距底部 1 像素的间距。

Navigation panel Zoomed navigation panel

我做了以下事情:

    1. 尝试:让 flexbox 垂直对齐 H1 并均匀分布 底部和顶部边距。我正在使用 bootstrap 4 实用程序类。然而, 仍然存在一个像素间隙。
    1. 尝试:导航面板已明确定义50 像素的高度。我试图在等于导航栏高度的 H1 元素上设置 line-height。因此,当 font-size13px 时,我预计文本上方和底部的间距将相同 50px - 13px 等于 = 37px。这个结果,37px 应该在顶部和底部之间均匀划分 - 18,5px。但是半像素呢,它们有效吗?仍然存在问题。
    1. 尝试:将字体变大以填充 1 像素的间隙。所以 font-size 设置为 14px。 50px - 14px 等于 36px,所以我假设剩余空间将在顶部和底部间距 - 18px 之间均匀分配。但是,没有发生任何变化。

您会注意到 1 像素的字体大小在物理上并不真正匹配一个像素。

Is it possible vertically align with pixel perfection for given example? Could it be problem with used font? Is it problem with browser engine?

HTML 片段 1.try :

<nav>
      <div class="navbar navbar-expand-md p-0 pr-3 bg-dark align-items center">
            <a href="#" class="navbar-brand p-0">
                <img src="#" class="img-fluid" alt="...">
            </a>
          <div class="collapse navbar-collapse" id="navbarNav">
                <div class="navbar-nav w-100">
                    <h1 class="m-auto">
                        Air Quality Management System of the City of Olomouc
                    </h1>
                   <div class="flag-container">
                        <a class="mr-2" href="#">
                            <img class="img-fluid" src="#" alt="cs flag">
                        </a>
                        <a class="mr-2" href="#">
                            <img class="img-fluid active" src="#" alt="en flag">
                        </a>
                   </div>
               </div>
          </div>
      </div>
</nav>

HTML 片段 2.try :

<nav>
    <div class="navbar navbar-expand-md p-0 pr-3 bg-dark align-items center">
        ... abrev. ...
        <div class="collapse navbar-collapse" id="navbarNav">
            <div class="navbar-nav w-100">
                <h1 class="mx-auto my-0">
                    Air Quality Management System of the City of Olomouc
                </h1>
              ... abrev. ...
            </div>
        </div>
    </div>
</nav>

CSS 片段: 我添加的其他 css 规则,其余部分隐式来自 bootstrap 4。

nav .navbar-brand img {
    max-height: 50px;
    padding-left: .25rem;
    background-color: #f10;
}

nav h1 {
    color: #fff;
    font-size: 13px;
    font-size: .8125rem;
    font-family: 'Hind';
    letter-spacing: .15px;
    text-transform: uppercase;
    font-weight: 600;
    text-align: center;
}

2 的 CSS 片段。试试: 我添加了 line-height 等于导航栏的高度

nav h1 {
  color: #fff;
  font-size: 13px;
  font-size: .8125rem;
  font-family: 'Hind', sans-serif;
  letter-spacing: .15px;
  text-transform: uppercase;
  font-weight: 600;
  line-height: 50px;
 }

最佳答案

你有导航 h1。应该是 h1{.m-auto h1{.navbar-nav h1。 要使文本居中,请执行以下操作:

.navbar-nav h1 {
  ... your code ...
  vertical-align: middle;
 }

关于html - 垂直对齐不是像素完美的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54100633/

相关文章:

html - 100% 拉伸(stretch)选择列表,与其他内容左对齐

iphone - em 在 iPhone 浏览器上不工作

twitter-bootstrap-3 - 如果我有 Bootstrap 背景,在语义 UI 中思考?

jquery - iOS 6 选择菜单与 iOS 7 选择菜单

JavaScript 重定向不起作用

javascript - 如何在表单字段中显示页面标题?

html - Safari CSS 规则 vh-units?

html - 引导导航栏垂直显示而不是水平显示

html - 名片图像对齐

Ruby 中的 HTML 页面到 PDF 转换器?