Firefox:CSS 纵横比在 Firefox 中不起作用,但在 Chrome 中起作用

Posted

技术标签:

【中文标题】Firefox:CSS 纵横比在 Firefox 中不起作用,但在 Chrome 中起作用【英文标题】:Firefox: CSS aspect ratio doesn't work in Firefox but does in Chrome 【发布时间】:2021-08-20 15:35:23 【问题描述】:

我在我的应用程序中使用display: grid。我希望网格项始终是方形的,因此,我给它们的纵横比为 1/1。在 Chrome 中,这按预期工作,但在 Firefox 中,纵横比代码似乎没有任何改变。我已经评论了这条线,看看这是否对 Firefox 有影响,它没有,但它在 Chrome 中。

我正在使用样式化组件来设置网格和网格项的样式。我的问题是因为样式组件或 CSS 与 Firefox 缺乏兼容性吗?如果有人能帮我解决这个问题,我将不胜感激。我已经研究过这个问题,但找不到任何显示修复的地方,我认为这是因为 CSS 的纵横比还是很新?

此外,该应用可以在 Mac 上的 Safari、Windows 笔记本电脑上的 Microsoft Edge 和 android 上的 Google Chrome 上正常工作。

我的代码...

网格组件样式

    export const StyledGrid = styled.div`
  width: calc(100% - 8rem);
  margin: 1rem 4rem;
  h3 
    font-size: 1.6rem;
  

  // grid things
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  grid-column-gap: 8rem;
  grid-row-gap: 8rem;

  // Grid and font sizing media queries
  @media (min-width: 1502px) 
    h3 
      font-size: 1.8rem;
    
  
  @media (max-width: 1326px) and (min-width: 1300px) 
    grid-row-gap: 6rem;
  
  @media (max-width: 1089px) 
    grid-template-columns: repeat(auto-fit, minmax(12.75rem, 1fr));
    grid-row-gap: 6rem;
    h3 
      font-size: 1.4rem;
    
  
  @media (max-width: 749px) 
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    grid-row-gap: 5.5rem;
    h3 
      font-size: 1.3rem;
    
  
  @media (max-width: 624px) 
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    grid-row-gap: 5rem;
  
  @media (max-width: 494px) 
    grid-row-gap: 4rem;
  

  @media (max-width: 410px) 
    grid-row-gap: 3.25rem;
    grid-template-columns: repeat(2, minmax(5rem, 1fr));
    h3 
      font-size: 1.2rem;
    
  

  @media (max-width: 346px) 
    h3 
      font-size: 1.1rem;
    
  
  @media (max-width: 331px) 
    h3 
      font-size: 1rem;
    
  

  @media (max-width: 319px) 
    grid-row-gap: 3rem;
    grid-template-columns: repeat(auto-fit, minmax(6rem, 1fr));
  

  // Grid column gap and margin media queries

  // Media queries
  @media (max-width: 1009px) 
    grid-column-gap: 6rem;
  
  @media (max-width: 729px) 
    grid-column-gap: 4rem;
  
  @media (max-width: 391px) 
    grid-column-gap: 3rem;
  
  @media (max-width: 370px) 
    grid-column-gap: 2rem;
  
  @media (max-width: 1299px) 
    margin: 3.25rem 4rem;
  
  @media (max-width: 650px) 
    margin: 3.25rem 2rem;
    width: calc(100% - 4rem);
  
  @media (max-width: 391px) 
    margin: 3.25rem 2rem 3.25rem 1.5rem;
    width: calc(100% - 3rem);
  
  @media (max-width: 370px) 
    margin: 3.25rem 1.5rem 3.25rem 1rem;
    width: calc(100% - 2rem);
  
`;

网格项组件样式...

const StyledRecord = styled.div`
  height: 100%;
  width: 100%;
  aspect-ratio: 1/1;

  img 
    border-radius: 1rem;
    height: 100%;
    width: 100%;
    object-fit: cover;
  

  h3 
    margin-top: 0.5rem;
    font-size: 1.6rem;
    font-weight: 500;
    letter-spacing: 0.63%;
    color: $(props) => (props.theme === "light" ? "#343434" : "white");
  
`;

【问题讨论】:

你的 Firefox 是最新的吗caniuse.com/mdn-css_properties_aspect-ratio @Paulie_D 感谢您的回复!我的 Firefox 是最新的,但你说这让我找到了问题所在。谢谢 【参考方案1】:

知道了!我所要做的就是删除图像的高度定义,这解决了我的问题。一定与 Firefox 处理与 Chrome 不同的样式的方式有关。

const StyledRecord = styled.div`
  height: 100%;
  width: 100%;
  aspect-ratio: 1/1;

  img 
    width: 100%;
    border-radius: 1rem;
    aspect-ratio: 1/1;
    object-fit: cover;
  

  h3 
    margin-top: 0.5rem;
    font-size: 1.6rem;
    font-weight: 500;
    letter-spacing: 0.63%;
    color: $(props) => (props.theme === "light" ? "#343434" : "white");
  
`;

【讨论】:

以上是关于Firefox:CSS 纵横比在 Firefox 中不起作用,但在 Chrome 中起作用的主要内容,如果未能解决你的问题,请参考以下文章

画布上的drawImage在Firefox中具有奇怪的纵横比和其他问题

如何在 Firefox 中不尊重纵横比的情况下缩放 SVG 背景图像?

CSS保持纵横比不起作用

CSS:Firefox/Internet Explorer 中 flexbox 的图像缩放问题

在 FireFox 中高度为 100% 的内联块包含图像折叠

具有持久纵横比的响应式 CSS 网格