前言

在某次会上是见过css Doodle制作的美。今日前端早读课文章由shopee@ChokCoco,公号:iCSS前端趣闻投稿分享。

正文从这开始~~

之前在知乎看到一个很有意思的讨论 一行代码可以做什么?

那么,一行 CSS 代码又能不能搞点事情呢?

CSS Battle

首先,这让我想到了,年初的时候沉迷的一个网站 CSS Battle 。这个网站是核心玩法就是:

官方给出一张图形,在给定的 400 x 300 的画布上,能够用越短的代码实现它,分数就越高。

注意是,完全一模一样还原。

其中,第一题就非常有趣,看看题目:

嗯,想一想,如果给定这样一张图形,告诉你 HTML 的大小是 400px x 300px,图片中使用到的颜色是 #5D3A3A, #B5E0BA,你会怎么用 CSS 去实现它呢?

因为要求,字符数越少,分数越高,当然是选字符少的标签,是不是这样:

body{background:#5D3A3A;}

p {width: 200px;height:200px;background:#B5E0BA;}

这个网站的设定,HTML 和 CSS 可以按照上述格式写在一起, 标签内的即为 CSS,之外的是 HTML ,标签

> 可以简写为

额,这样当然可以,但是看看文章的标题,一行 CSS ?这明显不是啊,并且这里有 100+ 个字符。我们得把字符数压一压。

嗯嗯嗯,想到了阴影,尝试下使用 box-shadow:

a {

box-shadow:0 0 0 200px #b5e0ba,0 0 0 400px #5d3a3a;

}

利用两层阴影,完美实现图例图形,并且,字符数压缩到了 82 个。当然,这还不是极致,我们完全可以内联 CSS,再减少字符数:

style="box-shadow:0 0 0 200px #b5e0ba,0 0 0 400px #5d3a3a">

只有 62 个字符。当然,从一行代码的角度,这个问题完美的解决了,如果追求极致的字符数,上述的代码还可以再简化一下:

style=box-shadow:0+0+0+200px#b5e0ba,0+0+0+5in#5d3a3a>

这里有一些小知识点,HTML5 支持属性后面不用引号包住,又譬如 box-shadow: 0 0 0 400px #5d3a3a 是可以压缩到 box-shadow:0+0+0+5in#5d3a3a,CSS 中 1in=96px,但是画布只有 400px,5in 大于 400px,也没有问题,能够充满画布,但是 400px 相对 5in 字符多了 2 个。

浏览器里面看一下,这个是完全正确的写法:

OK,最终只有 56 个字符,完美。当然,CSS Battle 里面还有更多更复杂的挑战,也有很多能够通过一行代码实现的,感兴趣的尝试下。

一行背景代码

要说到 CSS 最有意思的属性,我觉得背景(background)肯定能够获得很多选票。背景分为:

  • 纯色

  • 线性渐变(linear-gradient)

  • 径向渐变(radial-gradient)

  • 角向渐变(conic-gradient)

  • 多重线性渐变(repeating-linear-gradient)

  • 多重径向渐变(repeating-radial-gradient)

  • 多重角向渐变(repeating-conic-gradient)

突出一个字,离谱。并且它们还可以互相混合、叠加添加滤镜、配合各种背景相关属性等等等。

不过今天,来看看一行 CSS Background 代码能玩出什么花来。嗯?这里的主角是多重角向渐变(repeating-conic-gradient),只用一行 CSS 代码:

{

background: repeating-conic-gradient(#fff, #000, #fff 0.1deg);

}

这什么玩意?脑补一下,这行代码绘制出来的图形会是什么样子?看看:

Wow,不可思议。这里 0.1deg 非常关键,这里的角度越小(小于 1deg 为佳),图形越酷炫。

我们把 0.1deg 替换成 30deg 看看:

当然也非常好看,只不过没有上面那个那么惊艳。

CodePen -- One Line CSS Pattern:https://codepen.io/Chokcoco/pen/yLajLaM

我们可以再利用 CSS - Doodle,随机产生这份美:

CSS - Doodle 它是一个基于 Web-Component 的库。允许我们快速的创建基于 CSS Grid 布局的页面,并且提供各种便捷的指令及函数(随机、循环等等),让我们能通过一套规则,得到不同 CSS 效果。

没错,它的本质其实就是上述的那一行核心 CSS 代码。

CSS Doodle - CSS Magic Conic-gradient:https://codepen.io/Chokcoco/pen/abmmVmM

margin: auto 与 place-items: center

这个也非常有意思,当然,它不算严格意义上的一行 CSS,因为需要搭配其他属性一起使用。

最快水平垂直居中一个元素的方法是什么?

水平垂直居中也算是 CSS 领域最为常见的一个问题了,不同场景下的方法也各不相同,各有优劣。嗯,下面这两种方法应该算是最便捷的了:

方法一:flex 布局下的 margin: auto
class="g-container">

class="g-box">

.g-container {

display: flex;

}

.g-box {

margin: auto;

} 

上面的 display: flex 替换成 display: inline-flex | grid | inline-grid 也是可以的。

在 display: flex 布局下, margin auto 的生效不仅是水平方向,垂直方向也会自动去分配这个剩余空间。

CodePen Demo -- 使用 margin auto 水平垂直居中元素:https://codepen.io/Chokcoco/pen/GarPev

如果你对非常有用的 margin: auto 还不是很了解,可以看看:探秘 flex 上下文中神奇的自动 margin

方法二:grid 布局下的 place-items: center

直接上代码:

.g-container {

display: grid;

place-items: center

}

上述两个份代码效果都是一样的:

CodePen Demo -- 水平垂直居中元素 grid+ place-items: center:https://codepen.io/Chokcoco/pen/ZEpoEov

最后

一行 CSS 能干什么?肯定不止这些,当然,这不就是 CSS 的乐趣么。

关于本文 作者:@ChokCoco 原文:https://www.cnblogs.com/coco1s/p/14239746.html

为你推荐

【第2165期】CSS现状和如何学习

【第2085期】使用 babel 全家桶模块化古老的面条代码

欢迎自荐投稿,前端早读课等你来

增加一行减少一行_【第2171期】一行 CSS 代码的魅力相关推荐

  1. CSS大全_最全的常用css代码

    1.字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 {font-style: o ...

  2. Java判断数组是递增或者递减_账户对应关系,是指采用复式记账法对每笔交易或事项进行记录时,相关账户之间形成的增加或减少的相互关系。...

    [多选题]下列不属于会计信息质量要求的有 ( ) [判断题]共价键的键长等于成键原子共价半径之和. [多选题]关于do while循环,下列说法正确的是(). [单选题]资产按照预计从其持续使用和最终 ...

  3. vw 前端_一行css代码轻松实现前端响应式布局(vw+rem)

    大家知道rem可以用来做响应式布局,只是html元素上的font-size样式需要根据屏幕宽度来指定. 之前有用@media媒体查询,根据各种屏幕宽度写html的样式,也用过类似lib-flexibl ...

  4. 属性值动态调整_【第1603期】CSS 自定义属性:使用篇

    前言 好的文章值得多看两眼.今日早读文章由@kmokidd翻译分享. 正文从这开始-- 可读性更高的 CSS 代码 在读过 [第1596期]CSS 自定义属性:基础篇后,我们可以开始着手优化代码了,通 ...

  5. 如何在Excel表格中对数据进行批量增加或者减少

    1 在一个空格当中写入你要增加或者减少的数值 2 复制上面写好数值的空格 3 选中你要操作的某一列或者某一行数据 4 点击左上角的粘贴 1 点击选择性粘贴 2 点击数值 3 点击加或者减 4 完成操作

  6. dwm使用Fn+Fx组合实现关闭,增加或减少音量

    dwm使用Fn组合键实现关闭,增加或减少音量 1.编写脚本以实现关闭增加减少音量功能 具体编写脚本过程可参考B站UP主 袁帅_Linux的这期视频,DWM:系统音量调节及笔记本屏幕背光调节_哔哩哔哩_ ...

  7. 让 Chrome 崩溃的一行 CSS 代码

    一般的 CSS 代码只会出现 UI 版式或者兼容性方面的小问题.但这里我们要分享一行有趣的 CSS,它可以直接让你的 Chrome 页面挂掉 :) 复现 在 Chrome 里打开一个稍复杂的页面,比如 ...

  8. redis rua解决库存问题_【150期】面试官:Redis的各项功能解决了哪些问题?

    点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...

  9. PNAS:大脑区域间耦合的增加和减少会相应增加和减少人类大脑中的振荡活动

    大脑中振荡活动的起源目前仍有争议,但许多假说都认为它们反映了大脑区域之间的相互作用.本文中,我们通过控制两个人类大脑区域之间的耦合强度来检验这种可能性,这两个区域是腹侧前运动皮层(ventral pr ...

最新文章

  1. LeetCode简单题之找出数组的最大公约数
  2. 收汇核销系统无法与服务器连接,出口收汇核销网上报系统一直都无法与服务器建立连接.doc...
  3. Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的
  4. photo常用快捷键
  5. 小红书shield算法分析
  6. mha如何管理多套mysql集群_Mysql 集群高可用方案 MHA
  7. 只需五步学会Maven 3.6.1OR 3.6.3及其他版本的下载安装与配置【图文详解】
  8. h264 aac mux flv
  9. php加密解密函数,PHP加密解密的函数
  10. 利用遗传算法求解旅行商问题
  11. 《Java语言程序设计与数据结构》编程练习答案(第十七章)
  12. php js 批量打开页面
  13. 什么是GPS,GPS技术主要有哪些特点?
  14. 异步方法中取消异步操作
  15. ArcBlock 活动 | 亮相西雅图重量级大会 全球共识建设进入新阶段
  16. Python编程练习:判断字符串是否为回文
  17. 【论文解读】文本分类上分利器:Bert微调trick大全
  18. RTX3060显卡比1060跑深度学习慢?
  19. Android依赖arr包 gradle7.0
  20. 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)

热门文章

  1. 下载丨云和恩墨技术通讯:OCR无法正常读取导致节点宕机
  2. 《数据安全警示录》一书修订版出版
  3. 云端之战:Oracle研发总裁Thomas Kurian 加盟 Google Cloud
  4. 详解用OpenCV绘制各类几何图形
  5. 零起步教你搭建Discuz!论坛
  6. [动图演示]Redis 持久化 RDB/AOF 详解与实践
  7. ServiceComb java-chassis和CSE java-chassis的区别
  8. 下一代软件工程的思考与点滴实践
  9. wps图表xy轴颠倒_用EXCEL来搞艺术之图表类型变换
  10. JAVA设计一个电视机类_漫谈Java程序设计中的接口应用