原生js+css实现卡通风格待办事项应用代码
代码语言:html
所属分类:其他
代码描述:原生js+css实现卡通风格待办事项应用代码
代码标签: 原生 js css 卡通 风格 待办 事项 应用 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
@import url('https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&display=swap');
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
--add-todo-active: 0;
min-height: 100vh;
background-color: #222;
display: grid;
font-family: Poppins, sans-serif;
}
:root {
--hue: 20;
--accent: hsl(var(--hue), 80%, 50%);
--dark-accent: hsl(var(--hue), 100%, 5%);
--light-accent: hsl(var(--hue), 100%, 95%);
}
.add-todo {
--active: 0;
position: absolute;
top: 0;
left: 50%;
translate: -50% 0;
width: max(250px, calc(80vmin * var(--active)));
height: max(50px, calc(150px * var(--active)));
display: block;
border: none;
background-color: transparent;
overflow: visible;
transition: top .5s, width .5s, height .5s, translate .5s;
z-index: 10;
}
.add-todo::before,
.add-todo::after {
content: '';
position: absolute;
height: 50px;
aspect-ratio: 1;
background-color: var(--accent);
left: -50px;
top: 0;
z-index: 0;
mask:
radial-gradient(circle 25px, #0000 24px, #000 25px),
linear-gradient(45deg, #000 52px, #0000 50px);
mask-composite: subtract;
clip-path: inset(0 0 0 25px);
}
.add-todo::after {
left: 100%;
mask:
radial-gradient(circle 25px, #0000 24px, #000 25px),
linear-gradient(-45deg, #000 52px, #0000 50px);
mask-composite: subtract;
clip-path: inset(0 25px 0 0);
}
.add-todo .inner {
position: relative;
width: 100%;
height: 100%;
background-color: var(--accent);
padding: 1rem 2rem;
border-radius: 0 0 25px 25px;
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 50px 1fr;
overflow: hidden;
transition: border-radius .5s;
border-bottom: 3px solid black;
}
.add-todo header {
display: flex;
align-items: center;
justify-content: center;
}
.add-todo header h1 {
color: var(--light-accent);
font-weight: 300;
display: flex;
align-items: center;
justify-content: center;
}
.add-todo header h1 svg {
width: 50px;
aspect-ratio: 1;
opacity: 1;
}
.add-todo .todo-input-section {
display: flex;
}
.add-todo .todo-input-section .todo-input-wrapper {
display: flex;
width: 100%;
align-items: center;
}
.add-todo .todo-input-section .todo-input-wrapper .todo-input {
width: 100%;
background-color: transparent;
border: none;
font-family: Poppins, sans-serif;
color: var(--dark-accent);
font-size: 1.3rem;
}
.add-todo .todo-input-section .todo-input:is(:active, :focus-within) {
outline: none;
}
.add-todo .todo-input-section .todo-input::placeholder {
color: rgba(255 255 255 / .3);
}
.add-todo .todo-input-section .todo-input-wrapper .add-todo-btn {
width: 50px;
height: 50px;
background-color: transparent;
border: none;
cursor: pointer;
color: var(--dark-accent);
transition: opacity .3s, scale .1s;
}
.add-todo-btn:active {
opacity: .7;
scale: 1.1;
}
.add-todo-btn svg {
width: 100%;
height: 100%;
}
.add-todo:popover-open,
body:has(.add-todo:popover-open) {
--active: 1;
--add-todo-active: 1;
}
.add-todo [popovertarget] {
position: absolute;
width: calc(100% * (1 - var(--active)));
height: calc(100% * (1 - var(--active)));
top: 50%;
left: 50%;
translate: -50% -50%;
background-color: var(--accent);
background-clip: padding-box;
opacity: calc(1 - var(--active));
border: 3px solid transparent;
border-radius: 25px;
overflow: hidden;
font-family: Poppins, sans-serif;
font-size: 1.2rem;
font-weight: 700;
letter-spacing: -1px;
word-spacing: 2px;
color: var(--dark-accent);
cursor: pointer;
transition: width .5s, height .5s, translate .5s, opacity .5s;
}
[popover]:popover-open::backdrop {
background-color: rgba(0 0 0 / .6);
}
[popover]::backdrop {
background-color: transparent;
transition: background-color .3s allow-discrete;
}
@starting-style {
[popover]:popover-open::backdrop {
background-color: transparent;
}
}
.todos {
--margin-top: 50px;
--has-todos: 0;
position: relative;
width: 100%;
height: calc(100% - (var(--margin-top) + (var(--add-todo-active) * 100px)));
margin-top: calc(var(--margin-top) + (var(--add-todo-active) .........完整代码请登录后点击上方下载按钮下载查看
















网友评论0