css实现蛋糕品种选择点击切换效果代码

代码语言:html

所属分类:表单美化

代码描述:css实现蛋糕品种选择点击切换效果代码

代码标签: css 蛋糕 品种 选择 点击 切换

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
<style>
:root {
	--zoom:100;
	--animation-speed:150;
	--animation-state:running;
	--float-duration:1.4s;
	--tilt-duration:1.2s;
	--slide-duration:.6s;
	--slide-max-exposure:72%;
	--mass:10.5rem;
	--cake-initial-position:46%;
	--cake-end-position:50%;
	--cake-tilt:-2deg;
	--cake-initial-shadow:.8;
	--cake-end-shadow:1;
	--cake-shadow-rotate:40deg;
	--cake-shadow-offset:230rem;
	--cake-shadow-blur:15rem
}
@-webkit-keyframes cake-shadow {
	to {
	transform:var(--shadow-transform) scale(var(--cake-end-shadow))
}
}@keyframes cake-shadow {
	to {
	transform:var(--shadow-transform) scale(var(--cake-end-shadow))
}
}@-webkit-keyframes cake-float {
	to {
	top:var(--cake-end-position)
}
}@keyframes cake-float {
	to {
	top:var(--cake-end-position)
}
}@-webkit-keyframes cake-tilt {
	to {
	transform:rotate(var(--cake-tilt))
}
}@keyframes cake-tilt {
	to {
	transform:rotate(var(--cake-tilt))
}
}:root {
	--unit:1vmin;
	--available-screen-min:665;
	--px:calc(var(--zoom) *(var(--unit) / var(--available-screen-min)));
	--clip-path-top:polygon(75% 21%,91.7% 59%,100% 100%,0 100%,55.3% 0);
	--clip-path-side:polygon(0% .3%,100% 1.2%,93.7% 91%,5.6% 98.4%)
}
html,body {
	height:100%;
	margin:0;
	overflow:hidden;
	touch-action:none;
	background-color:#fff
}
* {
	font-size:calc(1 * var(--px))
}
label {
	font-size:0!important
}
.slide,.slide div,.slide div::before,.slide div::after {
	transform-style:preserve-3d;
	background-repeat:no-repeat
}
label {
	order:2
}
input {
	order:1
}
input[type="radio"] {
	border-width:0!important;
	clip:rect(1px,1px,1px,1px)!important;
	height:1px!important;
	overflow:hidden!important;
	padding:0!important;
	position:absolute!important;
	white-space:nowrap!important;
	width:1px!important
}
#controls {
	position:absolute;
	font-size:0;
	z-index:500;
	left:50%;
	bottom:max(6rem,90px);
	transform:translateX(-50%);
	width:100%;
	display:flex;
	place-content:center
}
#controls label {
	--diameter:max(64rem,28px);
	cursor:pointer;
	position:relative;
	width:var(--diameter);
	height:var(--diameter);
	box-sizing:border-box;
	display:inline-block;
	margin:0;
	transform:scale(1);
	transition:all cubic-bezier(0.68,-0.55,0.27,1.55) 200ms;
	-webkit-tap-highlight-color:transparent
}
#controls label::before {
	content:"";
	position:absolute;
	left:0;
	top:0;
	width:100%;
	height:100%;
	border-radius:50%;
	background-color:var(--p-color-1);
	transform:scale(var(--s,0.8));
	transition:inherit;
	box-shadow:var(--sb,0 0 0 0 transparent),0 0 0 0 transparent
}
@media(orientation:landscape) {
	#controls {
	--landscape-factor:1;
	left:30rem;
	bottom:50%;
	transform:translateY(50%);
	width:auto;
	height:100%;
	flex-direction:column
}
}@media(orientation:portrait) {
	#controls label {
	margin-inline:3rem!important
}
}label:nth-of-type(1) {
	--p-color-2:hsl(42,100%,91%);
	--p-color-1:hsl(3,74%,28%)
}
label:nth-of-type(2) {
	--p-color-1:hsl(24,100%,56%);
	--p-color-2:hsl(29,88%,77%)
}
label:nth-of-type(3) {
	--p-color-2:#ffe6a3;
	--p-color-1:hsl(18,100%,71%)
}
label:nth-of-type(4) {
	--p-color-1:hsl(18,62%,27%);
	--p-color-2:hsl(19,62%,37%)
}
label:nth-of-type(5) {
	--p-color-1:hsl(274,45%,40%);
	--p-color-2:hsl(21,41%,87%)
}
label:nth-of-type(6) {
	--p-color-1:hsl(157,24%,29%);
	--p-color-2:hsl(42,84%,78%)
}
main,.slide {
	position:absolute;
	left:0;
	top:0;
	width:100%;
	height:100%
}
.slide {
	transition:all ease-out calc(var(--slide-duration) *(100 / var(--animation-speed)));
	transition-delay:calc(var(--slide-duration) *(100 / var(--animation-speed)));
	-webkit-clip-path:circle(0% at center);
	clip-path:circle(0% at center)
}
.flavor:nth-of-type(1):checked ~ main>div:nth-of-type(1),.flavor:nth-of-type(2):checked ~ main>div:nth-of-type(2),.flavor:nth-of-type(3):checked ~ main>div:nth-of-type(3),.flavor:nth-of-type(4):checked ~ main>div:nth-of-type(4),.flavor:nth-of-type(5):checked ~ main>div:nth-of-type(5),.flavor:nth-of-type(6):checked ~ main>div:nth-of-type(6) {
	transition-delay:0ms;
	-webkit-clip-path:circle(var(--slide-max-exposure) at center);
	clip-path:circle(var(--slide-max-exposure) at center);
	z-index:100
}
.flavor:checked ~ #controls label {
	opacity:.6
}
.flavor:nth-of-type(1):checked ~ #controls label:nth-of-type(1),.flavor:nth-of-type(2):checked ~ #controls label:nth-of-type(2),.flavor:nth-of-type(3):checked ~ #controls label:nth-of-type(3),.flavor:nth-of-type(4):checked ~ #controls label:nth-of-type(4),.flavor:nth-of-type(5):checked ~ #controls label:nth-of-type(5),.flavor:nth-of-type(6):checked ~ #controls label:nth-of-type(6) {
	--s:1;
	--sb:inset 0 0 0 max(2rem,2px) rgba(0,0,0,0.2);
	opacity:1;
	margin-block:calc(var(--landscape-factor,0) * 19rem)
}
.flavor:nth-of-type(1):focus-visible ~ #controls label:nth-of-type(1)::before,.flavor:nth-of-type(2):focus-visible ~ #controls label:nth-of-type(2)::before,.flavor:nth-of-type(3):focus-visible ~ #controls label:nth-of-type(3)::before,.flavor:nth-of-type(4):focus-visible ~ #controls label:nth-of-type(4)::before,.flavor:nth-of-type(5):focus-visible ~ #controls label:nth-of-type(5)::before,.flavor:nth-of-type(6):focus-visible ~ #controls label:nth-of-type(6)::before {
	box-shadow:var(--sb),0 0 9rem 1rem var(--p-color-1)
}
.pastry,.shadow {
	position:absolute;
	left:50%
}
.slide-redvelvet {
	background-color:#ffcdb2;
	--color-shadow:#e8ab8a
}
.slide-cheese {
	background-image:radial-gradient(circle at center,#fff1ea,#e8dad3);
	--color-shadow:#d4c2ba
}
.slide-strawberry {
	background-color:#ffc2a4;
	--color-shadow:rgba(255,97,82,0.3)
}
.slide-chocolate {
	background-color:hsl(34,47%,86%);
	--color-shadow:hsl(35,46%,76%)
}
.slide-blueberry {
	background-color:white;
	--color-shadow:hsl(0,0%,72%)
}
.slide-lemon {
	background:#eee;
	--color-shadow:hsl(0,0%,70%)
}
.pastry {
	background-color:blue;
	border-radius:50%;
	top:var(--cake-initial-position);
	width:var(--mass);
	height:var(--mass);
	transform:rotate(0);
	-webkit-animation:cake-float ease-in-out calc(var(--float-duration) *(100 / var(--animation-speed))) alternate infinite,cake-tilt ease calc(var(--tilt-duration) *(100 / var(--animation-speed))) alternate infinite;
	animation:cake-float ease-in-out calc(var(--float-duration) *(100 / var(--animation-speed))) alternate infinite,cake-tilt ease calc(var(--tilt-duration) *(100 / var(--animation-speed))) alternate infinite;
	-webkit-animation-play-state:var(--animation-state);
	animation-play-state:var(--animation-state)
}
.shadow {
	top:calc(50%+var(--cake-shadow-offset));
	width:280rem;
	height:75rem;
	border-radius:50%;
	background:var(--color-shadow);
	--shadow-transform:translate(-50%,-50%) rotateX(var(--cake-shadow-rotate));
	transform:var(--shadow-transform) scale(var(--cake-initial-shadow));
	filter:blur(var(--cake-shadow-blur));
	-webkit-animation:cake-shadow ease-in-out calc(var(--float-duration) *(100 / var(--animation-speed))) alternate infinite;
	animation:cake-shadow ease-in-out calc(var(--float-duration) *(100 / var(--animation-speed))) alternate infinite;
	-webkit-animation-play-state:var(--animation-state);
	animation-play-state:var(--animation-state)
}
.slide .top {
	position:absolute;
	left:-166.2rem;
	bottom:7.5rem;
	width:347.6rem;
	height:140rem;
	transform:rotate(-18.5deg);
	transform-origin:left bottom
}
.slide-redvelvet .top::before,.slide-redvelvet .top::after,.slide-redvelvet .fruit::before,.slide-redvelvet .fruit::after,.slide-redvelvet .fruit .cream::before,.slide-redvelvet .fruit .cream::after,.slide-redvelvet .cherry-base::before,.slide-redvelvet .cherry-base::after,.slide-redvelvet .cherry-base .gloss::before,.slide-redvelvet .cherry-base .gloss::after,.slide-redvelvet .side::after {
	content:"";
	position:absolute
}
.slide-redvelvet .cherry-top,.slide-redvelvet .fruit,.slide-redvelvet .fruit .cream,.slide-redvelvet .cherry-base,.slide-redvelvet .side,.slide-redvelvet .side .border,.slide-redvelvet .side .stripes,.slide-redvelvet .side .cream {
	position:absolute
}
.slide-redvelvet .side .border,.slide-redvelvet .side .stripes,.slide-redvelvet .side .cream {
	left:0
}
.slide-redvelvet .top::before {
	left:0;
	bottom:0;
	width:100%;
	height:126rem;
	background-image:linear-gradient(hsl(45,100%,85%),hsl(2,79.7%,29%)),linear-gradient(hsl(45,100%,95%),hsl(45,100%,93%));
	background-size:100% 6rem,100% 100%;
	background-position:left bottom;
	-webkit-clip-path:var(--clip-path-top);
	clip-path:var(--clip-path-top)
}
.slide-redvelvet .top::after {
	right:61rem;
	top:46rem;
	width:159rem;
	height:77rem;
	background-color:hsl(22,83.3%,92.9%);
	transform:rotate(1deg);
	filter:blur(16rem);
	border-radius:50%
}
.slide-redvelvet .cherry-top {
	left:85rem;
	top:27rem;
	width:53rem;
	height:77rem;
	border-radius:50%;
	transform:rotate(14deg);
	box-shadow:-4rem 0 0 0 hsl(2.7,73.7%,29.8%),-6rem 0 0 0 hsla(349,82%,49%,0.1)
}
.slide-redvelvet .fruit {
	right:65rem;
	top:-26rem;
	width:164rem;
	height:158rem;
	transform:rotate(18.5deg) .........完整代码请登录后点击上方下载按钮下载查看

网友评论0