【发布时间】:2022-01-15 10:33:52
【问题描述】:
问题:中间的条比其他条高一个像素。这 不是 因为我的 css 错误,这是因为浏览器将矩形的边缘与像素网格对齐。
我尝试了几种不同的方法来制作汉堡图标:
-
绝对定位一些带有背景颜色的 div。
-
内嵌 svg 标签
-
svg 作为背景图片
-
带有顶部/底部边框和条形的背景颜色的单个 div,以及用于空格的填充和
background-clip: content-box;。
所有这些方法都有相同的问题:
在某些缩放级别/大小下,图标看起来很糟糕,因为三个矩形的大小并不完全相同。它们有时大小不同,因为浏览器喜欢将矩形的边缘与像素网格对齐。
我当然希望矩形之间的两个空间也具有相同的厚度。
我知道这是为了妥协,图标必须是 5 像素高的倍数。或者,如果您可以在交替断点处将空间扩展一个像素,而不是扩展条形时,那么它可以是不同大小的 2 倍或 3 倍。
那么有什么诀窍呢?
网络字体是否可以使用提示来使所有三个矩形都获得相同数量的厚度像素,而不管大小/分辨率/缩放如何?
我可以做一些 CSS 数学运算吗?
我真的希望我不必让 JavaScript 尝试检测缩放级别的变化。
编辑:现场演示
var hamburgerIconEl = document.getElementById('hamburgerIcon');
var fontSizeEl = document.getElementById('fontSize');
fontSizeEl.addEventListener('input', function (e) {
hamburgerIconEl.style.fontSize = '' + (8 + parseFloat(fontSizeEl.value) / 100) + 'px';
});
.body {
background: white;
}
#hamburgerIcon {
box-sizing: border-box;
display: inline-block;
height: 1.7ex;
width: 2.04ex;
border-width: .34ex 0;
border-style: solid;
border-color: black;
background-clip: content-box;
padding: .34ex 0;
background-color: black;
}
<p>Change the font size, watch the hamburger icon, see how there are a lot of sizes in which the bars don't all have the same thickness and/or spacing.</p>
<div>
<input type="range" id="fontSize" min="0" max="1000" value="0">
<label for="volume">Font Size</label>
</div>
<div>
<div id="hamburgerIcon" style="font-size: 8px"></div> Menu
</div>
【问题讨论】:
-
您可以发布您的代码以便我们提供帮助吗?我们不知道你在做什么。
-
我没有任何代码可以产生所需的结果。如果您知道方法,请发布。
-
我添加了一个实时代码 sn-p,它带有一个可以缩放图标的滑块,因此您可以看到它在某些尺寸上看起来不错,而在其他尺寸下看起来很差。请注意,这取决于屏幕分辨率/缩放级别,因此我不能只选择适合我屏幕的尺寸并期望它在任何地方看起来都不错。
-
显然你没有产生你想要的结果的代码......或者你不会寻求帮助:) sn-p 是我所要求的,因为我们可以测试现在就可以了。