高 dpi 显示器上的绝对定位元素未对齐

杰西·哈兰

我正在为我的一个班级开展一个项目,但遇到了一个奇怪的定位问题。我有两个来自 font-awesome 库的齿轮图标,带有一个文本标志。一个齿轮的尺寸更大,位置稍微离屏,而另一个位置几乎与较大的齿轮接触。在我的 chrome 笔记本电脑上,元素以默认的 16px 字体大小正确显示。当我切换到我的桌面时(带有 50 英寸 4k 电视显示器,铬设置为将字体大小增加 20 像素),齿轮不对齐。

我的问题:无论用户定义的文本大小如何,我如何定位这两个图标以使它们保持一致?

相关CSS:

div.logo i.cog-logo-small {
    font-size: 1.5em;
    top: 20px;
    left: 32px;
}

div.logo i.cog-logo, div.logo i.cog-logo-small {
    position: absolute;
}

div.logo i, div.logo a {
    color: #c06014;
}

.fa {
    display: inline-block;
    font: normal normal normal 14px/1 FontAwesome;
    font-size: inherit;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

div.logo i.cog-logo {
    font-size: 3em;
    top: -15px;
    left: -15px;
}

相关 HTML

<nav class="top-bar clearfix">
    <div class="logo">
        <a href="index.html">
            <i class="cog-logo fa fa-cog gear-spin fa-3x" aria-hidden="true"></i>
            <i class="cog-logo-small fa fa-cog gear-spin-reverse fa-2x" aria-hidden="true"></i>
            <span class="logotext">logotext</span>
        </a>
        <span class="tagline">tagline</span>
    </div>
</nav>
迈克尔·科克

问题在于固定单元 ( px) 定位。在浏览器中放大时,固定单位通常不会按预期缩放。更好的方法是使用相对单位(em%等),它们会随着缩放级别的变化而相对变化。

这是em用于您的解决方案top/left

div.logo i.cog-logo-small {
    font-size: 1.5em;
    top: 1em;
    left: 1em;
}

div.logo i.cog-logo, div.logo i.cog-logo-small {
    position: absolute;
}

div.logo i, div.logo a {
    color: #c06014;
}

.fa {
    display: inline-block;
    font: normal normal normal 14px/1 FontAwesome;
    font-size: inherit;
    text-rendering: auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

div.logo i.cog-logo {
    font-size: 3em;
    top: -.25em;
    left: -.5em;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<nav class="top-bar clearfix">
  <div class="logo">
    <a href="index.html">
      <i class="cog-logo fa fa-cog gear-spin fa-3x" aria-hidden="true"></i>
      <i class="cog-logo-small fa fa-cog gear-spin-reverse fa-2x" aria-hidden="true"></i>
      <span class="logotext">logotext</span>
    </a>
    <span class="tagline">tagline</span>
  </div>
</nav>

或者这里是另一种%结合使用transform: translate()

div.logo i.cog-logo-small {
  font-size: 1.5em;
  transform: translate(20%,20%);
}

div.logo i.cog-logo,
div.logo i.cog-logo-small {
  position: absolute;
}

div.logo i,
div.logo a {
  color: #c06014;
}

.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

div.logo i.cog-logo {
  font-size: 3em;
  transform: translate(-85%,-65%);
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<nav class="top-bar clearfix">
  <div class="logo">
    <a href="index.html">
      <i class="cog-logo fa fa-cog gear-spin fa-3x" aria-hidden="true"></i>
      <i class="cog-logo-small fa fa-cog gear-spin-reverse fa-2x" aria-hidden="true"></i>
      <span class="logotext">logotext</span>
    </a>
    <span class="tagline">tagline</span>
  </div>
</nav>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

高DPI屏幕上的Java Swing

在ubuntu 14.10上启用高dpi

高dpi屏幕上的Intellij想法

如何在高DPI显示器上运行升级的Java应用程序?

如何分别为高dpi显示器和低dpi显示器设置缩放比例?

WebStorm图标太小,无法在Windows上显示高dpi

svg图标在高DPI上显示为像素化

高DPI显示器上的div背景和边框之间的0-1px间距变化

仅使用CSS以50%的比例显示高DPI图像

IBM Domino Administrator-高DPI显示问题

关闭DLL文件上的高DPI缩放比例-Windows 10

如何使用Qt 5.6在高dpi上获得清晰的UI?

如何在高DPI屏幕上使用Xfig?

具有SDL的macOS上的电子覆盖高DPI支持

浏览器在高dpi屏幕上自动放大

如何在Matlab编译器生成的exe的高DPI设置上禁用显示缩放

启用 TWebBrowser 高 DPI 支持

如何处理每台监视器DPI感知的新Qt 5.7+高DPI应用程序的开发?

默认情况下如何激活“在高dpi设置上禁用显示比例缩放”

如何在运行python3的cefpython上设置高dpi而没有显示错误?

Windows 窗体应用程序在高 DPI 显示 VB 上显得模糊

无法使NotifyIcon加载高DPI资源以进行DPI缩放> = 150%

为什么 wxDC::GetTextExtent() 在 wxWidgets 中为高 DPI 显示返回相同的值?

Xorg中每个应用程序的窗口缩放,以实现高dpi显示

将Firefox和Thunderbird调整为高DPI触摸屏显示(视网膜)

Arch Linux是否支持高DPI笔记本电脑显示屏?

Windows 10高DPI屏幕上的WPF应用程序模糊

Windows 10上的SoapUI-高DPI / 4K缩放问题

JavaFX-在高dpi的Canvas上使用rect进行绘制时避免模糊