CSSBattle专题-1(CSS拿来吧你!)

1,254 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,[点击查看活动详情]

所有CSSBattle专题文章收录于专栏:CSSBattle专栏

前言

  • CSSBatle是一个专门提供给前段开发人员练手CSS的网站,通过CSS“绘画”出一些生动的图案,不仅加深了对CSS的了解,更是充满了趣味性。

1-1.png

  • 这个网站每隔几个月会更新一个章节的题目,每个章节的题目数量不定,并且如果在规定的时间内完成,分数将会进行排名。(当然规定时间过后也可以做题,但是分数不会计入排名)
  • 排名范围是全球的(要查看排名需要科学上网),排名靠前的基本都是那几位大佬,偶尔有些题目会将大佬的代码开源,鄙人曾有幸一探,只能说境界确实高的离谱,甚至有一瞬间觉得写的不是同一门语言。

1. Battle #1 - Pilot Battle #1 - Simply Square(纯新手练习关)

1-2.png

作为第一关,就先在这里讲解一下大概的做题思路或技巧吧

  1. 首先有两个图案展示器,右边的图案是原图,左边的是能够支持校对的显示器,只需要用鼠标在上面移动,鼠标左侧的就是你当前编写出来的图案,而右边就是原图。
  2. 原图的下方会提供图案所涉及的所有颜色,所以在使用时只需要复制就行了
  3. 校对器的下方会显示你提交过后的分数,一般只要能100%match(完美匹配)就不会低于600分 这里提供一下提分小技巧:
  • 先按照标准的结构书写CSS代码,在要提交之前,将代码的所有缩进删掉,变为一行(因为分数的一大评分标准就是代码量的多少,而这个系统会将空格和缩进都算进内)
  • 我们都知道CSS代码的每一句后面都需要加上;,但是最后一句的分号可以省略掉
  • 甚至style的右闭合标签都可以省略 代码:
<div></div>
<style>
  body{
    margin:0;
    background:#5d3a3a
  }
  div{
    width: 200px;
    height: 200px;
    background: #b5e0ba
  }

思路:

  1. 整个画布可以理解为一个body标签,所以只需要一个div来代表绿色方块
  2. 需要先将body的margin重置为0,不然绿色方块的位置会有偏差

2. Battle #1 - Pilot Battle #2 - Carrom

1-3.png

1. 直接暴力法

代码:

<div></div>
<style>
  body{
    background:#62374e;
    margin:50px
  }
  div{
    width:50px;
    height:50px;
    background:#fdc57b;
    box-shadow:250px 0 #fdc57b,0 150px #fdc57b,250px 150px #fdc57b
  }

思路: 利用div元素先绘出第一个小方块,由于每个小方块的形状、大小、颜色都一致,所以很容易想到利用box-shadow属性来生成后续的三个方块,只需要把控好定位(可以利用一个截图工具Snipaste来测量方块之间的px)

2. 进阶法

代码:

<style>
  body{
    margin:0 50px;
    background:#62374e;
    border:50px dashed #fdc57b;
    clip-path:inset(50px 0)
  }

思路:

  1. 先利用border作出虚线边框

1-4.png

  1. 需要用到一个不常用的clip-path属性对图案进行切割(具体其他的参数可参考MDN

    这里inset()设置图案将按矩形切割,而两个参数分别是上下和左右的切割距离(在这里也就是上下各切割了50px,而左右切割0px) 注意: 这里紫色被不被切割是因为他是background色,不计入盒子模型范畴内,而黄色是border部分,所以会被切割


哈喽~这里是Crizz的前端之旅

CSSBattle专题持续更新中~