在 Sass 中,我们如何根据宽度的值分配高度? [复制]

Posted

技术标签:

【中文标题】在 Sass 中,我们如何根据宽度的值分配高度? [复制]【英文标题】:In Sass, how do we assign height based on a width's value? [duplicate] 【发布时间】:2014-03-01 03:18:03 【问题描述】:

我正在尝试根据浏览器的宽度值为元素的高度分配一个值。例如(我想要完成的是在双斜杠之间)...

.myDiv 
  width: 35%;
  height: // width * 1.61 //;

如何做到这一点?

【问题讨论】:

我怀疑这可以专门用 SASS 完成,因为在页面呈现之前我们不会知道 35% 的计算结果。但这可能会有所帮助:***.com/questions/5445491/… @cimmanon,它不是重复的。我的问题与 SASS 有关。 @ayjay 所以 Sass 不再编译为 CSS 了吗? Sass 必须在浏览器看到之前编译成 CSS。你如何判断 Sass 会知道特定元素的宽度是多少? @cimmanon,我正在想办法使用 SASS 的数学能力。但我想,现在想想,这行不通。 【参考方案1】:

仅供参考:

width 属性使用百分比值是指页面呈现时容器块的宽度。

而对于height 属性:

百分比是相对于高度计算的 生成框的包含块。如果包含的高度 块没有明确指定(即,它取决于内容 高度),并且该元素不是绝对定位的,该值 计算为自动。根元素上的百分比高度是相对的 到初始包含块。 - MDN.

因此,即使您可以使用 SASS 实现此目的,它也无法在浏览器上正常工作。

在 SO 上有几个解决方案,以保持盒子的纵横比:

Responsively change div size keeping aspect ratio Height equal to dynamic width (CSS fluid layout) Maintain the aspect ratio of a div with CSS Keep div height relevant to aspect ratio

【讨论】:

所以你回答不回答?没有。 @Julian 从技术上讲,答案是正确的:你不能用 height 属性来做到这一点。但是,它没有回答问题(无论如何都是重复的)。 @cimmanon 我删除了我的反对票,但我认为“没有答案”应该放在 cmets 中,而不是作为答案。我们都指出了真正解决问题的答案——也许不是 OP 所设想的那样,但应该比这个“答案”更有帮助。 它没有回答问题,但它可以帮助将 OP 指向正确的方向。我发布这个是为了提到规范,我无法通过评论来解释。 @HashemQolami 重复问题应作为重复问题关闭。【参考方案2】:

您可以将 padding-bottom 应用为百分比。然后在 div 中放置一个绝对位置的元素。

【讨论】:

【参考方案3】:

你为什么不能这样做?

.myDiv 
  $width: 35%;
  width: $width;
  padding-bottom: ($width * 1.61)

当然,您需要确保 .myDiv 相对于页面定位,换句话说,包含在另一个具有位置属性的元素中。

正如@NathanDawson 建议的那样,如果您需要适当的高度,您还可以在 myDiv 中放置另一个 DIV 并将高度设置为 100%。

【讨论】:

以上是关于在 Sass 中,我们如何根据宽度的值分配高度? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据子 SVG 内容对齐父 div 高度

scss Sass mixin具有相同的宽度和高度

css实现宽度与高度成比例

如何实现div的高度100%填充

css 高度为宽度的50%

如果一个div在宽度为百分比的情况下,如何将这个div的高度的值设置成和宽度一样