前端艺术之毛玻璃-倾斜-日历

news/2024/11/29 0:54:07/

前端艺术之毛玻璃-倾斜-日历

  • 描述
  • 项目
      • 效果
      • index.html
      • index.css

描述

项目描述
开发语言HTML、JavaScript、CSS
dyCalendarJS、vanilla-tilt
Edge108.0.1462.54 (正式版本) (64 位)

该项目中需要使用到的库有:

  1. dyCalendarJS
    vanilla-tilt.js 是 JavaScript 中的一个平滑的 3D 倾斜库。
  2. vanilla-tilt
    dyCalendarJS 是一个用于创建日历的 JavaScript 库,您可以在博客和网站中免费使用它。

如果你在观看本篇文章前并没有对这两个库进行了解,欢迎移步至我的另外两篇文章进行学习:

  1. JavaScript 库之 vanilla-tilt(一个平滑的 3D 倾斜库)
  2. JavaScript 库之 dyCalendarJS(日历)

项目

该项目文件中我已对代码进行了注释。如遇不懂的地方,请尝试查看相关注释。

效果

效果

效果

index.html

<!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"><title>毛玻璃-倾斜-日历</title><!-- 导入自定义 CSS 文件 --><link rel="stylesheet" href="./index.css"><!-- 导入 dycalendar.css --><link rel="stylesheet" href="../dycalendar.min.css">
</head>
<body><div id="calendar" class="dycalendar-container"></div><!-- 导入 dycalendar.js --><script src="../dycalendar.min.js"></script><!-- 导入 vanilla-tilt.js --><script src="../vanilla-tilt.js"></script><script>// 绘制日历dycalendar.draw({target: '#calendar',   // 指定用于创建日历的 HTML 容器type: 'month',   // 设置日历的类型prevnextbutton: 'show',   // 显示 "<" 及 ">" 按钮highlighttoday: true   // 高亮显示当前日期})// 为目标元素添加倾斜效果VanillaTilt.init(document.querySelector('#calendar'), {target: '#calendar',   // 指定需要添加倾斜效果的目标元素scale: 0.8,   // 鼠标悬停于目标元素上时,目标元素的放缩倍数glare: true,   // 是否设置反光效果'max-glare': 0.6   // 设置反光效果的强度})</script>
</body>
</html>

index.css

*{/* 去除元素默认的内外边距 */margin: 0px;padding: 0px;/* 设置边框时将压缩内容区域,而不会向外扩张。也就是说,为某个元素设置边框并不会改变其宽高。*/box-sizing: border-box;
}body{/* 显示区域的最小高度为显示窗口的高度 */min-height: 100vh;/* 设置该元素内部元素居中显示 */display: flex;justify-content: center;align-items: center;/* 设置该元素的背景颜色 */background-color: #161623;
}body::before{/* 若需要正常使用伪元素,必须为其设置 content 属性 */content: '';width: 400px;height: 400px;/* 设置颜色渐变效果 */background: linear-gradient(#ffc107,#e91e63);/* 设置边框圆角,当该属性的值为 50% 时元素边框将显示为一个圆 */border-radius: 50%;/* 为该元素设置绝对定位,阻止该元素遮挡日历(定位元素可以设置 z-index 来调节显示顺序,z-index 的值越高,显示优先级越大)。*/position: absolute;top: 10%;left: 20%;z-index: -1;
}body::after{content: '';width: 300px;height: 300px;position: absolute;background: linear-gradient(#2196f3,#31ff38);border-radius: 50%;top: 45%;left: 55%;z-index: -1;
}#calendar{/* 设置日历的宽高 */width: 400px;height: 400px;color: #fff;/* 设置日历的背景元素,为产生毛玻璃效果,这里将背景颜色设置为白色,将透明度设置为 0.1(透明度的取值范围为 0~1,取值越接近 1 ,颜色越不透明)。*/background-color: rgb(255, 255, 255, 0.1);/* 设置 blur 过滤器,该过滤器可以将背景模糊化,参数中的像素值设定越高,显示得越是模糊。*/backdrop-filter: blur(50px);/* 分别设置日历的四条边框,使日历显示得更为立体 */border-top: 1px solid rgb(255, 255, 255, 0.5);border-left: 1px solid rgb(255, 255, 255, 0.5);border-right: 1px solid rgb(255, 255, 255, 0.2);border-bottom: 1px solid rgb(255, 255, 255, 0.2);border-radius: 5px;/* 设置日历的内边距 */padding: 0px 20px;/* 设置日历周边的阴影效果,box-shadow 接收的值(如下)分别为阴影的 X 偏移量、阴影的 Y 偏移量、扩散半径、阴影颜色。*/box-shadow: 5px 10px 10px rgb(0, 0, 0, 0.1);
}/* 
这里存在许多在 HTML 文件中没有看到的类名,这是因为这些标签
是 dyCalendarJS 通过 JavaScript 动态创建的元素,如果有需要对
日历中的某些元素的样式进行改变,可以通过浏览器的 检查 功能来查看
JavaScript 创建的元素并对其样式进行适当的修改。
*//* 
有些元素需要通过修改传递给 dycalendar.draw() 的配置对象中的
部分属性才能够被发现。
*//* 设置日历的头部部分的样式 */
#calendar .dycalendar-header{margin-top: 60px;font-size: 20px;
}/*设置日历 "<" 及 ">" 按钮的样式,应用该样式时请将 传递给 dycalendar.draw() 的配置对象中的 prevnextbutton 属性的值设置为 true 。*/
#calendar .dycalendar-header .prev-btn,
#calendar .dycalendar-header .next-btn{width: 40px;height: 30px;background-color: rgb(255, 255, 255, 0.15);/* 设置文本对其方式及行高以使 ">" 及 "<" 居中显示 */text-align: center;line-height: 30px;/* 设置上下方向的外边距为 0px,设置左右方向的外边距为 5px */margin: 0px 5px;
}#calendar .dycalendar-body table{width: 100%;height: 100%;margin-top: 50px;
}/* tr:nth-child(1) 选择 table 标签中的第一个 tr 元素 */
/* 设置日历中星期(星期几)标识的样式 */
#calendar .dycalendar-body table tr:nth-child(1) td{background-color: rgb(255, 255, 255, 0.15);margin-bottom: 20px;
}#calendar .dycalendar-body table td{border-radius: 3px;/* 设置鼠标悬停时的指针样式 */cursor: pointer;
}/* 
:hover 伪类选择器用于设置鼠标悬停在指定元素时,
某个元素的样式
*/
#calendar .dycalendar-today-date,
#calendar .dycalendar-body table td:hover{color: #000;/* 使用 !important 提升该属性在多个设置了该属性的选择器中的权重*/background-color: #fff !important;
}

