이 글의 내용은 순수한 CSS를 사용하여 열기구 효과를 얻는 방법에 관한 것입니다(소스 코드 첨부). 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. .

https://github.com/comehope/front-end-daily-challenges
dom을 정의합니다. 컨테이너에는 2개의 하위 요소가 있습니다. .envelope는 우산 덮개를 나타내고, .basket은 걸이 바구니를 나타냅니다. .envelope 代表伞盖,.basket 代表吊篮:
<figure> <div> <span></span> <span></span> </div> <div> <span></span> <span></span> <span></span> <span></span> </div> </figure>
居中显示:
body {
margin: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(deepskyblue, skyblue, lightblue 20%);
}
定义容器的尺寸,子元素 .envelope 和 .basket 纵向居中布局:
.balloon {
width: 12em;
height: 19em;
font-size: 16px;
display: flex;
flex-direction: column;
align-items: center;
}
先画伞盖。
定义伞盖的尺寸:
.envelope {
position: relative;
width: inherit;
height: 16em;
}
伞盖的形状是上端为球形,下端为圆锥形,在二维平面中,圆锥在平面的投影为等腰三角形,所以我们先在上部画一个圆,再在下部画一个三角形。
先画上部的圆:
.envelope span {
position: absolute;
width: inherit;
height: 12em;
border-radius: 50%;
color: orange;
background-color: currentColor;
}
再用伪元素画出下部的等腰三角形:
.envelope span::before {
content: '';
position: absolute;
width: 0;
height: 0;
border-width: 10em 5.5em 0 5.5em;
border-style: solid;
border-color: currentColor transparent transparent transparent;
left: calc(50% - 5.5em);
top: 8.45em;
}
.envelope 下共有 2 个 <span></span> 元素,让第 2 个 <span></span> 变形、变色,使伞盖形成竖条纹的花纹:
.envelope span:nth-child(2) {
transform: scaleX(0.4);
filter: brightness(0.85) contrast(1.4);
}
隐藏 .envelope 容器外的部分,削掉三角形最下面的尖角:
.envelope {
overflow: hidden;
}
至此,伞盖完成,接下来画吊篮。
定义吊篮的尺寸:
.basket {
position: relative;
width: 2em;
height: 3em;
}
用 ::before 伪元素画出篮子:
.basket::before {
content: '';
position: absolute;
width: inherit;
height: 1.6em;
background-color: peru;
bottom: 0;
border-radius: 0 0 0.5em 0.5em;
}
用 ::after 伪元素画出篮子的顶边:
.basket::after {
content: '';
position: absolute;
width: 105%;
height: 0.3em;
background-color: saddlebrown;
left: calc((100% - 105%) / 2);
top: 1.3em;
border-radius: 0.3em;
}
.basket 下共有 4 个 <span></span>
.basket span {
position: absolute;
width: 0.1em;
height: 1.5em;
background-color: burlywood;
}중앙 디스플레이:
.basket span {
left: calc((var(--n) - 1) * 0.6em);
transform-origin: bottom;
transform: rotate(calc(var(--r) * 7deg));
}
.basket span:nth-child(1) { --n: 1; --r: -2; }
.basket span:nth-child(2) { --n: 2; --r: -1; }
.basket span:nth-child(3) { --n: 3; --r: 1; }
.basket span:nth-child(4) { --n: 4; --r: 2; }는 컨테이너의 크기, 하위 요소를 정의합니다. .envelope 및 .basket 수직 중앙 레이아웃:
.balloon {
animation: drift 2s infinite alternate;
}
@keyframes drift {
to {
transform: translateY(-5%);
}
}먼저 우산 덮개를 그립니다. 캐노피의 크기 정의:
rrreee캐노피의 모양은 2차원 평면에서 원뿔의 투영이 이등변삼각형이고 상단이 구형이고 하단이 원뿔형입니다. 그래서 먼저 윗부분에 원을 그린 다음 아랫부분에 삼각형을 그립니다.
먼저 위쪽 원을 그립니다.
.envelope 아래에 2개의 <span></span> 요소가 있습니다. 두 번째 <span></span>를 변형하고 색상을 변경하여 우산 덮개를 세로 줄무늬 패턴으로 만듭니다. 🎜rrreee🎜 .envelope 컨테이너 외부 부분을 숨기고 잘라냅니다. 삼각형 아래쪽 뾰족한 모서리: 🎜rrreee🎜이제 우산 덮개가 완성되고 걸이바구니가 그려집니다. 🎜걸이 바구니의 크기 정의: 🎜rrreee🎜::before 의사 요소를 사용하여 바구니 그리기: 🎜rrreee🎜::after 의사 요소 사용 바구니의 위쪽 가장자리를 그리려면 🎜rrreee🎜.basket 아래에 4개의 <span></span> 요소가 있으며, 이는 4개의 케이블을 수직으로 가는 선으로 설정합니다. : 🎜rrreee🎜케이블 위치를 지정하고 다양한 각도로 기울입니다. 🎜rrreee🎜마지막으로 열기구의 살짝 떠 있는 애니메이션 효과를 추가합니다. 🎜rrreee🎜완료되었습니다! 🎜🎜🎜🎜위 내용은 순수 CSS를 사용하여 열기구 효과를 얻는 방법(소스 코드 첨부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!