CSS + JavaScript 实现八卦太极图

简介: CSS + JavaScript 实现八卦太极图

CSS + JavaScript 实现八卦太极图

1、中间太极鱼图案的实现

html部分

<div class = "taiji" ></div>

css部分

.taiji{
      width: 300px;
      height: 300px;
      border-radius: 50%;
      position: relative;
      margin: 200px auto;
      top:150px;
      background-image: linear-gradient(to right,black 50%, white 50%);
    }
    .taiji::before,.taiji::after{
      content: '';
      position: absolute;
      width: 30px;
      height: 30px;
      border-radius:50%;
      left:50%;
      transform: translateX(-50%);
    }
    .taiji::before{
      background-color: white;
      border: 60px solid black;
      top: 0;
    }
    .taiji::after{
      background-color: black;
      border: 60px solid white;
      bottom: 0;
    }

效果图

2、旁边线条的描绘

html部分

<div id="taiji">
  <div class="line tian">
    <div class="quan"></div>
    <div class="quan"></div>
    <div class="quan"></div>
  </div>
</div>

css部分

.quan{
  height: 10px;
  width: 80px;
  background-color: #000000;
  margin: 10px auto;
}
.que{
  display: flex;
  width: 80px;
  margin: 10px auto;
}
.que1,.que2{
  height: 10px;
  width: 35px;
  background-color: #000000;
}
.que2{
  margin-left: 10px;
}
.line{
  /* position: absolute; */
  width: inherit;
  height: inherit;
  transform-origin: 50% 50%;
  /* transform: rotate(30deg); */
  transition: all .6s;
  position: absolute;
}

效果图

3、完整代码

使用js简化后的代码如下:

html部分

<body>
  <div id="taiji">
  </div>
</body>

css部分

body{
  background:rgba(128,128,128,.2);
}
#taiji{
  margin: 50px auto;
  width: 600px;
  height: 600px;
  animation: rotate 3s linear infinite;
  animation-play-state: paused;
}
.taiji{
  width: 300px;
  height: 300px;
  border-radius: 50%;
  position: relative;
  margin: 200px auto;
  top:150px;
  background-image: linear-gradient(to right,black 50%, white 50%);
}
.taiji::before,.taiji::after{
  content: '';
  position: absolute;
  width: 30px;
  height: 30px;
  border-radius:50%;
  left:50%;
  transform: translateX(-50%);
}
.taiji::before{
  background-color: white;
  border: 60px solid black;
  top: 0;
}
.taiji::after{
  background-color: black;
  border: 60px solid white;
  bottom: 0;
}
.line{
  width: inherit;
  height: inherit;
  transform-origin:50% 50%;
  transition: all 0s;
  position: absolute;
}
.line1{
  height: 10px;
  width: 80px;
  background-color: #000000;
  margin: 10px auto;
}
.line2{
  display: flex;
  width: 80px;
  margin: 10px auto;
}
.line3,.line4{
  height: 10px;
  width: 35px;
  background-color: #000000;
}
.line4{
  margin-left: 10px;
}
@keyframes rotate{
  0%{
    transform: rotate(0deg);
  }
  100%{
    transform: rotate(360deg);
  }
}
#taiji:hover{
  animation-play-state: running;
}

javaScript部分

var m = document.getElementById('taiji'),
  lineLists = ",2,02,12,012,01,1,0";
lineLists = lineLists.split(',');
//四周的黑线
for(let i = 0; i < 8; i++){
  var newNode = document.createElement("div");
  newNode.classList.add("line");
  for(let j = 0; j < 3; j++){
    let child = document.createElement("div");
    if(lineLists[i].indexOf(j) != -1){
      let c1 = document.createElement("div"),
        c2 = document.createElement("div");
      child.classList.add("line2");
      c1.classList.add("line3");
      c2.classList.add("line4");
      child.appendChild(c1);
      child.appendChild(c2);
    }else{
      child.classList.add("line1");
    }
    newNode.appendChild(child);
  }
  newNode.style.transform = `rotate(${i*45}deg)`;
  m.appendChild(newNode);
}
//太极图中间部分
var newNode = document.createElement("div");
newNode.classList.add("taiji");
m.appendChild(newNode);

GitHub:https://github.com/yongtaozheng/html-css-js-Achieve-cool-results.git

目录
相关文章
|
3月前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
9天前
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
80 24
|
28天前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
45 3
|
2月前
|
JavaScript 前端开发
CSS3 动画和 JavaScript 动画的性能比较
具体的性能表现还会受到许多因素的影响,如动画的复杂程度、浏览器的性能、设备的硬件条件等。在实际应用中,需要根据具体情况选择合适的动画技术。
|
2月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
优化CSS和JavaScript加载
|
2月前
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
|
2月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
2月前
|
前端开发 JavaScript
用HTML CSS JS打造企业级官网 —— 源码直接可用
必看!用HTML+CSS+JS打造企业级官网-源码直接可用,文章代码仅用于学习,禁止用于商业
160 1
|
2月前
|
前端开发 JavaScript 数据处理
CSS 变量的作用域和 JavaScript 变量的作用域有什么不同?
【10月更文挑战第28天】CSS变量和JavaScript变量虽然都有各自的作用域概念,但由于它们所属的语言和应用场景不同,其作用域的定义、范围、覆盖规则以及与其他语言特性的交互方式等方面都存在明显的差异。理解这些差异有助于更好地在Web开发中分别运用它们来实现预期的页面效果和功能逻辑。
|
2月前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
53 3

热门文章

最新文章