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

感想:y轴旋转,相对定位,今天有点懵呀,唉。

HTML code:

<!-- 定义dom,容器中包含一组3个面 -->
<!-- brick: 砖 ; sides : 边; front: 前面 -->
<div class="brick">
<div class="sides">
<span class='front'></span>
<span class='right'></span>
<span class="top"></span>
</div>
<div class="studs">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>

CSS code:

html, body {
margin:;
padding:;
}
/* 设置body子元素水平垂直居中 */
body {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
/* 背景颜色设置下面样式无效,背景设置有效 */
background: radial-gradient(circle at center, white, skyblue);
}
/* 设置.brick容器的样式 */
.brick{
/* 为子元素的定位做准备 */
position: relative;
/* 本身默认 font-size: 12px; 所以可以删除 */
font-size: 12px;
width: 40em;
height: 30em;
border: 1px solid blue;
}
/* 画出积木三面共有属性 */
.brick .sides > * {
position: absolute;
background-color: #237fbd;
}
/* 画出积木的正面 */
.brick .sides .front{
top: 19em;
left: 7em;
width: 9em;
height: 6.8em;
/* 组合成立方体 */
transform-origin: right;
transform: skewY(30deg);
}
/* 画出积木的右面 */
.brick .sides .right {
top: 19em;
left: calc(7em + 9em);
width: 18em;
height: 6.8em;
filter: brightness(0.8);
transform-origin: left;
transform: skewY(-30deg);
}
/* 画出积木的顶面 */
.brick .sides .top {
top: calc(19em - 10.4em);
left: calc(7em + 9em);
width: 18em;
height: 10.4em;
filter: brightness(1.2);
transform-origin: left bottom;
transform: rotate(-60deg) skewY(30deg);
}
/* 不需要.studs */
.studs{
position: absolute;
border: 1px solid red;
}
/* 突粒 */
.studs span {
position: absolute;
width: 3.6em;
height: 3em;
background-color: #237fbd;
/* 突粒下的影子居然是用边框设置的 */
border-radius: 1.8em / 1em;
}
.studs span:nth-child(1) {
--n:;
}
.studs span:nth-child(3) {
--n:;
}
.studs span:nth-child(5) {
--n:;
}
.studs span:nth-child(7) {
--n:;
}
.studs span:nth-child(2) {
--n:;
}
.studs span:nth-child(4) {
--n:;
}
.studs span:nth-child(6) {
--n:;
}
.studs span:nth-child(8) {
--n:;
}
/* 画出左侧的凸粒 */
.studs span:nth-child(odd) {
top: calc(4.6em + (var(--n) - 1) / 2 * 2.6em);
left: calc(23.3em - (var(--n) - 1) / 2 * 4.6em);
}
/* 画出右侧的凸粒 */
.studs span:nth-child(even) {
top: calc(6.9em + (var(--n) - 2) / 2 * 2.6em);
left: calc(27.9em - (var(--n) - 2) / 2 * 4.6em);
}
/* 画出凸粒的顶面 */
.studs span::before {
content: '';
position: absolute;
width: inherit;
height: 2em;
background-color: #4cb7ff;
border-radius: 50%;
}

60.纯 CSS 创作一块乐高积木的更多相关文章

  1. 前端每日实战:60# 视频演示如何用纯 CSS 创作一块乐高积木

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

  2. 3.纯 CSS 创作一个容器厚条纹边框特效

    原文地址:3.纯 CSS 创作一个容器厚条纹边框特效 没有啥好点子呀,不爽 HTML代码: <div class="box"> <div class=" ...

  3. 2.纯 CSS 创作一个矩形旋转 loader 特效

    原文地址:2.纯 CSS 创作一个矩形旋转 loader 特效 扩展后地址:https://scrimba.com/c/cNJVWUR  扩展地址:https://codepen.io/pen/ HT ...

  4. 1.纯 CSS 创作一个按钮文字滑动特效 + 弹幕(残缺)

    原文地址:1# 视频演示如何用纯 CSS 创作一个按钮文字滑动特效 扩展后地址:https://scrimba.com/c/cJkzMfd HTML代码: <html> <head& ...

  5. 74.纯 CSS 创作一台 MacBook Pro

    原文地址:https://segmentfault.com/a/1190000015568609 HTML code: <div class="macbook"> &l ...

  6. 69.纯 CSS 创作一个单元素抛盒子的 loader

    原文地址:https://segmentfault.com/a/1190000015470411#articleHeader0 HTML code: <div class="loade ...

  7. 57.2拓展之纯 CSS 创作黑暗中会动的眼睛和嘴巴

    效果地址:https://scrimba.com/c/cbNkBnuV HTML code: <!-- 定义dom, .eyes容器中包含2个元素 --> <div class=&q ...

  8. 57.1拓展之纯 CSS 创作黑暗中的眼睛和嘴巴

    效果地址:https://scrimba.com/c/cJ8NPpU2 HTML code: <div class="eyes"> <span class=&qu ...

  9. 57.纯 CSS 创作一双黑暗中的眼睛

    原文地址:https://segmentfault.com/a/1190000015327725 感想:原来边框还能这样玩-->做会眨眼的眼睛 HTML code: <div class= ...

随机推荐

  1. man 命令帮助文件输出乱码

    man 命令重定向的时候有写控制字符再直接显示的时候没有问题, 但是重定向到文件中的时候,被解释错误,显示为 ^H 或者乱码 解决方法: man ps | col -b >a.txt 可以消除所 ...

  2. os、os.path模块(文件/目录方法)

    1.模块的概念:模块是一个包含所有定义的变量.函数的文件,模块可以被其余模块调用. 2.利用OS模块实现对系统文件的. os模块中常见的方法: gercwd()     返回当前工作目录 chdir( ...

  3. 18-10-09 Linux常用命令大全(非常全!!!)

     Linux常用命令大全(非常全!!!)   Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制, ...

  4. componentWillMount和componentDidMount的区别

    1.componentWillMount  将要装载,在render之前调用: componentDidMount,(装载完成),在render之后调用 2.componentWillMount  每 ...

  5. tomcat 启动脚本走过的坑

    最近由于 程序写的问题 tomcat经常需要重启,所以就让我写给监控tomcat并启动的脚本 例: 看着一起正常 然后就写到 crontab 计划任务里了 后来发现不管用, 找了好多文档 就是找不到问 ...

  6. emmet简单记录

    一.引式符号 html:5 or  ! . class #  id []标签内属性 pycharm不支持  {}标签的内容 pycharm不支持 ()分组标签  pycharm不支持 二.关系符号 1 ...

  7. 有人WIFI ble101配置

    新买来的模块,默认为slave模式,波特率57600,8位数据位,无检验位,1位停止位. 发送+++a,进入命令模式. 需要加回车符 1.设置模块名称 AT+NAME=BT_Shining 2.设置发 ...

  8. s21day07 python笔记

    s21day07 python笔记 一.昨日内容回顾及补充 回顾 补充 将前面所提到的功能,统一改称为方法 二.深浅拷贝 基本格式 v1 = [1,2,3] import copy v2 = copy ...

  9. linux日常命令之二

    ps -ef 查看当前系统所有进程,ps 进程查看命令,-e 显示所有进程,-f 全格式. free -h 查看系统实际使用内存的情况. 显示格式为: total       used       f ...

  10. webpack初步学习

    https://segmentfault.com/a/1190000006178770 该篇文章足够webpack入门的学习了,对webpack有个初步的了解和认识.