http://www.ppmy.cn/news/19299.html

相关文章

ARP渗透与攻防(六)之限制网速攻击

系列文章 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 ARP渗透与攻防(三)之流量分析 ARP渗透与攻防(四)之WireShark截获用户数据 ARP渗透与攻防(五)之Ettercap劫持用户流量 ARP限制网速攻击 大家没想到吧&#xff0c;ARP还能限制对方网速。当kali欺骗了网关和受…

为了方便项目打包,我用Node写了个git-tag工具

目录 前言 实现过程 起步 npm全局命令 功能实现 功能验证 代码发布 写在最后 前言 在使用git执行打包操作时&#xff0c;我们常常会根据场景在tag中增加一些标识。 以基准版本为1.0.0为例&#xff1a;软件开发初期可以定义1.0.0-alpha.0&#xff0c;开发阶段是1.0.0-b…

《安富莱嵌入式周报》第300期:几百种炫酷灯阵玩法, USB Web网页固件升级,波士顿动力整活,并联二极管问题,VisualStudio升级,STM32C0

往期周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 祝大家春节快乐&#xff01; 视频版&#xff1a; https://www.bilibili.com/video/BV1UY4y1d7C7 《安富莱嵌入式周…

恶意代码分析实战 7 WinDbg

配置WinDbg双机调试。 下载Windbg&#xff08;WDK&#xff09;。 事实上你自己的win10上应该会自带。 配置WinXP虚拟机的boot.ini 改成如图所示的样子 修改主机上Windb的属性。 修改成如图所示&#xff1a; 启动WinXP选择调试状态&#xff0c;启动Windbg即可开始调试。 7.…

Docker安装教程(看这篇就够了)

Docker安装教程一.CentOS安装Docker1.卸载&#xff08;可选&#xff09;2.安装docker3.启动docker4.配置镜像加速二.CentOS7安装DockerCompose1.下载2.修改文件权限3.Base自动补全命令&#xff1a;三.Docker镜像仓库1.简化版镜像仓库2.带有图形化界面版本3.配置Docker信任地址D…

C++编译之(2)-make及makefile编译过程

引言 前面我们介绍了c的编译工具&#xff0c;使用g实现对单个文件&#xff0c;多个文件&#xff0c;静态库动态库的编译&#xff1b;我们继续以该项目为例讲解&#xff1b; g 的编译使用入门教程-点这里查看 我们继续以前面的目录解构为例&#xff0c;这里给出上一节的目录如下…

基础知识一览3

这里写目录标题1.Servlet1.1 入门1.2 什么是Servlet1.3 Servlet的作用1.4 Servlet生命周期1.5 Servler的体系结构1.6 Servler的两种配置方式2.Filter2.1 Filter拦截路径配置2.2 过滤器链2.2 入门2.3 过滤器链2.4 过滤器生命周期3.Listener3.1 监听器分类3.1.1 一类监听器4.Serv…

使用ebpf 监控mysqld 内核

一、开发思路分析 我们使用ebpf 监控mysql的话有两个思路去做这件事情 1、kprobe -> hook 掉tcp_sendmsg 和 tcp_recvmsg 一类的内核函数去分析网络协议 2、uprobe -> hook 掉 mysqld 的api函数&#xff0c;然后在此基础上进行统计 我使用的是uprobe 去hook 掉mysql内…