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

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

image.png


Dark Mode(1),又写了一个复杂点的,效果如封面所示。

目标更新十种dark mode的写法!在线预览链接,源代码也在~


talk is cheap,show me the code!


代码很简单,没有晦涩的部分,就不做解释了🤪


HTML


checkbox来实现切换主题


<h1>Mancuoj</h1>
<label class="dark-label" for="dark-checkbox">
  <input id="dark-checkbox" type="checkbox">
  <span class="ball"> </span>
  <svg class="sun-svg" viewBox="0 0 512 512">
    <path d="M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"></path>
  </svg>
  <svg class="moon-svg" viewBox="0 0 512 512">
    <path d="M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"></path>
  </svg>
</label>
复制代码

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;
}
h1 {
  margin-right: 20px;
  user-select: none;
}
复制代码

调整位置+动画


.dark-label {
  display: block;
  margin: 20px 0;
  height: 31px;
  width: 60px;
  border: 2px solid $bg-color;
  border-radius: 30px;
  position: relative;
  cursor: pointer;
  .ball {
    position: absolute;
    width: 25px;
    height: 25px;
    top: 1px;
    left: 1px;
    border-radius: 50%;
    background-color: $bg-color;
    transition: 300ms;
    z-index: 99;
  }
  #dark-checkbox {
    position: absolute;
    visibility: hidden;
  }
  #dark-checkbox:checked + .ball {
    transform: translateX(28px);
  }
  .moon-svg,
  .sun-svg {
    width: 16px;
    height: 16px;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
  }
  .sun-svg {
    left: 5px;
  }
  .moon-svg {
    right: 5px;
  }
}
复制代码

dark mode


.dark {
  background-color: $dark-color;
  color: $light-color;
  .sun-svg,
  .moon-svg {
    fill: $light-color;
  }
}
复制代码

JS


写个点击切换的函数,其中用到了localStorage特性:


在HTML5中新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。

localStorage会可以将第一次请求的数据直接存储到本地,相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽。


image.png


const changeTheme = () => {
  const darkCheck = document.getElementById("dark-checkbox");
  darkCheck.addEventListener("click", () => {
    if (darkCheck.checked) {
      document.body.classList.add("dark");
      localStorage.setItem("css", "dark");
    } else {
      document.body.classList.remove("dark");
      localStorage.removeItem("css");
    }
  });
  if (localStorage.getItem("css")) {
    document.body.className = "dark";
    darkCheck.checked = true;
  }
};
changeTheme();
复制代码


好水,但是实在没啥解释的空间,见谅~

我是Macnuoj,欢迎关注互相交流

目录
相关文章
|
20天前
|
前端开发 JavaScript 搜索推荐
前端小白也能学会的高大上技巧:如何让你的网页支持暗黑模式?
【10月更文挑战第30天】随着现代网页设计的发展,暗黑模式已成为一种流行趋势,提升了用户的阅读体验并增强了网页的适应性。本文介绍了如何通过简单的HTML、CSS和JavaScript实现网页的暗黑模式。首先,定义两种主题的CSS样式;然后,使用JavaScript实现模式切换逻辑,并自动检测系统主题。通过这些步骤,前端小白也能轻松掌握暗黑模式的实现,提升网页的用户体验和个性化水平。
39 4
|
3月前
|
前端开发 程序员
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字)。赶紧学会了,来制作属于我们程序员的浪漫吧!
91 0
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
|
5月前
首途第三十三套清新简约卡片风格蓝紫渐变色短视频模板 | 苹果CMSV10主题
首途第三十三套清新简约卡片风格蓝紫渐变色短视频模板 | 苹果CMSV10主题 我们的简约风格,以纯洁的白色和深邃的紫色为主色调,为您提供了一种清新、时尚的浏览体验。在这个简洁而美丽的界面中,您可以轻松畅享各种精彩短视频。我们专注于简单的设计,使用户能够轻松找到他们喜欢的内容,而不受繁杂的界面干扰。紫色的调性为网页增添了一抹神秘和优雅,让您在欣赏视频的同时感受到一份宁静和舒适。清晰的布局和直观的操作,让您可以更专注于视频内容,而不被复杂的功能所困扰
60 1
|
6月前
紫色星空月亮404网页模板源码
紫色星空月亮404网页模板源码
64 4
紫色星空月亮404网页模板源码
|
图形学
【unity每日一记】——游戏剧情模式中MoveTowards和GameObject.Find()的应用
【unity每日一记】——游戏剧情模式中MoveTowards和GameObject.Find()的应用
111 0
|
移动开发 JavaScript HTML5
指尖大冒险、跳一跳升级版html5游戏全代码
指尖大冒险、跳一跳升级版html5游戏全代码
180 0
指尖大冒险、跳一跳升级版html5游戏全代码
|
JavaScript 前端开发 小程序
为 TDesignBlazor 添加暗黑模式
本文将讲述我为 TDesignBlazor 开源项目提交 PR 的经历,主要介绍暗黑模式功能的实现以及之后如何在项目中使用。我将会分享我在实现这一功能时遇到的问题,以及我是如何解决这些问题的。我希望通过我的经历能够鼓励更多的人参与开源项目,为 TDesignBlazor 贡献代码,帮助项目快速迭代。
230 0
为 TDesignBlazor 添加暗黑模式
|
JavaScript 前端开发
给你的网页添加一个暗黑模式(叁)
给你的网页添加一个暗黑模式(叁)
239 0
给你的网页添加一个暗黑模式(叁)
给你的网页添加一个暗黑模式(壹)
给你的网页添加一个暗黑模式(壹)
110 0
给你的网页添加一个暗黑模式(壹)
|
前端开发 容器
【Web动画】科技感十足的暗黑字符雨动画
【Web动画】科技感十足的暗黑字符雨动画
705 0
【Web动画】科技感十足的暗黑字符雨动画
下一篇
无影云桌面