완전히 반응하는 CSS 접힌 리본
코드 구조:
<div class="container" data-ribbon="Ribbon content"></div>
예, 데이터 속성으로 리본 컨텐츠가 있는 하나만
div
..container {
--d:6px; /* folded part */
--c:blue; /* color */
--f:16px; /* ribbon font-size */
position: relative;
}
.container::before {
content: attr(data-ribbon);
font-size:var(--f);
/* I : position & coloration */
position: absolute;
top: 0;
right: 0;
transform: translate(29.29%, -100%) rotate(45deg);
transform-origin: bottom left;
padding: 5px 35px calc(var(--d) + 5px);
background: linear-gradient(rgba(0,0,0,0.5) 0 0) bottom/100% var(--d) no-repeat var(--c);
/* II : clipping */
clip-path: polygon(0 0,100% 0,100% 100%,calc(100% - var(--d)) calc(100% - var(--d)),var(--d) calc(100% - var(--d)) , 0 100%);
/* III : masking */
-webkit-mask:
linear-gradient( 135deg, transparent calc(50% - var(--d)*0.707),#fff 0) bottom left,
linear-gradient(-135deg, transparent calc(50% - var(--d)*0.707),#fff 0) bottom right;
-webkit-mask-size:300vmax 300vmax;
-webkit-mask-composite: destination-in;
mask-composite: intersect;
}
위치 및 색상
두 개의 레이어를 사용하여 요소를 채색합니다. 기본 색상과 접힌 부분의 하단에 검정색 오버레이. 그런 다음 오른쪽 상단 모서리에 배치합니다.
이제 올바른 배치를 위해 변환을 적용하고 반응성의 마법이 여기에 있습니다(네,
29.29%
값입니다)이해하기 쉬운 일부 기하학
29.29%
위에서 우리는 다음 공식을 얻습니다.
cos(45deg) = a/w
여기서 w
는 요소 너비입니다.x = w - a = w - w*cos(45deg) = w*(1-cos(45deg) = w*(1-0.70710678)
그래서
x = 0,29289322*w ~ 29.29%
깎는
clip-path
를 사용하여 하단에 접힌 부분을 만듭니다. clip-path:
polygon(
0 0, /* a */
100% 0, /* b */
100% 100%, /* c */
calc(100% - var(--d)) calc(100% - var(--d)), /* x */
var(--d) calc(100% - var(--d)), /* y */
0 100% /* d */
);
마스킹
마지막 터치는 두 개의 마스크 레이어를 사용하여 모서리를 자르는 것입니다. 여기서 트릭은 내부에 진단 기울기가 있는 큰 사각형을 고려하고 접힌 부분을 고려하여
50%
에서 자릅니다.한 모서리에 대한 설명을 위한 그림:
다른 모서리에 대해서도 동일한 작업을 수행하고
mask-composite: intersect
를 사용하여 두 마스크 레이어의 교차점을 고려합니다.그게 다야!
변수와 콘텐츠를 조정하여 리본을 제어하기만 하면 됩니다. 변형과 위치를 약간 조정하여 왼쪽으로 쉽게 이동할 수 있습니다.
.left::before {
left:0;
right:auto;
transform: translate(-29.29%, -100%) rotate(-45deg);
transform-origin: bottom right;
}
투명한 테두리를 추가하고 배경 클립을 사용하여 도형 주위에 나타나는 잘못된 윤곽선을 방지합니다.
Reference
이 문제에 관하여(완전히 반응하는 CSS 접힌 리본), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/this-is-learning/fully-responsive-css-folded-ribbon-11h5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)