web实现太极八卦图、旋转动画、定位、角度、坐标、html、css、JavaScript、animation

news2025/1/8 4:26:23

文章目录

  • 前言
  • 1、html部分
  • 2、css部分
  • 3、JavaScript部分
  • 4、微信小程序演示


前言

哈哈


1、html部分

<div class="great_ultimate_eight_diagrams_box">
        <div class="eight_diagrams_box">
            <div class="eight_diagrams">
                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">天乾</div>
                            <div class="direction">正南</div>
                        </div>

                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">风巽</div>
                            <div class="direction">西南</div>
                        </div>

                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">水坎</div>
                            <div class="direction">正西</div>
                        </div>

                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">山艮</div>
                            <div class="direction">西北</div>
                        </div>

                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">地坤</div>
                            <div class="direction">正北</div>
                        </div>
                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">雷震</div>
                            <div class="direction">东北</div>
                        </div>

                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">火离</div>
                            <div class="direction">正东</div>
                        </div>

                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="eight_diagrams_item">
                    <div class="yin_yang">
                        <div class="divinatory_direction_box">
                            <div class="divinatory_name">泽兑</div>
                            <div class="direction">东南</div>
                        </div>
                        <div class="yy_box">
                            <div class="yy_t">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_m">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                            <div class="yy_b">
                                <div style="flex: 3; background-color: #333;"></div>
                                <div style="flex: 1; background-color: #333;"></div>
                                <div style="flex: 3; background-color: #333;"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- 太极 -->
        <div class="great_ultimate_box">
            <div class="great_ultimate"></div>
        </div>
    </div>

☺☺☺☺☺☺☺

关于html结构未做优化,望谅解!不过微信小程的代码已经优化好,有需要的伙伴可以私聊。对于页面结构就不做过多阐述,多看几下就明白了咋回事了。


2、css部分

.great_ultimate_eight_diagrams_box {
    display: flex;
    justify-content: center;
    align-items: center;
    animation: circularRotation linear infinite 30s;
}

/* 八卦 */
.eight_diagrams_box {
    position: relative;
}

.eight_diagrams {
    width: 410px;
    height: 410px;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
}

.eight_diagrams_item {
    width: 100px;
    position: absolute;
}

.yin_yang {
    width: 100%;
    height: 100%;
    text-align: center;
}

.divinatory_name {
    /* 文字两端对齐 */
    text-align-last: justify;
    font-size: 20px;
    font-weight: 700;
    padding: 0 20px;
}

.direction {
    margin-top: 2px;
    text-align-last: justify;
    padding: 0 10px;
}

