好久没写文章了,下笔突然陌生了许多。

第一个原因是刚找到一份前端的工作,业务上都需要尽快的了解,第二个原因就是懒还有拖延的习惯,一旦今天没有写文章,就由可能找个理由托到下一周,进而到了下一周又有千万条理由拖到下下一周,所以解决的办法就是当成任务来做,让自律成为一种习惯,做起事来就不会有太大的抱怨。

行动起来,以后每周至少出一篇文章,输出倒逼输入,这也是更好学习的一种方式。

今天的主角是css-doodle,不知道有多少人知道的,反正我是第一次看到这个东西。

起因很简单,大家都知道现在建立自己个人博客一个很方便免费的途径就是使用Github Page来搭建自己的个人博客,但是配置博客的过程却让人特别烦恼,需要根据一个json文件配置博客的标题头像分类等等,然后每个主题也需要配置各种属性,而且在网上找到的教程里面每个人都是根据自己的喜好编写的一套配置,基本上不存在通用性。

于是我在想,有没有一种图形化的工具来进行这些配置呢?

还真让我找到了,这个工具就是 gridea ,官方网站是 https://gridea.dev/

这个客户端可以很方便的帮我们配置一些必要的网站配置,比如头像目录分类等等,而图形化的方式让我们专注于写作而不是网站的一些配置,个人觉得非常方便,有兴趣的可以试试。

但是今天的主角不是她(虽然很优秀),而是她后面的背景图片,我当时不知道为什么觉得背景很好看,就想把她扣下来,作为前端都知道,点击鼠标右键,如果插入的是img标签的话,可以直接保存图片,如果没有的话,那可能是插入的背景图片,可以右键打开检查,找到当前的元素对应的样式,如果是插入的背景图,在背景图的链接上右键在新标签页打开,然后右键保存图片即可。

然而,当我检查元素的时候,发现并没有我想要的背景图,咦,那这到底是啥东东呢?

于是我发现了这个css-doodle元素,把这个标签删除后,果然背景就没了。

果然是这个东西在捣鬼。

于是就有了本文,我们来稍微看看这是个什么东东。

官网如下:https://css-doodle.com/

官方介绍是:A web component for drawing patterns with CSS. 一个绘制css图案的组件。

先来看看怎么使用:

首先使用script引入这个库文件:

<script src="https://cdnjs.cloudflare.com/ajax/libs/css-doodle/0.6.1/css-doodle.min.js"></script>
// or
<script src="https://unpkg.com/css-doodle@0.6.1/css-doodle.min.js"></script>

然后定义一个<css-doodle></css-doodle>标签,用于容纳所绘制的图案。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><css-doodle></css-doodle>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/css-doodle/0.6.1/css-doodle.min.js"></script>
</html>

容器有了,之后就是最重要的绘制图案了。

我们先找一个简单的示例分析,然后做一个自己的图案出来。

