【发布时间】:2016-06-15 16:01:48
【问题描述】:
我正在使用 CSS,我想创建一个具有一定 ratio 的盒子,无论盒子的大小如何,它都会保持不变。但我也希望盒子如果里面有更多内容会变大。
按顺序概括:
- 仅 CSS (如果可能)
- 保留给定的纵横比
- 如果内容更多,则允许框增长(有比例)
到目前为止,在我尝试过的那些技术中,盒子的内容无法使盒子变大。相反,我唯一的选择是重叠或剪切内容。
第一种和第三种方法是占用包装器内部的空间,并且使用绝对位置将内容放置在该空间之上。 由于内容是绝对定位的,因此将其从文档流中删除。因此无法展开包裹元素。
第二个选项使用固定高度,这也不允许内容超出它。
Here is a demo using the second option. (based on viewport units)
* {margin: 0; padding: 0;}
div{
width: 50vmin; height: 50vmin;
font-size: 30px;
background: #ccc;
margin: auto;
padding: 3%;
}
<div>
<p>If you scale your window, you will see that the text does not fit into the box at some point, and therefore the text will be overlapping the box.<p>
</div>
我部分测试的其他方法:
- 对象匹配定位
- 弹性盒
据我所知,Object-Fit 只影响替换元素。 我无法使用此属性对我的 div/p 元素产生任何影响。
Flexbox 对于我的场景也不实用。 根据我目前的知识水平,flexbox 在这里没有很好的帮助。因为它主要是关于在多个项目之间建立关系。 但我不确定。也许 flexbox 中有一些我还不知道的东西。
【问题讨论】:
-
那么如果内容对于盒子来说太大了,盒子会溢出它的容器吗?
-
@zzzzBov 是的,内容溢出了盒子。
-
试试
div { font-size: 4.5vmin; } -
@TamilSelvan 好点!但我不确定有多少内容。
-
基本上,你需要 Javascript。 CSS 在设计时并未考虑纵横比。你可以伪造它,但它不是那样构建的。
标签: css aspect-ratio