css实现蛋糕品种选择点击切换效果代码
代码语言:html
所属分类:表单美化
代码描述: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