资讯专栏INFORMATION COLUMN

css实战#用css画一个中国结

xeblog / 726人阅读

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

大家如果感兴趣可以参考我的源码:gitHub地址


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

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

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;
}

大功告成!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/54617.html

相关文章

  • css实战#css一个国结

    大家好!今天跟大家分享一个用 css 画中国结的教程。最终效果如下: showImg(https://segmentfault.com/img/bVbgz00?w=396&h=320); 大家如果感兴趣可以参考我的源码:gitHub地址 首先,我们定义好画中国结需要的结构: 然后开始写样式,让中国结居中显示: body { margin: 0; ...

    Yi_Zhi_Yu 评论0 收藏0
  • css实战#css一个国结

    大家好!今天跟大家分享一个用 css 画中国结的教程。最终效果如下: showImg(https://segmentfault.com/img/bVbgz00?w=396&h=320); 大家如果感兴趣可以参考我的源码:gitHub地址 首先,我们定义好画中国结需要的结构: 然后开始写样式,让中国结居中显示: body { margin: 0; ...

    wenyiweb 评论0 收藏0
  • 前端每日实战:155# 视频演示如何CSS 创作一只热气球

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。源代码下载每日前端实战系列的全部源代码请从下载代码解读定义,容器中有个子元素,代表伞盖,代表吊篮居中显示定义容器的尺寸,子元素和纵向居中布局先画伞盖。 showImg(https://segmentfault.com/img/bVbh6vq?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面...

    2bdenny 评论0 收藏0
  • 前端每日实战:155# 视频演示如何CSS 创作一只热气球

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。源代码下载每日前端实战系列的全部源代码请从下载代码解读定义,容器中有个子元素,代表伞盖,代表吊篮居中显示定义容器的尺寸,子元素和纵向居中布局先画伞盖。 showImg(https://segmentfault.com/img/bVbh6vq?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面...

    KavenFan 评论0 收藏0
  • 前端每日实战:155# 视频演示如何CSS 创作一只热气球

    摘要:效果预览按下右侧的点击预览按钮可以在当前页面预览,点击链接可以全屏预览。源代码下载每日前端实战系列的全部源代码请从下载代码解读定义,容器中有个子元素,代表伞盖,代表吊篮居中显示定义容器的尺寸,子元素和纵向居中布局先画伞盖。 showImg(https://segmentfault.com/img/bVbh6vq?w=400&h=300); 效果预览 按下右侧的点击预览按钮可以在当前页面...

    whlong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<