在 Firefox(和大多数其他浏览器)上缩小时,右侧栏和顶部菜单的布局会中断。侧边栏跳到页面底部。要复制此问题,请访问该站点并:
- 在浏览器视图菜单下找到
Zoom Out
并单击几次。 - 注意它如何影响菜单和侧边栏。
到目前为止,我发现的唯一解决方案是将侧边栏的宽度减小几个像素,并减小菜单列表项之一的宽度。这个虚拟修复的问题在于,当以实际大小查看站点时,可以看到菜单在宽度上缺少几个像素。
当然,必须有更好的解决方案来解决这个问题。你知道吗?
AFAIK,桌面浏览器不使用亚像素分辨率进行布局(WebKit 目前确实有一个未决的实现,但没有关于其他浏览器引擎的消息)。这就是为什么在 CSS 中调整框大小时不能使用像素的小数部分的原因。缩放仅通过一个常见的缩放因子缩放 CSS 属性,并对余数进行四舍五入(我猜它会降低值),以便布局引擎可以使用整数而不是浮点数。
除了尝试选择在缩放级别之间均匀划分的像素值之外,没有硬性解决方案。另一种方法是为容器使用基于百分比的宽度定义——这样,浏览器将为您正确地舍入数字,并且如果两个容器的共同宽度从未超过 100%(您可能需要减去十分之一或由于四舍五入,百分之一),你应该很好地进行所有缩放级别。
不要将这与 CSS3 缩放相混淆,后者确实允许您任意缩放(并且确实会导致边缘不与屏幕像素对齐),因为这不会以任何方式影响布局。
编辑:示例:使用百分比调整列的大小
#left-area { width: 66.3179%; /* 634/956 */ }
#right-area { width: 33.6820%; /* 322/956 */ }
对于顶部菜单,您可以尝试将div
两个 的包装设置ul
为position:relative
,然后使用附加的 CSS 声明将ul#mega
元素设置为。绝对定位似乎是解决此类问题的一种很好的跨浏览器方式。position:absolute
right:0
对于侧边栏,您可以设置position:absolute
和。right:0
div#sidebar
Safari问题的思考过程1:
如果顶部菜单中的“更多”菜单宽度不同,请尝试设置ul#secondary-menu
为position:relative;z-index:11;
. 然后,您可以通过在 other 的下方扫一扫,向 的li.mmore
子级添加 padding-left 以ul#mega
补偿不同缩放时不同的浏览器宽度评估,可以这么说。然后,为了加宽彩色线,将声明从子级转移到自身并相应地调整高度。li
li
border-bottom
a
li.mmore
li.mmore
当您调整浏览器的大小时,像素值必然是四舍五入的,这会导致一个问题,即sidebar
和left-area
没有足够的空间来并排放置,您可以看到它下降到页面底部。
的宽度main-content
是 956px, left-area
: 634px, sidebar
: 322px。
634 + 322 = 956。
放大时,值是
633 + 321 = 954 > 953
任何硬编码的像素值都会有这个舍入问题,考虑使用百分比。
在 head 标签中尝试给出如下内容:
<meta name="viewport" content="width=device-width, initial-scale=0.47, maximum-scale=1.0, user-scalable=1">