源码
<div class="bar">
	<input class="bar-input" type="radio" name="input" id="input_0" />
	<div class="bar-view">
		<label class="bar-button" for="input_0"></label>
	</div>
	<input class="bar-input" type="radio" name="input" id="input_1" />
	<div class="bar-view">
		<label class="bar-button" for="input_1"></label>
	</div>
	<input class="bar-input" type="radio" name="input" id="input_2" />
	<div class="bar-view">
		<label class="bar-button" for="input_2"></label>
	</div>
	<input class="bar-input" type="radio" name="input" id="input_3" />
	<div class="bar-view">
		<label class="bar-button" for="input_3"></label>
	</div>
	<input class="bar-input" type="radio" name="input" id="input_4" />
	<div class="bar-view">
		<label class="bar-button" for="input_4"></label>
	</div>
</div>
<div class="command">点击试试</div>
<style>
	html,body {
		width: 100%;
		height: 100%;
		display: flex;
		flex-direction: column;
		background: linear-gradient(to bottom right, rgba(255, 221, 74, 0.1), #fff);
	}
	*{
		box-sizing: border-box;
	}
	*:before,*:after {
		box-sizing: inherit;
	}
	.bar {
		display: flex;
		flex-direction: row-reverse;
		margin: auto auto 0;
		width: 300px;
		max-width: calc(100% - 30px);
	}
	.bar-input {
		opacity: 0;
		pointer-events: none;
		position: absolute;
		top: -9999px;
		left: -9999px;
	}
	.bar-input:checked~.bar-view:nth-child(10):after {
		transition-delay: -0.05s;
	}
	.bar-input:checked~.bar-view:nth-child(10) .bar-button:before {
		transition-delay: 0.01s;
	}
	.bar-input:checked~.bar-view:nth-child(8):after {
		transition-delay: 0.05s;
	}
	.bar-input:checked~.bar-view:nth-child(8) .bar-button:before {
		transition-delay: 0.11s;
	}
	.bar-input:checked~.bar-view:nth-child(6):after {
		transition-delay: 0.15s;
	}
	.bar-input:checked~.bar-view:nth-child(6) .bar-button:before {
		transition-delay: 0.21s;
	}
	.bar-input:checked~.bar-view:nth-child(4):after {
		transition-delay: 0.25s;
	}
	.bar-input:checked~.bar-view:nth-child(4) .bar-button:before {
		transition-delay: 0.31s;
	}
	.bar-input:checked~.bar-view:nth-child(2):after {
		transition-delay: 0.35s;
	}
	.bar-input:checked~.bar-view:nth-child(2) .bar-button:before {
		transition-delay: 0.41s;
	}
	.bar-input:checked~.bar-view:after {
		transform: scaleX(1);
	}
	.bar-input:checked~.bar-view .bar-button:before {
		transform: none;
		opacity: 1;
	}
	.bar-input:checked+.bar-view .bar-button:after {
		opacity: 1;
		animation: bouncing 0.6s cubic-bezier(0, 0, 0.74, 1.04) infinite;
	}
	.bar-view {
		display: flex;
		flex-grow: 1;
		position: relative;
	}
	.bar-view:after {
		height: 2px;
		top: calc(50% - 1px);
		transition: transform 0.06s cubic-bezier(0, 0.72, 0.58, 1);
		transform: scaleX(0);
		background: #FFB732;
		transform-origin: left;
		z-index: 1;
	}
	.bar-view:not(:last-child):before,
	.bar-view:not(:last-child):after {
		content: "";
		width: calc(100% - 24px);
		position: absolute;
		right: calc(50% + 12px);
	}
	.bar-view:not(:last-child):before {
		height: 6px;
		top: calc(50% - 3px);
		background: #3C6997;
	}
	.bar-view:not(:last-child):nth-child(2):after {
		transition-delay: 0s;
	}
	.bar-view:not(:last-child):nth-child(2) .bar-button:before {
		transition-delay: 0.06s;
	}
	.bar-view:not(:last-child):nth-child(4):after {
		transition-delay: 0.1s;
	}
	.bar-view:not(:last-child):nth-child(4) .bar-button:before {
		transition-delay: 0.16s;
	}
	.bar-view:not(:last-child):nth-child(6):after {
		transition-delay: 0.2s;
	}
	.bar-view:not(:last-child):nth-child(6) .bar-button:before {
		transition-delay: 0.26s;
	}
	.bar-view:not(:last-child):nth-child(8):after {
		transition-delay: 0.3s;
	}
	.bar-view:not(:last-child):nth-child(8) .bar-button:before {
		transition-delay: 0.36s;
	}
	.bar-view:not(:last-child):nth-child(10):after {
		transition-delay: 0.4s;
	}
	.bar-view:not(:last-child):nth-child(10) .bar-button:before {
		transition-delay: 0.46s;
	}
	.bar-button {
		display: block;
		width: 30px;
		height: 30px;
		margin: auto;
		border-radius: 50%;
		border: 3px solid #3C6997;
		position: relative;
		cursor: pointer;
		box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.3), 2px 2px 8px rgba(0, 0, 0, 0.1);
	}
	.bar-button:hover:after {
		transform: none;
		opacity: 1;
	}
	.bar-button:before,
	.bar-button:after {
		content: "";
		position: absolute;
		pointer-events: none;
	}
	.bar-button:before {
		width: 100%;
		height: 100%;
		border-radius: 50%;
		background: radial-gradient(circle at center, #FFDD4A, #FE9000);
		transform: scale(0.3);
		opacity: 0;
		transition-property: transform, opacity;
		transition-duration: 0.2s;
		transition-timing-function: cubic-bezier(0, 0.72, 0.58, 1);
	}
	.bar-button:after {
		border: 8px solid transparent;
		border-top-color: #5ADBFF;
		bottom: calc(100% + 10px);
		left: calc(50% - 8px);
		transform: translateY(-10px);
		opacity: 0;
		transition-property: transform, opacity;
		transition-duration: 0.2s;
		transition-timing-function: cubic-bezier(0, 0, 0, 1.97);
	}
	.command {
		font-family: "Ubuntu Mono", monospace;
		letter-spacing: 1px;
		margin: 30px auto auto;
		animation: fade 1s ease infinite;
	}
	@keyframes bouncing {
		0%,100% {
			transform: translateY(0);
		}
		50% {
			transform: translateY(5px);
		}
	}
	@keyframes fade {
		50% {
			opacity: 0.3;
		}
	}
</style>本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!