效果预览

按下右侧的“点击预览”按钮在当前页面预览,点击链接全屏预览。

在线演示

https://codepen.io/zhang-ou/pen/qYqwQp

可交互视频教程

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/c/cp24VfV

源代码下载

本地下载

请从 github 下载。

https://github.com/comehope/front-end-daily-challenges/tree/master/006-blue-dazzling-diamond

代码解读

定义 dom,容器中包含一个元素:

  1. <div class="diamond">
  2. <span></span>
  3. </div>

居中显示:

  1. html,
  2. body {
  3. height: 100%;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. }

画出第一组刻面的形状:

  1. .diamond {
  2. display: grid;
  3. }
  4. .diamond span {
  5. border-width: 50px;
  6. border-style: solid;
  7. }

为第一组刻面上色,因为后面还要用到这些色值,所以定义了变量:

  1. :root {
  2. --color1: deepskyblue;
  3. --color2: steelblue;
  4. --color3: royalblue;
  5. --color4: dodgerblue;
  6. }
  7. .diamond span {
  8. border-color: var(--color1) var(--color2) var(--color3) var(--color4);
  9. }

dom容器 中再增加3组刻面:

  1. <div class="diamond">
  2. <span></span>
  3. <span></span>
  4. <span></span>
  5. <span></span>
  6. </div>

把4组刻面先组成田字格,再转换成钻石形状:

  1. .diamond {
  2. grid-template-columns: 1fr 1fr;
  3. transform: rotate(45deg);
  4. }
  5. .diamond span:first-child {
  6. border-color: transparent var(--color2) var(--color3) transparent;
  7. }

定义动画效果:

  1. @keyframes animate {
  2. 0% {
  3. border-color: var(--color1) var(--color2) var(--color3) var(--color4);
  4. }
  5. 25% {
  6. border-color: var(--color4) var(--color1) var(--color2) var(--color3);
  7. }
  8. 50% {
  9. border-color: var(--color3) var(--color4) var(--color1) var(--color2);
  10. }
  11. 75% {
  12. border-color: var(--color2) var(--color3) var(--color4) var(--color1);
  13. }
  14. 100% {
  15. border-color: var(--color1) var(--color2) var(--color3) var(--color4);
  16. }
  17. }

最后,把动画效果应用到除第1组以外的刻面上:

  1. .diamond span:not(:first-child) {
  2. animation: animate 2s linear infinite;
  3. }

大功告成!

知识点

原文地址:https://segmentfault.com/a/1190000014652116

如何用纯 CSS 绘制一颗闪闪发光的璀璨钻石的更多相关文章

  1. 前端每日实战:6# 视频演示如何用纯 CSS 绘制一颗闪闪发光的璀璨钻石

    效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/qYqwQp 可交互视频教程 此视频是可以交 ...

  2. 6. 纯 CSS 绘制一颗闪闪发光的璀璨钻石

    原文地址:https://segmentfault.com/a/1190000014652116 HTML代码: <div class="diamond"> <s ...

  3. 如何用纯 CSS 创作一颗逼真的土星

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/EpbaQX 可交互视频 ...

  4. 如何用纯 CSS 绘制一个充满动感的 Vue logo

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/zaqKPx 可交互视频教 ...

  5. 如何用纯 CSS 绘制一个世界上不存在的彭罗斯三角形

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/RyvgMZ 可交互视频教 ...

  6. 前端每日实战:43# 视频演示如何用纯 CSS 绘制一个充满动感的 Vue logo

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/zaqKPx 可交互视频教程 此视频 ...

  7. 前端每日实战:92# 视频演示如何用纯 CSS 创作一颗逼真的土星

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/EpbaQX 可交互视频 此视频是可 ...

  8. CSS 魔法系列:纯 CSS 绘制三角形(各种角度)

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  9. 摘记 史上最强大的40多个纯CSS绘制的图形(一)

    今天在国外的网站上看到了很多看似简单却又非常强大的纯CSS绘制的图形,里面有最简单的矩形.圆形和三角形,也有各种常见的多边形,甚至是阴阳太极和网站小图标,真的非常强大,分享给大家. Square(正方 ...

随机推荐

  1. print打印

    print打印输出的优点是简单直接粗暴有效,就是用print()把可能有问题的变量打印出来看看缺点是将来还得删掉它,想想程序里到处都是print(),运行结果也会包含很多垃圾信息 __________ ...

  2. hdu1068 Girls and Boys 基础匈牙利

    #include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib> ...

  3. Selenium | 基础入门 | 利用Xpath寻找用户框

    以微信公众号登陆界面为例, 找到相对应的Xpath的方法, 核心代码: System.setProperty(“webdriver.chrome.driver”,“ C:\\Program Files ...

  4. 跟我一起玩Win32开发(16):ListView的多个视图

    在上一个例子中,我们只用到了ListView的Report视图,也就是详细视图.本文我们再把上一篇文章中所用的例子进行一下扩展,例子源码可以到俺的资源区下载. 我们为ListView中显示的数据加上图 ...

  5. 题解报告:hdu 6441 Find Integer(费马大定理+智慧数)

    Problem Description people in USSS love math very much, and there is a famous math problem .give you ...

  6. 百度地图API简单初始化

    <script src="http://api.map.baidu.com/api?key=&v=2.0&ak=youkey"></script& ...

  7. Vue checkbox默认值改变

    <label><input  v-bind:true-value="1" v-bind:false-value="0" type=" ...

  8. LinQ的高级查询

    模糊查询: //数据库 + 自定义名称 =new 数据库 //例子: mydbDataContext con = new mydbDataContext(); //模糊查询表达式中用.Contains ...

  9. 外文翻译 《How we decide》多巴胺的预言 第一节

    这是第二章的起始... 书的导言 1991年2月24日凌晨.第一与第二海军陆战队大批向北进入了沙特阿拉伯的沙漠地带,他们从这来进入科威特.这批军队是伊拉克入侵8个月以来,同盟国第一批进入科威特的部队. ...

  10. elasticsearch-sql安装

    Github地址:https://github.com/NLPchina/elasticsearch-sql elasticsearch-sql插件可以方便我们使用SQL语言来对elasticsear ...