.yy_box {
    margin-top: 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.yy_t,
.yy_m,
.yy_b {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0;
    margin: 0;
}

.yy_m {
    margin-top: 8px;
}

.yy_b {
    margin-top: 8px;
}

.yy_t div,
.yy_m div,
.yy_b div {
    width: 100%;
    height: 8px;
}

/* 太极 */
.great_ultimate_box {
    position: absolute;
}

.great_ultimate {
    width: 270px;
    height: 270px;
    border-radius: 50%;
    /* 圆球上半部分为白色,下半部分为黑色 */
    background: linear-gradient(to bottom,
            #ffffff 0%,
            #ffffff 50%,
            #000000 50%,
            #000000 100%);
    position: relative;
    transform: rotate(-90deg);
}

.great_ultimate::before {
    position: absolute;
    content: "";
    width: 45.5px;
    height: 45.5px;
    border-radius: 50%;
    border: 45px solid #000000;
    /* 左侧黑球套白点  */
    background-color: #FFFFFF;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
}

.great_ultimate::after {
    position: absolute;
    content: "";
    width: 45.5px;
    height: 45.5px;
    border-radius: 50%;
    border: 45px solid #FFFFFF;
    /* 右侧白球套黑点 */
    background-color: #000000;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
}

@keyframes circularRotation {
    form {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

☺☺☺☺☺☺☺

八卦图主要就是使用定位,通过JavaScript计算每一个div的坐标,然后定位到指定位置即可。关于太极图可查看本篇文章了解详情。


3、JavaScript部分

function init() {
    let elItem = document.querySelectorAll('.eight_diagrams_item'),
        yin_yang = document.querySelectorAll('.yin_yang'),
        radius = document.querySelector('.eight_diagrams').clientWidth / 2,
        itemLen = elItem.length,
        pieceDeg = 360 / itemLen;

    for (let i = 0; i < itemLen; i++) {
        let t = i * pieceDeg,
            x = undefined,
            y = undefined;

        yin_yang[i].style.transform = `rotate(${t}deg)`;

        t = (Math.PI / 180) * t;
        x = Math.sin(t) * radius;
        y = -Math.cos(t) * radius;

        elItem[i].style.transform = `translate(${x}px, ${y}px)`;
    }
}

init();

☺☺☺☺☺☺

定义名为init的函数,用来设置旋转元素的坐标。
通过querySelectorAll获取一个元素类数组。
通过querySelectorclientWidth获取外层容器的宽度并除以2得到半径。
通过querySelectorAll获取内层元素的类数组,并使用yin_yang变量保存。
定义itemLen变量保存类数组长度。
通过类数组长度计算元素角度的平均值,并保存到pieceDeg变量中。
使用for循环计算出每个元素的xy坐标,i * pieceDeg得到角度值;(Math.PI / 180) * t得到弧度值,因为编程中的sincos需要通过弧度才能计算出坐标值。

yin_yang[i].style.transform = 'rotate(' + t + 'deg)';
elItem[i].style.transform = 'translate(' + x + 'px', y + 'px)';
第一句代码设置元素的旋转角度;第二句话设置元素的坐标位置。以上两句话可以有更好的方式实现,但是在这里暂时不优化。


4、微信小程序演示

X2_2_1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/403545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用MyBatis框架实现对数据库的增删查改?

目录&#xff1a;1.创建MyBatis项目以及如何配置2.MyBatis操作数据库的模式3.实现增删查改注意&#xff1a;在我们操作数据库之前&#xff0c;先要保证我们已经在数据库建好了一张表。创建MyBatis项目以及如何配置我们在创建项目的时候&#xff0c;引入MyBatis相关依赖配置数据…

动态内存分配之伙伴算法

伙伴算法 伙伴算法是一种在计算机内存管理中使用的算法&#xff0c;用于分配和释放内存。它是一种基于二叉树的动态内存分配算法&#xff0c;可以高效地分配和合并内存块。伙伴算法是一种按照固定大小分配内存的算法&#xff0c;例如&#xff0c;每个内存块的大小为2的n次幂&a…

MyBatis学习笔记(十二) —— MyBatis的逆向工程

12、MyBatis的逆向工程 正向工程&#xff1a;先创建Java实体类&#xff0c;由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。 逆向工程&#xff1a;先创建数据库表&#xff0c;由框架负责根据数据库表&#xff0c;反向生成如下资源&#xff1a; Java实体类Mappe…

操作系统--基于Linux的常用命令(超详细/设计/实验/作业/练习)

目录课程名&#xff1a;操作系统原理及Linux应用内容/作用&#xff1a;设计/实验/作业/练习学习&#xff1a;基于Linux的常用命令一、前言二、环境与设备三、原理四、内容五、总结与分析课程名&#xff1a;操作系统原理及Linux应用 内容/作用&#xff1a;设计/实验/作业/练习 …

苹果和富士康坚持推进印度制造,过于一厢情愿了,或加速衰退

在印度生产iPhone面临重重波折后&#xff0c;苹果和富士康仍然执意推进印度制造&#xff0c;这对于本已面临诸多风波的苹果来说并非好事&#xff0c;或许会加速苹果的衰退&#xff0c;毕竟如今的苹果早已没有当年的影响力了。一、苹果面临的问题苹果能成为智能手机市场的领导者…

【专项训练】排序算法

排序算法 非比较类的排序,基本上就是放在一个数组里面,统计每个数出现的次序 最重要的排序是比较类排序! O(nlogn)的3个排序,必须要会!即:堆排序、快速排序、归并排序! 快速排序:分治 经典快排 def quickSort1(arr

WinRAR安装教程

文章目录WinRAR安装教程无广告1. 下载2. 安装3. 注册4. 去广告WinRAR安装教程无广告 1. 下载 国内官网&#xff1a;https://www.winrar.com.cn/ 2. 安装 双击&#xff0c;使用默认路径&#xff1a; 点击“安装”。 点击“确定”。 点击“完成”。 3. 注册 链接&#xff…

第161篇 笔记-去中心化的含义

本文主要内容来自Vitalik Buterin的文章。“去中心化”这个词是在加密经济学领域用得最多的一个词&#xff0c;通常也作为辨别区块链的依据。然而&#xff0c;这个词也可能是被定义得最不恰当的一个词。数千小时的研究和价值数十亿美元哈希算力的投入都旨在实现去中心化&#x…

wsl ubuntu22.04 conda环境安装labelImg解决xcb缺失问题

labelImg 安装 pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install labelImg -i https://pypi.tuna.tsingh…

Java基础学习(2)

Java基础学习一 基础概念1.1 注释1.2 关键字1.3 字面量特殊字符1.4 变量1.5 数据类型1.6 标识符1.7 键盘输入二 运算符隐式转换强制转换三元运算符运算符的优先级二 源码 补码 反码2.1 源码2.2 反码2.3 补码其他运算符逻辑与逻辑或左移右移一 基础概念 1.1 注释 对自己所写的内…

HTML快速入门

目录HTML概念HTML基本格式基本语法常用标签1.文件标签&#xff1a;构成html最基本的标签2.文本标签&#xff1a;和文本有关的标签3.列表标签4.图片标签5.超链接标签6.表格标签7.表单标签HTML概念 HTML是最基础的网页开发语言&#xff0c;Hyper Text Markup Language&#xff0…

保姆级使用PyTorch训练与评估自己的Replknet网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址&#xff1a;https://github.com/Fafa-DL/Awesome-Backbones 操作教程&#xff1a;https://www.bilibili.co…

cocoscreator打包android app bundle使用Play Asset Delivery分包

1.cocoscreator构建完android项目 2.用androidstudio打开项目 3.点击androidstudio上项目目录左上角的Android改为Project 4. 在项目目录下新建Modul 5.选择Android Library 6.命名assetPack1或者自定义&#xff0c;点击Finish 7.在新建的assetPack1目录下找到build.gradle并…

【408数据结构】一篇文章吃透算法时间复杂度

文章目录前言1. 什么是好的算法2. 算法的效率度量3. 时间复杂度4. 大 O 时间复杂度表示法5. 算法时间复杂度计算规则&#x1f351; 规则 1&#xff1a;只关注循环中的代码段&#x1f351; 规则 2&#xff1a;加法规则&#x1f351; 规则 3&#xff1a;乘法规则6. 常见算法时间复…

两道有关链表的练习

目录 一、分割链表 二、奇偶链表 一、分割链表 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1&#xff1a; 输…

国科大论文latex模板中可能的注意事项

背景 国科大2022年9月发布了毕业论文的LaTeX模板&#xff0c;它是在ucasthesis上修改而来的&#xff0c;但近日使用国科大发布版本时发现有几点不同以及需要注意的地方。本人只会简单使用latex&#xff0c;但并不熟悉latex样式编辑&#xff0c;因此以下介绍与方法仅供参考。仅…

基于 Flink CDC 的实时同步系统

摘要&#xff1a;本文整理自科杰科技大数据架构师张军&#xff0c;在 FFA 2022 数据集成专场的分享。本篇内容主要分为四个部分&#xff1a;功能概述架构设计技术挑战生产实践Tips&#xff1a;点击「阅读原文」查看原文视频&演讲 ppt科杰科技是专门做大数据服务的供应商&am…

Regmap API 实验

目录 一、Regmap regmap 结构体 regmap_config 结构体 regmap_config 掩码设置 二、Regmap 操作函数 1、Regmap 申请与初始化 2、 regmap 设备访问 API 函数 3、regmap_update_bits 函数 4、regmap_bulk_read函数 5、regmap_bulk_write 三、修改SPI实验 1、添加regmap…

Kubenates中的日志收集方案ELK(下)

1、rpm安装Logstash wget https://artifacts.elastic.co/downloads/logstash/logstash-6.8.7.rpm yum install -y logstash-6.8.7.rpm2、创建syslog配置 input {beats{port> 5044 } }output {elasticsearch {hosts > ["http://localhost:9200"]index …

【博客632】k8s service ession affinity原理与iptables recent模块

k8s service ession affinity原理与iptables recent模块 1、iptables recent模块 作用&#xff1a; iptables的recent模块用于限制一段时间内的连接数, 是谨防大量请求攻击的必杀绝技! 善加利用该模块可充分保证服务器安全。 recent常用参数&#xff1a; –name 设定列表名称…