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

目录
相关文章
|
1天前
|
JavaScript 前端开发 Java
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(二)
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(二)
|
1天前
|
前端开发 数据安全/隐私保护
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(一)
前端网页开发学习(HTML+CSS+JS)有这一篇就够!(一)
|
3天前
|
前端开发 JavaScript
使用JavaScript动态更改元素的CSS属性
【6月更文挑战第29天】使用JavaScript动态更改元素的CSS属性
10 3
|
3天前
|
前端开发 JavaScript UED
CSS和JavaScript的结合
【6月更文挑战第29天】CSS和JavaScript的结合
11 4
|
4天前
|
前端开发 JavaScript 容器
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
技术经验解读:个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)
13 0
|
5天前
|
移动开发 JavaScript 前端开发
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
rem的适配方案,css文件和js文件的引入方式,特色小边框的制作,DS-Digital.ttf数字展示屏的使用方法:,自适应图片 background-size,jQuery爆bug,a和盒子居中,
|
5天前
|
Web App开发 前端开发 JavaScript
技术心得记录:瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
技术心得记录:瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
|
6天前
|
前端开发 JavaScript
HTML+CSS+JS 倒计时动画效果
HTML+CSS+JS 倒计时动画效果
|
6天前
|
移动开发 前端开发 JavaScript
HTML5+CSS3+JavaScript网页实战
HTML5+CSS3+JavaScript网页实战
|
6天前
|
安全 JavaScript
旋转木马轮播图 html+css+js
旋转木马轮播图 html+css+js