div+css实现照片堆叠图文幻灯片切换洗牌过渡效果代码
代码语言:html
所属分类:幻灯片
代码描述:div+css实现照片堆叠图文幻灯片切换洗牌过渡效果代码,没有用js实现,纯粹是css和div构建。
代码标签: div css 照片 堆叠 图文 幻灯片 切换 洗牌 过渡
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> *,::before,::after{ margin: 0; } @property --angle { syntax: "<angle>"; initial-value: 0deg; inherits: true; } img{ max-width: 100%; } /* Hide radio buttons */ input[type="radio"] { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } body{ background: white; min-height: 100svh; display: grid; place-content: center; margin: 0; padding: 1rem; font: 1rem system-ui; } .cards{ --img-w: 200px; --duration: 300ms; --img-easing: cubic-bezier(0.34, 1.56, 0.64, 1); width: min(100% - 4rem, 800px); margin-inline: auto; display: grid; } .card{ --cards-grid-cols: auto; --cards-grid-rows: var(--img-w) auto; --cards-grid-gap: 2rem; --cards-footer-justify: center; grid-area: 1/1; display: grid; place-items: center; grid-template-columns: var(--cards-grid-cols); grid-template-rows: var(--cards-grid-rows); gap: var(--cards-grid-gap); } @media (600px < width){ .card{ --cards-grid-cols: var(--img-w) auto; --cards-grid-rows: auto; --cards-grid-gap: 4rem; --cards-footer-justify: start; } } /* stacking order - these are updated according to which card is selected */ .card:nth-of-type(1){ z-index: var(--card-1-z,1);} .card:nth-of-type(2){ z-index: var(--card-2-z,2);} .card:nth-of-type(3){ z-index: var(--card-3-z,3);} .card:nth-of-type(4){ z-index: var(--card-4-z,4);} .card:nth-of-type(5){ z-index: var(--card-5-z,5);} .card:nth-of-type(6){ z-index: var(--card-6-z,6);} .card:nth-of-type(7){ z-index: var(--card-7-z,7);} .card-img{ width: 200px; height: 200px; aspect-ratio: 1 / 1 ; rotate: var(--angle, 0deg); border-radius: 10px; border: 3px solid #FFF; overflow: hidden; transform-origin: center; object-fit: cover; box-shadow: 0 0 5px 3px rgba(0 0 0 / .05); } input:nth-of-type(1):checked + .card ~ .card > .card-img{ animation: straighten-img-1 calc(var(--duration) * 2) forwards; animation-timing-function: var(--img-easing); } .card:has(~input:nth-of-type(2):checked) > .card-img, input:nth-of-type(2):checked + .card ~ .card > .card-img{ animation: straighten-img-2 calc(var(--duration) * 2) forwards; animation-timing-function: var(--img-easing); } .card:has(~input:nth-of-type(3):checked) > .card-img, input:nth-of-type(3):checked + .card ~ .card > .card-img{ animation: straighten-img-3 calc(var(--duration) * 2) forwards; animation-timing-function: var(--img-easing); } .card:has(~input:nth-of-type(4):checked) > .card-img, input:nth-of-type(4):checked + .card ~ .card > .card-img{ animation: straighten-img-4 calc(var(--duration) * 2) forwards; animation-timing-function: var(--img-easing); } .card:has(~input:nth-of-type(5):checked) > .card-img, input:nth-of-type(5):checked + .card ~ .card > .card-img{ animation: straighten-img-5 calc(var(--duration) * 2) forwards; animation-timing-function: var(--img-easing); } .card:has(~input:nth-of-type(6):checked) > .card-img, input:nth-of-type(6):checked + .card ~ .card > .card-img{ animation: straighten-img-6 calc(var(--duration) * 2) forwards; animation-timing-function: var(--img-easing); } .card:has(~input:nth-of-type(7):checked) > .card-img, input:nth-of-type(7):checked + .card ~ .card > .card-img{ animation: straighten-img-7 calc(var(--duration) * 2) forwards; animation-timing-function: var(--img-easing); } /* as CSS can't remove animations, we change the animation according to which checkbox is checked - all animations are the same (would be simpler with SCSS) */ @keyframes straighten-img-1 { 50%{ --angle: 0deg;} } @keyframes straighten-img-2 { 50%{ --angle: 0deg;} } @keyframes straighten-img-3 { 50%{ --angle: 0deg;} } @keyframes straighten-img-4 { 50%{ --angle: 0deg;} } @keyframes straighten-img-5 { 50%{ --angle: 0deg;} } @keyframes straighten-img-6 { 50%{ --angle: 0deg;} } @keyframes straighten-img-7 { 50%{ --angle: 0deg;} } /* ordering according to current checked card */ .cards:has(input:nth-of-type(1):checked){ --card-1-z: 7; --card-2-z: 6; --card-3-z: 5; --card-4-z: 4; --card-5-z: 3; --card-6-z: 2; --card-7-z: 1; } .cards:has(input:nth-of-type(2):checked){ --card-1-z: 6; --card-2-z: 7; --card.........完整代码请登录后点击上方下载按钮下载查看
网友评论0