两个dark mode的动画

简介: 两个dark mode的动画

前言


前文:一个dark mode的动画

一二三四,二二三四,继续来更新 Dark Mode 的动画,这次我们更新两个,都是来源于我记忆中网站的动画,就当作复刻吧。


第一个


第一个改自我前面写的按钮动画,加了一个简单的旋转动画,效果如下:

image.png


有手就行,定义一个简单的 @keyframes 关键帧动画:


@keyframes rotate {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
复制代码


然后使用 animation 属性调用即可:


.moon-svg,
.sun-svg {
  width: 30px;
  height: 30px;
  top: 30%;
  right: 30%;
  position: absolute;
  animation: rotate 2s linear infinite;
}
复制代码


在切换明亮和黑暗模式时,调用 visibility 属性调整 svg 的可见性:


.dark {
  transition: 1s;
  background-color: $dark-color;
  color: $light-color;
  .sun-svg {
    fill: $light-color;
    visibility: visible;
  }
  .moon-svg {
    visibility: hidden;
  }
}
复制代码


第二个


第二个也是一个动画,但是我们不用 svg,直接用CSS来画太阳和月亮,效果如下:


image.png


我们把它分成两个部分,首先是两个方块叠加的齿轮背景,也可以看作☀的边角,用 div 画两个不同方向的正方形就行了:


.gear {
  position: absolute;
  background-color: $light-color;
  height: 100px;
  width: 100px;
  border-radius: 5px;
  transition: 2s;
}
#gear1 {
  transform: rotate(-45deg);
}
#gear2 {
  transform: rotate(-90deg);
}
复制代码


在点击时切换 active 的 class,让它们旋转起来:


#gear1.active {
  background-color: $bg-color;
  transform: rotate(225deg);
  transition: 2s;
}
#gear2.active {
  background-color: $bg-color;
  transform: rotate(180deg);
  transition: 2s;
}
复制代码


另一部分是中心的太阳和月亮,依旧采用上篇文章两个圆叠加的方法,画出一大一小两个圆,在切换模式的时候移动位置,如图:


image.png


#big {
  position: absolute;
  background-color: $bg-color;
  height: 70px;
  width: 70px;
  border-radius: 50%;
  transition: 2s;
}
#small {
  position: absolute;
  background-color: $light-color;
  height: 50px;
  width: 50px;
  border-radius: 50%;
  transition: 2s;
}
#small.active {
  height: 60px;
  width: 60px;
  transform: translate(15px, -5px);
  transition: 2s;
  background-color: $bg-color;
}
#big.active {
  background-color: $light-color;
  transition: 2s;
}
复制代码


同样是加上 active 类,在点击时随着齿轮的旋转移动圆的位置和颜色,叠加出月亮的形状,非常简单🤷‍♂️


JS 偷个懒,只使用 toggle() 来做切换,就不多说了。

目录
打赏
0
0
0
0
7
分享
相关文章
|
9月前
|
前端 CSS 经典:mix-blend-mode 属性
前端 CSS 经典:mix-blend-mode 属性
53 0
Android旋转动画rotate动画,xml配置set实现
Android旋转动画rotate动画,xml配置set实现 作为快速备忘查询,写到这里记下。 在xml配置动画所需的set设置资源,然后上层Java代码以最少的代码实现一个匀速旋转的动画,这种开发场景在一些加载动画中比较常见,比如视频缓冲时候的加载动画。
2153 0
你不知道的css3 transition animation transform
你不知道的css3 transition animation transform
Qt-QML-给我的导航条写一个动画-State-Transition
上篇中,我已经写出一个导航条的,虽然太丑了,不过功能是有了,这次我将要给我的导航条加一个动画,先看下演示效果
226 0
Qt-QML-给我的导航条写一个动画-State-Transition
呀~我不会写CSS之width:auto!
auto是width的默认属性, 会CSS的同学都知道, 那么当width是auto的时候具有哪些表现呢? 于我,完全不知道,捂脸逃走~ 深藏不露的width:auto至少包含下面这4种表现: 1.充分利用空间,比如<div>/<p>/<h1>~<h6>宽度默认为父级元素的100%,fill-available。
1740 0
MPAndroidChart 教程:设置颜色 Setting Colors
从v1.4.0版本开始,不再需要(不建议使用)在先前版本中负责设置颜色的ColorTemplate对象。然而,它仍然保留所有预定义的颜色数组(例如,ColorTemplate.VORDIPLOM_COLORS并提供方便的方法,用于将颜色从资源(资源整数)转换为“真实”颜色。
1577 0
7、reset.css的引入及1px边框问题的解决
前言:GitHub:https://github.com/Ewall1106/mall 一、关于reset.css 因为不同的浏览器默认的样式不同,所以在着手项目开始前,我们需要引入reset.css,将所有html标签的默认样式统一化。
1112 0