• 技术文章 >web前端 >css教程

    如何使用css实现中国结的效果(代码)

    不言不言2018-09-07 13:54:26原创1332
    这篇文章给大家带来的内容是关于如何使用css实现中国结的效果(代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    今天跟大家分享一个用 css 画中国结的教程。
    最终效果如下:

    3965247858-5b91e0d8136d8_articlex.png

    首先,我们定义好画中国结需要的结构:

    <div class="knot">
        <span class="box"></span>
        <span class="box"></span>
        <span class="box"></span>
        <span class="box"></span>
    </div>

    然后开始写样式,让中国结居中显示:

    body {
      margin: 0;
      padding: 0;
      height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    设置装中国结的容器样式:

    .knot {
      box-sizing: border-box;
      font-size: 100px;
      width: 2em;
      height: 1.6em;
      background: skyblue;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    我把中国结的基础样式拆分成4个长方形,首先来定义长方形的基础样式:

    .box {
      position: absolute;
      box-sizing: border-box;
      width: 1em;
      height: 0.4em;
      border: var(--b) solid firebrick;
      --b: 0.1em;
    }

    然后我们来调整每一个长方形的样式,把它们组合成结的基础样子:

    .knot .box:nth-child(1) {
      transform: rotate(45deg) translate(-15%, -38%);
      border-radius: 20% 0% 0% 20% / 50% 0 0 50%;
    }
    
    .knot .box:nth-child(2) {
      transform: rotate(45deg) translate(15%, 37%);
      border-radius: 0% 20% 20% 0% / 0% 50% 50% 0%;
    }
    
    .knot .box:nth-child(3) {
      transform: rotate(-45deg) translate(15%, -38%);
      border-radius: 0% 20% 20% 0% / 0% 50% 50% 0%;
    }
    
    .knot .box:nth-child(4) {
      transform: rotate(-45deg) translate(-15%, 37%);
      border-radius: 20% 0% 0% 20% / 50% 0 0 50%;
    }

    最后,我们利用第一个和第二个长方形的伪元素来画出余下的那两个小圆圈:

    .knot .box:nth-child(1)::after {
      box-sizing: border-box;
      content: '';
      position: absolute;
      width: 0.4em;
      height: 0.4em;
      border: var(--b) solid firebrick;
      border-radius: 50% 50% 50% 0%;
      top: -0.4em;
      right: -0.4em;
    }
    
    .knot .box:nth-child(2)::after {
      box-sizing: border-box;
      content: '';
      position: absolute;
      width: 0.4em;
      height: 0.4em;
      border: var(--b) solid firebrick;
      border-radius: 50% 0% 50% 50%;
      top: 0.2em;
      right: 0.8em;
    }

    相关推荐:

    如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)

    如何使用纯CSS实现太阳和地球和月亮的运转模型动画

    以上就是如何使用css实现中国结的效果(代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:html5 html css css3 前端
    上一篇:CSS3中border-radius怎么使用?实例讲解用border-radius画一个圆 下一篇:详解css display属性中常见的四个属性值用法(代码实例)
    大前端线上培训班

    相关文章推荐

    • 如何使用CSS实现过山车loader的动画效果• 如何使用CSS实现货车loader的效果• 如何使用CSS实现一只鸭子头(附代码)• 如何使用CSS实现渐变色动画边框的效果(附代码)• 如何使用css实现监控网络连接状态的页面

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网