Для создания фоновых узоров (треугольник, трапеция и т. Д. c.) Я вижу, что многие разработчики полагаются на SVG. Сегодня я столкнулся с техникой, которую не совсем понимаю.
Масштабированием такой формы:
и применяя height: 100%
, а также transform-origin
, создается треугольник. Начальной точкой треугольника всегда является нижний левый угол содержащего элемента. Результат приятный и отзывчивый, но я понятия не имею, почему это работает с точки зрения геометрии c.
Я создал Codepen для демонстрации.
.shape {
position: absolute;
width: 100%;
}
.shape-img {
padding-bottom: 10rem;
overflow: hidden;
background: yellow;
position: inherit;
width: inherit;
}
.shape-img > svg {
position: inherit;
height: 100%;
width: inherit;
transform: scale(2);
transform-origin: top center;
}
.position-relative {
position: relative;
}
<div class="position-relative">
<div class="shape">
<div class="shape shape-img">
<svg viewBox="0 0 100 50" preserveAspectRatio="none"><path d="M0 25h25L75 0h25v50H0z" fill="currentColor"></path></svg>
</div>
</div>
</div>
<br />
<br />
<!--
<svg viewBox="0 0 100 50" preserveAspectRatio="none"><path d="M0 25h25L75 0h25v50H0z" fill="currentColor"></path></svg>
-->
1. Как этот подход гарантирует, что нижний левый угол находится внизу содержащего элемента?
2. Как этот подход гарантирует, что пользователь увидит треугольник независимо от размера экрана?