<css-doodle>:doodle {@grid: 5;@size: 30vmax;grid-gap: 1px;background: #f5f5f5;}background-color: hsla(@r(0,360), 70%, 70%, @r(.1,1));transform: scale(@rand(.2, 1));
</css-doodle>

然后我们可以得到下面的图案:

结合官网分析代码:

:doodle {@grid: 5;      @size: 30vmax;grid-gap: 1px;background: #f5f5f5;
}

:doodle : 表示的是css-doodle元素

@grid : 图案行列均为5,即为5x5的图案

@size : 每一个图案的大小。vmax表示相对于视口的宽度或高度中较大的那个。例如如果当前视口宽度500px,高度200px,那么以视口宽度为参考,于是1vmin=5px。

grid-gap : 每个图案的间隔为1px

background-color: hsla(@r(0,360), 70%, 70%, @r(.1,1));

@r : 即@rand的缩写,用法@rand(start,end),表示从start到end的随机值。

于是我们就可以得到上面的图案。

除了上面一些简单的属性之外,css-doodle官网还介绍了很多属性:

下面说几个常用到的:

@nth,@even,@odd,@at

@nth @even @odd @at 都是对整个坐标下的图案进行选择的。

例如:

/*对第五个图案进行选择*/
@nth(5) {background: #60569e;
}/*选择第四行,第二列的图案*/
@at(4, 2) {background: #60569e;
}

@grid

设置行列个数

比如:

:doodle {@grid: 3x3; /*三行三列*/@size: 8em;
}

如果行列相同,可以省略一列,而且还可以和每一个图案的大小写在一起:

:doodle {@grid: 8 / 8vmax;  /*8行8列,每个图案大小为8vmax*/
}

@use

除了把样式写在css-doodle标签内之外,还可以将样式提出像style的方式书写,如上面的例子:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>:root {--rule-a: (:doodle {@grid: 5;@size: 30vmax;grid-gap: 1px;background: #f5f5f5;}background-color: hsla(@r(0,360), 70%, 70%, @r(.1,1));transform: scale(@rand(.2, 1));)}</style>
</head>
<body><css-doodle>@use: var(--rule-a);</css-doodle>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/css-doodle/0.6.1/css-doodle.min.js"></script>
</html>

@size,@min-size,@max-size

设置一个图案的大小,最小值和最大值。

@place-cell

设置当前图案相对于当前单元格的相对位置:

Function的属性就很多了,具体可以到官网查看,有很详细的使用说明。

怎么让图案动起来?

css-doodle还提供了JS API,使用js来控制图案的显示。

const doodle = document.querySelector('css-doodle');  // 选择当前的css-doodle元素doodle.grid = "5";   // 设置行列个数console.log(doodle.grid);  // 在控制台打印当前的行列个数doodle.use = 'var(--my-rule)';  // 指定当前css-doodle要显示的图案cssdoodle.update(                // 更新样式`                 :doodle { @grid: 6 / 8em }background: rebeccapurple;margin: .5px;
`);doodle.update();        // 刷新样式

有了这个知识,我们模仿 Gridea 主页做一个背景图,下面是我用emoji表情做的背景图:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><style>* {margin: 0;padding: 0;}:root {--rule-emoji :(:doodle {@grid: 20 / 100vmax;grid-gap: 1px;background: #f9d654;overflow: hidden;}transition: @r(1s) ease;transform: scale(@rand(.1, 1)) rotate(@rand(0, 360)deg);:after {content: \@hex(@rand(0x1F600, 0x1F636));  /*将十六进制转换成unicode编码*/opacity: @r(.1,1);font-size: 3vmax;})}</style>
</head>
<body><css-doodle>@use: var(--rule-emoji);</css-doodle>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/css-doodle/0.6.1/css-doodle.min.js"></script>
<script>const doodle = document.querySelector('css-doodle');// 每次点击刷新css-doodledoodle.onclick = function () {doodle.update();};
</script>
</html>

你可能不知道的css-doodle相关推荐

  1. 你可能不知道的 CSS 阴影技巧与细节

    关于 CSS 阴影,之前已经有写过一篇,box-shadow 与 filter:drop-shadow 详解及奇技淫巧[1],介绍了一些关于 box-shadow 的用法. 最近一个新的项目,CSS- ...

  2. 被低估的css滤镜,你所不知道的 CSS 滤镜技巧与细节

    本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货! 系列 CSS 文章汇总在我的 Github ,持续更新,欢迎点个 star 订阅收藏. OK,下面直接进入正文.本文所描述的滤镜,指 ...

  3. 12个你可能不知道的CSS小技巧

    本文整理出12个开发中你有可能没有用到过的CSS小技巧,一起来看看吧~ 1. 自定义光标(cursor) 首先来看一下CSS的内置光标样式.平时开发中用到的基本上就是default.pointer.n ...

  4. 你可能不知道的5种 CSS 和 JS 的交互方式

    翻译人员: 铁锚 翻译日期: 2014年01月22日 原文日期: 2014年01月20日 原文链接:  5 Ways that CSS and JavaScript Interact That You ...

  5. 你可能不知道的10个CSS新功能(2021版)

    多年来,CSS已经超越了背景颜色.边框.文本样式.边距和盒模型.现代CSS能够提供一系列的功能,而在过去,您需要JavaScript或变通方法来实现这些功能. 为了庆祝它在2021年取得的成就,在这篇 ...

  6. CSS Doodle 生成器

    我们可以通过 CSS 将最复杂的布局带入生活,但我们也可以生成有趣的艺术品和涂鸦.CSS Doodle 用于使用 CSS 绘制图案.该组件包括大量实用功能和可使用的速记属性.因此,该组件将生成一个 d ...

  7. 自2018年以来我不知道的事情-Dan Abramov

    原文地址哈:https://overreacted.io/things-i-dont-know-as-of-2018/ 人们常常假设我知道的知识远比实际知识道的多.我不抱怨这个错误的想法.(拥有些许成 ...

  8. 14个你可能不知道的JavaScript调试技巧

    以更快的速度和更高的效率来调试JavaScript 熟悉工具可以让工具在工作中发挥出更大的作用.尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug ...

  9. 你绝对不知道的head标签

    你绝对不知道的head标签 先来梳理一下本文的目录结构 现在我将详解head标签和它六个子标签的属性和作用,请耐心看完,会有很大的收获哦! 一.head标签 可选属性: 属性 值 描述 profile ...

  10. 微软产品经理:你不能不知道的 6 个 Web 开发者工具

    使用开发者工具是开发人员的日常,但多数人往往只使用其中的一小部分,很多功能其实都无人问津.在微软 Edge 项目部担任开发者工具首席产品经理的 Christian Heilmann 认为,开发者工具正 ...

最新文章

  1. 极客新闻——01、管理之善,在于让员工有机会试错
  2. 配置oracle驱动_Myeclipse中添加Oracle
  3. 作者招募 | 加入PaperWeekly,让你的文字被更多人看到
  4. 三运放差分放大电路分析_三运放差分放大电路
  5. jquery常用功能
  6. ES-Hadoop学习之ES和HDFS数据交换
  7. python123第三周测验答案_python123 测验3: 基本数据类型 (第3周)
  8. u盘引导linux加载raid卡驱动,使用U盘加载SCSI/RAID卡驱动
  9. zlib.h: 没有那个文件或目录
  10. 8086汇编语言将一串字符串内小写字母转换为大写字母,其余字符不变(全注释)
  11. Bailian3751 地质考察队【最值】
  12. ppsspp模拟java按键_ppsspp 手柄按键映射 北通 BTP
  13. 计算机技术在风景园林中的应用和选择,现代信息技术在风景园林中的应用
  14. 工厂方法和抽象工厂模式
  15. Java soso移动大厅项目
  16. 简约黑板擦特效表白网源码
  17. 乔治城大学 计算机排名,乔治城大学计算机科学硕士排名第40(2020年TFE Times排名)...
  18. SAP 各种适配器配器
  19. python-urllib3
  20. bat批处理开发-wifi联网系列(5):wifi稳定性分析之日期时间比较及奇特数字的坑

热门文章

  1. 如何让moment根据对应时间显示几秒前、几分钟前、几天前?
  2. 下列选项中 不能作为C语言标识符的是,2017计算机二级考试C语言复习题及答案...
  3. 微信公众号如何运营才能吸引用户的关注?
  4. 镁客网每周硬科技领域投融资汇总(2.24-3.2),地平线机器人晋升估值最高的AI芯片独角兽...
  5. 如何写综述论文全攻略
  6. TF:jupyter notebook中plt.grid设置后不显示网格以及“TypeError: ‘bool‘ object is not callable”错误
  7. 思一独角兽好朋友群活动回顾——IBCA国际区块链与数字货币协会
  8. 2017大数据产业链的大变化:数据应用仍在奋斗 淘金路上见曙光
  9. 概率论(离散型)极简入门
  10. 基于Java基础-面向对象实现植物大战僵尸简易版