原文地址: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. 组队项目,Main队伍

    本小组经过讨论,决定做的项目为----厨娘 分组情况: 1.界面设计:胡骏 2.前段,界面代码实现:梅庆 3.后台.逻辑处理:唐正奎.张军洪.袁成杰 4.数据库的建立与存写:张军洪.蒋利平 厨娘——需 ...

  2. go web framework gin 路由表的设计

    在上一篇go web framework gin 启动流程分析这一篇文章中,我分析了go gin启动的过程,在这一篇文章中我将继续上面的分析,讨论gin 中路由表是如何设计的? 首先查看engine. ...

  3. Python IDE:pycharm

    ------------------------------------------------------安装pycharm------------------------------------- ...

  4. 无法对含有多个.java(或.class)文档的程序进行编译(或解释)

    通常初学者会出现这样的问题:无法对含有多个.java(或.class)文档的程序进行编译(或解释). root@yogile-VirtualBox:/alive/string# javac work/ ...

  5. git不添加.idea等IDE配置文件夹

    git不添加.idea等IDE配置文件夹由于.idea(intellJ,pycharm)的IDE文件夹很常出现,建议将gitignore设置为全局. git config --global core. ...

  6. AlwaysOn环境下的压缩Log文件方法

    Step1.将DB脱离可用性组 Step2.修改为简单恢复模式>收缩文件>修改回完整恢复模式 -- Truncate the log by changing the database re ...

  7. 【转载】 Pytorch 细节记录

    原文地址: https://www.cnblogs.com/king-lps/p/8570021.html ---------------------------------------------- ...

  8. mysql数据库简单入门

    1.xampp  跨平台 优点:兼容性高 2. apache(服务器) 著名的集成环境(也叫集成安装包) 功能:一般在网站上运行,优点:稳定 缺点:性能上有瓶颈 nginx 优点:快 3. mysql ...

  9. 初窥async,await

    首先是一道今日头条的面试题:(听说是今日头条的并且已经烂大街了) async function async1() { console.log( 'async1 start' ) await async ...

  10. Js高级 事件冒泡

    什么叫事件冒泡 当给父子元素的同一事件绑定方法时,触发了子元素身上的事件,执行完毕之后,也会触发父级元素的相同事件,这种传播机制叫事件冒泡. 取消事件冒泡 Event对象有个属性叫cancelBubb ...