原文地址: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. 内存泄漏 tensorflow

    http://blog.csdn.net/qq_25737169/article/details/78125550

  2. python自学第12天 模块定义,导入,内置模块

    1.定义模块:用来从逻辑上组织python代码(实现一个功能),本质是.py结尾的python 包:本质就是一个目录(必须带有一个_init_.py文件)2.导入方法import module_nam ...

  3. Memcached在SpringMVC上的使用

    1.memcached介绍 memcached是一款由Danga Interactive公司开发的高效的分布式缓存服务器,主要是用于解决数据量庞大.访问集中的Web应用出现的数据库服务器负担过重,数据 ...

  4. Fescar Quick Start

    Quick Start Let's begin with a Microservices example. Use case A business logic for user purchasing ...

  5. CCF-权限查询-201612-3

    这道题,开始只有10分.....原因是将false 写成了 flase 我要吐血而亡....关键是还debug了半天,以为是逻辑错了 不过亮点是代码很简洁,网上140+的代码看着真复杂 核心: 做题之 ...

  6. PTA——蠕虫爬井

    PTA 7-46 爬动的蠕虫 #include<stdio.h> int main() { ; scanf("%d%d%d",&N,&U,&D) ...

  7. 19/03/17Python笔记

    一.判断元素是否为数字 ".isdigit() #判断123是不是数字,是的话输出True,不是输出False 二.标志位 需要死循环时,不一定用 while True 还可以用 while ...

  8. 安装httpd服务

    1.yum安装httpd服务 2.启动httpd服务端口被占用 3.修改端口 4.启动httpd服务 5.输入网址是否正常能访问

  9. jmeter 关联

    (1)正则表达式提取器 注:正则表达式部分配置说明 案例: 动态值:name=userSession value=119828.306682868zVzDzzipfcfDzQicpAVVVf> ...

  10. [JAVA]JAVA多线程实现方法之——实现Runnable接口

    public class MultiThread { public static void main(String[] args) { Thread t1 = new Thread(new Threa ...