• 60.纯 CSS 创作一块乐高积木


    原文地址: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: 0;
        padding: 0;
    }
    /* 设置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: 1;
    }
    .studs span:nth-child(3) {
        --n: 3;
    }
    .studs span:nth-child(5) {
        --n: 5;
    }
    .studs span:nth-child(7) {
        --n: 7;
    }
    .studs span:nth-child(2) {
        --n: 2;
    }
    .studs span:nth-child(4) {
        --n: 4;
    }
    .studs span:nth-child(6) {
        --n: 6;
    }
    .studs span:nth-child(8) {
        --n: 8;
    }
    /* 画出左侧的凸粒 */
    .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%;
    }
  • 相关阅读:
    centos7 下安装MongoDB
    centos7 学习笔记
    MongoDB相关资料收集
    centos 下安装.net core
    sql server 2008 r2 中的oracle发布使用笔记
    sql server 与oracle数据互导的一种思路--sql server链接服务器
    Visual Studio 2015正式版/产品密钥 Win10正式版官方原版ISO镜像下载大全&安装激活教程
    Modbus库开发笔记:Modbus ASCII Slave开发
    PID控制器开发笔记之十一:专家PID控制器的实现
    μCUnit,微控制器的单元测试框架
  • 原文地址:https://www.cnblogs.com/FlyingLiao/p/10634618.html
Copyright © 2020-2023  润新知