CSS 绘制一个时钟

练习 CSS 一个很好的方法就是绘制各式各样的 UI,比如这样一个时钟?

Kapture 2022-03-27 at 14.10.51

你也可以访问这个 CSS clock或者以下代码片段查看实际效果

CSS clock

CSS 绘制这样一个布局有几个难点:

  1. 环形排列的刻度
  2. 环形分布的数字
  3. 自动运行的指针

下面就来一一实现它,相信能学到很多 CSS 绘制和动画的小技巧

一、环形排列的刻度

提到“环形”,可以想到锥形渐变 conic-gradient。假设有这样一个容器

<clock></clock> 

加上一点锥形渐变

clock{
  width: 300px;
  height: 300px;
  background: conic-gradient(#333 0 15deg, #cddc39 0deg 30deg);
} 

可以得到这样的效果

image-20220327143656931

如何做出交错相间的效果呢?可以试试 repeating-conic-gradient

clock{
  /**/
  background: repeating-conic-gradient(#333 0 15deg, #cddc39 0deg 30deg);
} 

效果如下

image-20220327143943041

还是看不出和刻度有啥关系?没关系,我们把黑色部分的角度改小一点

clock{
  /**/
  background: repeating-conic-gradient(#333 0 1deg, #cddc39 0deg 30deg);
} 

效果如下

image-20220327144256400

这样绘制出来的几条线是不是刚好可以对应时钟的刻度?

然后将整个形状变成圆环,可以用 MASK 来实现,实现如下

clock{
  /**/
  border-radius: 50%;
  -webkit-mask: radial-gradient(transparent 145px, red 0);
} 

效果如下

image-20220327144635739

其实,这里还有一个小细节,黑色部分并不是居中的,需要修正一下(可以更改起始角度,指定 from)。然后,将这个草绿色换成透明就可以了,完整代码如下

clock{
  /**/
  background: repeating-conic-gradient(from -.5deg, #333 0 1deg, transparent 0deg 30deg);
  border-radius: 50%;
  -webkit-mask: radial-gradie
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值