[005]-css实现热气球

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strongbill/article/details/83115273

热气球

效果预览

https://codepen.io/strugglingBoy/pen/VEzEqJ

代码下载

https://github.com/enstrongbill/daily-frontend-exercise/tree/master/025-hot-air-balloon


代码解读

热气球由热气袋和篮子所组成,.envelope里面的第一个span标签是热气袋的制作,热气袋是由一个圆形和一个等腰三角形制作出来的,等腰三角形的顶角因为overlflow:hidden而给切掉(隐藏)而形成了梯形的样子。第二个span是热气袋子内部的纹理制作。.basket中的四个span标签是篮子上面的四个绳子的制作

1.html代码

<div class="hot-air-balloon">
	<div class="envelope">
		<span></span>
		<span></span>
	</div>
	<div class="basket">
		<span></span>
		<span></span>
		<span></span>
		<span></span>
	</div>
</div>

2.css代码

蓝天背景的制作

body {
	margin: 0;
	height: 100vh;
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(deepskyblue, skyblue, lightblue 20%);
}

热气袋的制作

.envelope span {
	position: absolute;
	width: 100%;
	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 span:nth-child(2) {
	transform: scaleX(0.4);
	filter: brightness(0.85) contrast(1.4);
}

篮子的制作

.basket::before {
	content: '';
	box-shadow: inset 0 .3em saddlebrown;
	position: absolute;
	width: 100%;
	height: 1.6em;
	background-color: peru;
	bottom: 0;
	border-radius: 0 0 0.5em 0.5em;
}

绳索的制作

.basket span {
	position: absolute;
	width: 0.1em;
	height: 1.5em;
	background-color: burlywood;
	left: calc((var(--n) - 1) * 0.6em);
	transform-origin: bottom;
	transform: rotate(calc(var(--r) * 7deg));
}

热气球上下飘动的动画制作

@keyframes drift {
	to {
		transform: translateY(-5%);
	}
}

总结

三角形和圆形的相切那里稍微有点麻烦(不然到时认真看的时候有点怪怪的),这时需要借助高中的数学知识,不介意可以直接用f12来进行微调
公式
习题

最后大功告成

猜你喜欢

转载自blog.csdn.net/strongbill/article/details/83115273
005