在CSS Tricks上有很多不同的CSS形状- CSS的形状,我特别对三角形感到困惑:

#triangle-up {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid red;
}Run Code Online (Sandbox Code Playgroud)
<div id="triangle-up"></div>Run Code Online (Sandbox Code Playgroud)
它是如何以及为什么有效?
我想创建一个div可以随着窗口宽度的变化而改变宽度/高度的东西.
是否有任何CSS3规则允许高度根据宽度改变,同时保持其宽高比?
我知道我可以通过JavaScript实现这一点,但我更喜欢只使用CSS.