当前位置: 首页 > 知识库问答 >
问题:

在Firefox和Safari中CSS网格呈现在父母的滚动条后面

郜彦
2023-03-14

我有一个绝对定位的面板(固定高度,溢出滚动)和一个带有方形瓷砖的网格(10列)。在Chrome中,网格呈现正确:

但是在FF/Safari中,最后一列显示在包装器的滚动条后面,这很奇怪:

我想要的是在所有浏览器中都有相同的行为(就像在Chrome中一样)。我怎么拿到这个?

css lang-css prettyprint-override">:root {
	--ck-character-grid-tile-size: 24px;
}

body * {
  box-sizing: border-box;
}

.wrapper {	
  height: 100px;
  overflow-y: auto;
  overflow-x: hidden;
  background: red;
  position: absolute;
  top: 50px;
  left: 50px;
  outline: 1px solid black;
}

.grid {
  display: grid;
  grid-template-columns: repeat(10, 1fr);
  background: blue;
}

button {
  background: yellow;
  width: var(--ck-character-grid-tile-size);
  height: var(--ck-character-grid-tile-size);
  min-width: var(--ck-character-grid-tile-size);
  min-height: var(--ck-character-grid-tile-size);
  border: 0;
  padding: 0;
  overflow: hidden;
  outline: 1px solid black;
}
<div class="wrapper">
  <div class="grid">
    <button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button><button>x</button>
  </div>  
</div>

共有1个答案

夏侯兴怀
2023-03-14

根据CSS技巧文章《防止网格井喷》,这个问题与网格的大小有关:

真正的解决办法并不那么困难--我们只需要了解正在发生的事情。我不能保证我解释这个100%准确,但我理解它的方式,网格列的最小宽度是自动的。[……]

要应用我们的修复,我们需要确保列有一个确定的最小宽度,而不是auto。

grid-template-columns: repeat( 10, minmax( 0, var(--ck-character-grid-tile-size) ) );
grid-template-columns: repeat( 10, minmax( 0, 1fr ) );
 类似资料:
  • 问题内容: 我想用CSS自定义滚动条。 我使用此WebKit CSS代码,该代码非常适合Safari和Chrome: 如何在Firefox中执行相同的操作? 我知道我可以使用jQuery轻松地做到这一点,但如果可行,我宁愿使用纯CSS做到这一点。 将不胜感激某人的专家意见! 问题答案: Firefox 64添加了对规范草案CSS滚动条模块级别1的支持,该模块添加了的两个新属性,并提供了一些如何显示

  • 如何解决FireFox在win10和win11下滚动条表现不一致的情况? win10系统下,Firefox的滚动条会占用页面宽度 win11系统下,则反之,不会占用页面宽度 我尝试过通过User-Agent来检测系统版本,但是可惜FireFox不支持 然后火狐可以修改的滚动条样式较少 查了一下出处,疑似是 Firefox 97 版本的一次针对 win11 的更新导致 我希望在能在火狐浏览器下区分当

  • 问题内容: 我设置了一个动画,可以在Chrome 上正常运行,但是不能在Safari(IOS9 iPhone或9-El Capitan)上运行,也不能在Firefox上运行。 问题答案: @asimovwasright的答案是正确的。 为了避免在CSS上发生太多重复,我将SCSS与一起使用,以遍历所有可用范围(在本例中为8) 和HTML:

  • 问题内容: 我想创建一个可以滚动但不显示滚动条的div。我已经找到了Webkit的解决方案(如下),但是如何在其他浏览器中实现呢? 我宁愿避免使用javascript插件。希望找到CSS或特定于供应商的解决方案。 问题答案: 您必须将可滚动div包裹在另一个div中,以隐藏滚动条。 。 顺便说一句:一个漂亮的jQuery小插件jScrollPane使用了相同的技术

  • 主要内容:1. overflow,2. overflow-x、overflow-y通过《 CSS盒子模型》一节的学习我们知道,页面中的每个元素都可以看作是一个矩形的盒子,我们可以使用 CSS 来控制盒子的大小、位置等等信息。默认情况下,当元素中的内容超出盒子的大小时,例如元素内容区的宽度和高度所组成的矩形区域中不足以容纳元素中的内容时,一部分内容就会溢出盒子。 1. overflow 为了能更好的处理溢出的内容,CSS 中提供了一个名为 overflow 的属性,该属性可以设置

  • 在codepen上编辑 上面的代码,在 mac 下会出现竖向滚动条,在 win 上没有。想问下为什么会出现这样的问题,以及如何解决它? 要求: box 的 overflow: auto; 属性不能去掉。 已知 lineHeight >= 42px 时滚动条消失,但是不知道为什么。 如果是不同系统对字体处理有差异的话,30px字体配30px行高或许会出现这个问题还能理解,可这差着10px呢。