js+css实现可调参数折叠文字段落手风琴效果代码
代码语言:html
所属分类:布局界面
代码描述:js+css实现可调参数折叠文字段落手风琴效果代码,tweakpane可调节暗黑主题跟随、文字入场东动画时间参数设置。
代码标签: js css 可调 参数 折叠 文字 段落 手风琴
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@import 'normalize.css' layer(normalize);
@layer normalize, base, demo;
@layer demo {
summary {
width: 100%;
padding-block: 1rem;
border-bottom: 1px solid canvasText;
}
summary:focus-visible {
outline-offset: 4px;
outline-color: red;
}
details span {
display: inline-block;
width: 100%;
overflow: hidden;
font-weight: 300;
transition-duration: 1s;
padding-block: 1rem;
}
details {
width: 280px;
}
details::details-content {
overflow: hidden;
opacity: 0;
height: 0;
transition: content-visibility, opacity, height;
transition-behavior: allow-discrete;
transition-duration: calc(var(--duration, 0.5) * 1s);
-webkit-mask: linear-gradient(#000 calc(100% - 1rem), #0000);
mask: linear-gradient(#000 calc(100% - 1rem), #0000);
}
[open]::details-content {
height: calc-size(auto);
opacity: 1;
}
summary {
display: flex;
font-weight: 600;
cursor: pointer;
position: relative;
padding-block: 1rem;
}
summary::after {
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='currentColor' %3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19.5 8.25l-7.5 7.5-7.5-7.5' /%3E%3C/svg%3E%0A");
position: absolute;
top: 50%;
right: 0;
width: 20px;
translate: 0 -35%;
transition: scale calc(var(--duration, 0.5) * 1s);
transform-origin: 50% 40%;
}
[data-theme='dark'] summary::after {
filter: invert(1);
}
@media (prefers-color-scheme: dark) {
summary::after {
filter: invert(1);
}
}
details[open] summary::after {
/* rotate: -180deg; */
scale: -1;
}
}
@layer base {
*,
*:after,
*:before {
box-sizing: border-box;
}
body {
display: grid;
place-items: center;
min-height: 100vh;
font-family: 'SF Pro Text', 'SF Pro Icons', 'AOS Icons', 'Helvetica Neue',
Helvetica, Arial, sans-serif, system-ui;
}
body::before {
--size: 45px;
--line: color-mix(in lch, canvasText, transparent 70%);
content: '';
height: 100vh;
width: 100vw;
position: fixed;
background: linear-gradient(
90deg,
var(--line) 1px,
transparent 1px var(--size)
)
50% 50% / var(--size) var(--size),
line.........完整代码请登录后点击上方下载按钮下载查看
网友评论0