给你的网页添加一个暗黑模式(叁)

简介: 给你的网页添加一个暗黑模式(叁)

image.png


【3/10】第三个来了,这次写了一个拉绳的简单动画来开关dark mode,效果如封面所示。


在线预览链接,附源码!


目标依旧是十种方式来实现,顺便提升一下我的水平🙊


大伙见过用过其他形式的dark mode可以发一下,让我见见世面,我也可以复刻一下!


上代码!


很简单的代码,我简单解释一下🦍


🦭HTML


<h1>Mancuoj</h1>
<div id="switch"></div>
复制代码

🐬SCSS


都一样,SCSS嵌套写起来简单点儿


一些基础设置


@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300&display=swap");
$dark-color: #111;
$light-color: #eee;
$bg-color: #4c6fff;
*,
* *,
*::before,
*::after {
  box-sizing: border-box;
}
body {
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  font-family: Poppins, serif;
}
复制代码

画出开关


伪元素 ::before  可以在所选元素之前或之后添加一些内容。

必须配合 content 来使用,这个属性通常用来给元素添加内容诸如图片或者文字。

content 属性是必需的,用来实现形状时值可以是空字符串

top: -100px,我们藏起来100px长度来做动画✅


#switch {
  position: fixed;
  height: 300px;
  width: 2px;
  background: $bg_color;
  right: 30%;
  top: -100px;
  cursor: pointer;
  &::after {
    content: "";
    position: absolute;
    border: 2px solid $bg-color;
    border-radius: 50%;
    width: 22px;
    height: 22px;
    left: -10px;
    bottom: -20px;
  }
}
复制代码

写个拉绳的动画


具体可以看animation - CSS(层叠样式表) | MDN (mozilla.org)

动画就是把藏起来的100px放出来再收回去🎈


@keyframes line {
  0% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(100px);
  }
  100% {
    transform: translateY(0);
  }
}
.pull {
  animation: line 0.5s ease;
}
复制代码

dark mode


依旧是最简单的实现,只改了背景和文本的颜色,有需要可以自行添加~


.dark {
  background-color: $dark-color;
  color: $light-color;
}
复制代码

🐋JS


JS跟前两个差不多,稍微改改继续用😎

点击时加上动画,完成后再移除,需要用setTimeout()设置一个时间间隔。


const changeTheme = () => {
  const sw = document.getElementById("switch");
  sw.addEventListener("click", () => {
    sw.classList.add("pull");
    if (!document.body.classList.contains("dark")) {
      document.body.classList.add("dark");
      localStorage.setItem("css", "dark");
    } else {
      document.body.classList.remove("dark");
      localStorage.removeItem("css");
    }
    setTimeout(() => {
      sw.classList.remove("pull");
    }, 600);
  });
  if (localStorage.getItem("css")) {
    document.body.classList.add("dark");
  }
};
changeTheme();
复制代码

前两个的🔗


给你的网页添加一个暗黑模式(壹)

给你的网页添加一个暗黑模式(贰)

目录
相关文章
|
7月前
|
编解码 开发者 Python
星际争霸之小霸王之小蜜蜂(一)--窗口界面设计
星际争霸之小霸王之小蜜蜂(一)--窗口界面设计
|
3天前
|
前端开发 定位技术 SEO
基于WordPress开发的高颜值的自适应主题,支持白天与黑夜模式
环境要求 WordPress >=6.0PHP >=7.4 主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客、CMS、企业三种布局 内置 WP 优化策略 内置前台用户中心 支持 QQ / Github / Gitee / 微博登录 支持缩略图伪静态 全局顶部滚动公告 图形及极验验证码支持 自定义 SMTP 支持 一键全站变灰 网页压缩成一行 后台防恶意登录 内置出色的 SEO 功能 评论 ajax 加载 文章点赞、打赏、海报生成、分享 Twemoji 集成 丰富的广告位 丰富的小工具 自动百度链接提交 众多页面模板(读者墙 / 归档 / 书籍推荐 / 站点导航 / 标签 / 站点地图
32 5
|
11月前
|
图形学
【unity每日一记】——游戏剧情模式中MoveTowards和GameObject.Find()的应用
【unity每日一记】——游戏剧情模式中MoveTowards和GameObject.Find()的应用
81 0
|
JavaScript 前端开发 小程序
为 TDesignBlazor 添加暗黑模式
本文将讲述我为 TDesignBlazor 开源项目提交 PR 的经历,主要介绍暗黑模式功能的实现以及之后如何在项目中使用。我将会分享我在实现这一功能时遇到的问题,以及我是如何解决这些问题的。我希望通过我的经历能够鼓励更多的人参与开源项目,为 TDesignBlazor 贡献代码,帮助项目快速迭代。
166 0
为 TDesignBlazor 添加暗黑模式
|
前端开发 JavaScript 程序员
基于JavaScript实现网页版仿苹果2022下半年最新UI设计(灵动岛UI设计原理设计)
基于JavaScript实现网页版仿苹果2022下半年最新UI设计(灵动岛UI设计原理设计)
293 0
|
存储 移动开发 前端开发
给你的网页添加一个暗黑模式(贰)
给你的网页添加一个暗黑模式(贰)
160 0
给你的网页添加一个暗黑模式(贰)
给你的网页添加一个暗黑模式(壹)
给你的网页添加一个暗黑模式(壹)
82 0
给你的网页添加一个暗黑模式(壹)
给typecho添加社会主义核心价值观24字特效,鼠标点击出现富强,民主,文明等等12组词
给typecho添加社会主义核心价值观24字特效,鼠标点击出现富强,民主,文明等等12组词
237 0
|
前端开发 容器
【Web动画】科技感十足的暗黑字符雨动画
【Web动画】科技感十足的暗黑字符雨动画
667 0
【Web动画】科技感十足的暗黑字符雨动画
|
JavaScript Android开发 数据安全/隐私保护
移动端爬坑记 --- (1)布局与样式上的奇葩偶遇
Flex想要兼容众多花样式手机,要注意以下这么些 • 前缀要考虑2009~2012年的语法[webkit-box,flex,flex-box] • 少用复合属性,比如flex:1,考虑兼容理应拆成[flex-grow,flex-shrink,flex-basis];flex-flow拆开成[flex-direction,flex-wra
129 0