不同尺寸的流体宽度元素的正确纵横比

Posted

技术标签:

【中文标题】不同尺寸的流体宽度元素的正确纵横比【英文标题】:Correct aspect ratio on fluid width elements of different sizes 【发布时间】:2015-02-06 00:06:51 【问题描述】:

我有以下响应模式:

DEMO

在演示中,所有块都具有相同的高度,但宽度可以是 25% 或 50%(它在较低的分辨率下会发生变化,但在这种情况下不相关)。由于宽度是流动的,为了保持纵横比,我使用了padding hack。我的问题是为双宽度元素设置正确的填充大小。

为了计算常规元素的填充,我使用公式 x/y 中的百分比,其中 x 是高度,y 是基于设计模型的宽度。

要计算双倍尺寸元素的百分比,我使用公式 x/(2*y + 2*z),其中 z 是元素之间的间距大小(演示示例中为 6px)。

在我开始调整窗口大小之前,这段代码似乎可以正常工作,并且在某些点上布局中断,因为正常和双倍大小的元素具有不同的高度。我怀疑这是因为浏览器计算百分比值的方式。所以我的问题是:是否可以在我的代码中调整计算以始终获得正确的纵横比,而不管元素宽度如何?

相关代码:

HTML

<ul class="u-cf">
  <li class="double"></li>
  <li></li>
  <li></li>
  <li class="double"></li>
  <li></li>
  <li></li>
</ul>

CSS (Sass)

ul 
  margin: 0;
  padding: 6px;
  list-style: none;
  clear: both;


li 
  position: relative;
  padding: 6px;
  width: 25%;
  float: left;
  &:before 
    content: "";
    padding-top: percentage(280/405);
    display: block;
    height: 0;
  


.double  
  width: 50%; 
  &:before 
    padding-top: percentage(280/822); // 2*405px + 2*6px
  

【问题讨论】:

我感觉您可能需要更改您的设计才能使其正常工作。您是否尝试过增加使用的小数位数(参见:***.com/questions/7672473/…)? 是的,我尝试将百分比设置为小数点后 10 位,然后只有一位。我两种情况下布局中断,仅在不同的分辨率下。 【参考方案1】:

好的,我不得不调整标记,但它可以工作,在里面使用跨度。 对于边距,我使用了 calc 函数。

<ul class="u-cf">
    <li class="double"><span></span></li>
    <li><span></span></li>
    <li><span></span></li>
    <li class="double"><span></span></li>
    <li><span></span></li>
    <li><span></span></li>
</ul>

在此处查看笔: http://codepen.io/bekreatief/pen/MYKBgE?editors=110

【讨论】:

谢谢,即使我将断点上的容器宽度更改为 33.33% 和 66.66% 并且我已经在里面有绝对定位元素以获取内容,这仍然有效。我认为将流体宽度与固定宽度填充混合会导致浏览器出现问题。 是的,浏览器通常不喜欢这样。很高兴它解决了你的问题:)

以上是关于不同尺寸的流体宽度元素的正确纵横比的主要内容,如果未能解决你的问题,请参考以下文章

计算最佳相机预览尺寸的正确方法保持纵横比

为啥传感器尺寸的纵横比和图像分辨率的纵横比不同?

使用“Vstack”将图像大小调整为屏幕宽度,同时保持纵横比

Iphone X 的纵横比问题

嵌入具有正确纵横比的 Youtube/Vimeo 视频

缩放 HTML5 画布宽度保留 w/h 纵横比