动态绘制圆桌座椅并且旋转座椅角度(chrome)

circleDeskDraw.zip 对应博文https://blog.youkuaiyun.com/github_39274378/article/details/115903487 立即下载
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<style>
    .container{
        width: 100%;
        height: 100%;
        display: flex;
    }
    #circleDesk {
        position: relative;
        top: 100px;
        left: 100px;
    }

    #circleDesk .circleSeat {
        position: absolute;
        background: transparent url("./confSeat.png") no-repeat 0 0 / 100% 100%;
        color: #000;
        text-align: center;
        font-size: 12px;
        border: 1px solid red;
    }
    #circleDesk .circleSeat .seatNum{
        display: flex;
        justify-content: center;
        align-items: center;
        color: #000;
        width: 40px;
        height: 40px;
        border: 1px solid green;
    }
    #circleDesk .centerDesk {
        background: transparent url("./confDeskCircle.png") no-repeat 0 0 / 100% 100%;
        width: 500px;
        height: 500px;
        border-radius: 500px;
        position: absolute;
    }

</style>
<div class="container">
    <div id="circleDesk">
        <div  class="deskBox">
            <!--
                圆心
                半径 iR = 50px;
                圆心坐标(150,150)
            -->
            <div class="centerDesk"></div>
            <!--
                ==========================
                最大菜单块(正方形)
                对角线长度 mDLen = oR - iR;
                边长 mWidth = mHeight = mDLen的平方 / 2 的结果 再开方 最后取整
                ==========================
                菜单块滑动圆
                半径 mR = iR + (mDLen / 2)
                ==========================
            -->
            <div id="C1" class="circleSeat" >
                <span>张三1</span>
                <span id="CN1" class="seatNum">1</span>
            </div>
            <div id="C2" class="circleSeat" >
                <span>张三2</span>
                <span id="CN2" class="seatNum">2</span>
            </div>
            <div id="C3" class="circleSeat" >
                <span>张三2</span>
                <span id="CN3" class="seatNum">3</span>
            </div>
            <div id="C4" class="circleSeat" >
                <span>张三3</span>
                <span id="CN4" class="seatNum">4</span>
            </div>
            <div id="C5" class="circleSeat" >
                <span>张三3</span>
                <span id="CN5" class="seatNum">5</span>
            </div>
            <div id="C6" class="circleSeat" >
                <span>张三3</span>
                <span id="CN6" class="seatNum">6</span>
            </div>
            <div id="C7" class="circleSeat" >
                <span>张三3</span>
                <span id="CN7" class="seatNum">7</span>
            </div>
            <div id="C8" class="circleSeat" >
                <span>张三3</span>
                <span id="CN8" class="seatNum">8</span>
            </div>
            <div id="C9" class="circleSeat" >
                <span>张三3</span>
                <span id="CN9" class="seatNum">9</span>
            </div>
            <div id="C10" class="circleSeat" >
                <span>张三3</span>
                <span id="CN10" class="seatNum">10</span>
            </div>
            <div id="C11" class="circleSeat" >
                <span>张三3</span>
                <span id="CN11" class="seatNum">11</span>
            </div>
            <div id="C12" class="circleSeat" >
                <span>张三3</span>
                <span id="CN12" class="seatNum">12</span>
            </div>
            <div id="C13" class="circleSeat" >
                <span>张三13</span>
                <span id="CN13" class="seatNum">13</span>
            </div>
            <div id="C14" class="circleSeat" >
                <span>张三13</span>
                <span id="CN14" class="seatNum">14</span>
            </div>
            <div id="C15" class="circleSeat" >
                <span>张三13</span>
                <span id="CN15" class="seatNum">15</span>
            </div>
            <div id="C16" class="circleSeat" >
                <span>张三16</span>
                <span id="CN16" class="seatNum">16</span>
            </div>
            <div id="C17" class="circleSeat" >
                <span>张三17</span>
                <span id="CN17" class="seatNum">17</span>
            </div>
            <div id="C18" class="circleSeat" >
                <span>张三18</span>
                <span id="CN18" class="seatNum">18</span>
            </div>
            <div id="C19" class="circleSeat" >
                <span>张三19</span>
                <span id="CN19" class="seatNum">19</span>
            </div>
            <div id="C20" class="circleSeat" >
                <span>张三13</span>
                <span id="CN20" class="seatNum">20</span>
            </div>
            <div id="C21" class="circleSeat" >
                <span>张三21</span>
                <span id="CN21" class="seatNum">21</span>
            </div>
            <div id="C22" class="circleSeat" >
                <span>张三22</span>
                <span id="CN22" class="seatNum">22</span>
            </div>
            <div id="C23" class="circleSeat" >
                <span>张三23</span>
                <span id="CN23" class="seatNum">23</span>
            </div>
            <div id="C24" class="circleSeat" >
                <span>张三24</span>
                <span id="CN24" class="seatNum">24</span>
            </div>
            <div id="C25" class="circleSeat" >
                <span>张三25</span>
                <span id="CN25" class="seatNum">25</span>
            </div>

        </div>
    </div>
</div>

<script src="../../src/jquery-1.11.3.js"></script>
<script>
    
    drawCircleDesk(25);
    //drawCircleDeskNum(25);
    function drawCircleDesk(num) {
        var cW=parseInt($(".centerDesk").width());
        var cH=parseInt($(".centerDesk").height());

        var dL=$(".centerDesk").offset().left;
        var dT=$('.centerDesk').offset().top;
        // var dL=$(".centerDesk").css('left');
        // var dT=$('.centerDesk').css('top');
        console.log('dL',dL,'dT',dT);
        var mWidth = 40;//座位大小

        var irx = cW/2; //中间圆的半径
        var iry= cH/2;
        var orx = irx+mWidth;//最外层圆的半径,决定座位与中间圆的紧密程度,圆环的宽度
        var ory=iry+mWidth;
        var osx=dL+irx-mWidth/2;   //决定座位相对中间圆的位置
        var osy=dT+iry-mWidth/2;   //决定座位相对中间圆的位置

        $("#circleDesk .circleSeat").width(mWidth);
        $("#circleDesk .circleSeat").height(mWidth);
        //绘制圆形座位
        for(var i=0;i<num;i++){
            var degNum=(360/num)*i+'deg';

            var Cx=parseInt( -(Math.cos( (270-(360/num)*i) * Math.PI/180 ) * (orx + irx )/2) + osx  );
            var Cy=parseInt( (Math.sin( (270-(360/num)*i) * Math.PI/180 ) * (ory + iry )/2) + osy  );
            var ii=i+1;
            $("#C"+ii).offset( {top:Cy,left:Cx} );
            $("#C"+ii).css({
                transform:`rotate(${degNum})`
                // top:Cy,
                // left:Cx
            })
        }
    }
    function drawCircleDeskNum(num) {
        var cW=parseInt($(".centerDesk").width());
        var cH=parseInt($(".centerDesk").height());

        var dL=$(".centerDesk").offset().left;
        var dT=$('.centerDesk').offset().top;
        console.log('dL',dL,'dT',dT);
        var mWidth = 40;//座位大小

        var irx = cW/2; //中间圆的半径
        var iry= cH/2;
        var orx = irx-mWidth*2;//最外层圆的半径,决定座位与中间圆的紧密程度,圆环的宽度
        var ory=iry-mWidth*2;
        var osx=dL+irx-mWidth/2;   //决定座位相对中间圆的位置
        var osy=dT+iry-mWidth/2;   //决定座位相对中间圆的位置


        //绘制圆形座位
        for(var i=0;i<num;i++){
            var Cx=parseInt( -(Math.cos( (270-(360/num)*i) * Math.PI/180 ) * (orx + irx )/2) + osx  );
            var Cy=parseInt( (Math.sin( (270-(360/num)*i) * Math.PI/180 ) * (ory + iry )/2) + osy  );
            var ii=i+1;

            $("#CN"+ii).offset( {top:Cy,left:Cx} );
        }
    }
</script>
</body>
</html>

完整demo可下载:https://download.youkuaiyun.com/download/github_39274378/16771823

或见github:https://github.com/nhclike/web-test-demo

全景自动拼接源码Github资源 全景自动拼接源码Github资源源码,可以对照代码学习opencv的拼接方法使用,可以结合论文查看相关算法原理,更为直观迅速 立即下载

相关推荐

Gamit10.71添加新的天线类型

添加新的天线类型需要涉及到四个文件:antmod.dat,rcvant.dat,guess_rcvant.dat,hi.dat。 注意:格式要一致!!! 举例说明,我要添加一个JCA229的天线(带JCAD天线罩),对应接收机使用的是南方的South Net-S9。

Penny的博客 2711

前端实现教室课桌布局,可点击选中

前端实现教室课桌布局,可点击选中

qying的博客 1274

INS/伪距组合导航(2)

伪距惯导组合导航

u014430081的博客 827

圆桌问题

圆桌问题 题目描述 输入格式 2206.in 文件第1行有2个正整数m和n,m表示单位数,n表示餐桌数,1 输出格式 2206.out 如果问题有解,在文件第1行输出1,否则输出0。接下来的m行给出每个单位代表的就餐桌号。如果有多个满足要求的方案,只要输出1个方案。 输入样例 2206.in 4 5  4 5 3 5  3 5 2 6 4 输出样例 2206.out

littlewyy的博客 2624

PCB过孔全介绍

过孔(via)是多层PCB的重要组成部分之一,钻孔的费用通常占PCB制板费用的30%到40%。简单的说来,PCB上的每一个孔都可以称之为过孔。从作用上看,过孔可以分成两类:一是用作各层间的电气连接;二是用作器件的固定或定位。如果从工艺制程上来说,这些过孔一般又分为三类,即盲孔(blind via)、埋孔(buried via)和通孔(through via)。盲孔位于印刷线路板的顶层和底层表面,具

小王的自我修行路 2355

yakit 验证码识别 进行webfuzzer

在渗透测试的过程中,我们可能需要对管理员密码进行枚举,或者密码喷洒的时候,遇到验证码就很烦。有没有自动化识别验证码的办法呢?有的,兄弟,有的。验证码的识别率很低,captcha-killer-modified对算术验证码识别正确率非常低,还会识别成乱七八糟的结果,这就非常麻烦。因为你不知道到底是验证码不对,还是密码不对。这是 ddddocr 识别率的问题,如果师傅们找到准确度更高的工具,完全可以替换上去。

Arkmornings的博客 1664

圆桌会议(圆排列)

圆桌会议 题目描述 有N个人顺时针围在一圆桌上开会,他们对身高很敏感. 因此决定想使得任意相邻的两人的身高差距最大值最小. 如果答案不唯一,输出字典序最小的排列,指的是身高的排列. 输入格式 1864.in 多组测试数据。第一行:一个整数ng, 1 <= ng <= 5. 表示有ng组测试数据。 每组测试数据格式如下: 第一行: 一个整数N, 3 第二行, 有

yiyiyizqy的博客 2593

智能化运维(AIOps)

• 调查显示,54.79%的企业当前着重关注智能运维的质量领域(包括异常检测、告警收敛、根因分析、 故障处置等)能力建设,其次45.77%的企业关注效率领域,45.49%的企业关注成本领域,30.82%的 企业关注安全领域。从目前的发展情况来看,现阶段AIOps能力大多集中在L2级别, 主要以系统辅助分析,帮助人工进行决策和操作为主,较为领先的 能力实践可以达到L3级别,而L4和L5级别随着AIOps的技术发展 和能力的逐步增强,将是未来智能运维能力建设的发展方向和目标。

追求更专业的设计 3095

【网络流24题】圆桌问题

链接 https://www.luogu.org/problemnew/show/P3254 大意 有n&amp;lt;=150n&amp;lt;=150naiaia_i个人,现在有mmm个桌子,每个桌子可以容纳bibib_i个人,请问在是否存在一种方案使得所有人都有桌子坐并且同桌子的人不同单位? 思路 最大流求最大匹配 先拆点,每个节点拆成i.ai.ai.a和i.bi.bi.b,分别表示单位...

Ajwallet 808

YOLOv11 损失函数进阶:Varifocal Loss 让正负样本精度双升

创建self.alpha = alpha # 正样本权重系数self.gamma = gamma # 聚焦系数self.lambda_reg = lambda_reg # 回归损失权重# 分类损失:Varifocal Classification Loss# 正样本权重:基于预测置信度# 计算 BCE 损失并加权cls_loss = cls_loss.sum() / (cls_true.sum() + 1e-6) # 按正样本数归一化。

m0_71589036的博客 440

高分六号WFV预处理详细步骤(辐射校正、大气校正、几何校正)

高分六号WFV传感器获得的影像的预处理分为两个步骤:辐射校正和大气校正,辐射校正为了消除传感器的自身误差,大气校正为了消除大气的折射误差。 一、辐射校正 按照红框中信息进行更改。 辐射校正前地物光谱反射率: 校正后的地物光谱曲线的变化: 二、大气校正 ENVI中大气校正一般采用Flaash模型,但是这个模型需要设置许多的参数十分的麻烦,所以采用ENVI商店(app store,这个也需要下载的)里的Flaash Easy To Use 这个插件,可以快速地进行大气校正。 大气校正后的地物反射率 这

qq_41828818的博客 1万+

圆桌上的晚餐

http://120.78.162.102/problem.php?cid=1432&amp;pid=6 http://120.78.162.102/problem.php?id=6239 题解:模拟 /* *@Author: STZG *@Language: C++ */ #include &lt;bits/stdc++.h&gt; #include&lt;iostream&gt; ...

无限迭代中...... 512

R语言中的summarise函数和mutate函数用于计算分组占比。下面是关于这两个函数的详细介绍以及相应的源代码示例:

R语言中的summarise函数和mutate函数用于计算分组占比。

CodeByte的博客 1182

1024. 视频拼接(动态规划)

/** * 1024. 视频拼接 * @author wsq * @date 2020/10/24 你将会获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。 视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。 我们需要将这些片段进行再剪辑,并将剪辑后

Codeoh的博客 11万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

JS版圆桌骑士DEMO

同学们,我参加了IE9开发大赛,作品是网页版圆桌骑士,喜欢的话帮忙投票吧! [url=http://ie9.onlinevoc.cn/contest/PercodPage.aspx?ID=43]http://ie9.onlinevoc.cn/contest/PercodPage.aspx?ID=43[/url] 请使用IE9 beta,Chrome7+, Safari5+, FF3.6+ ...

takuma889的博客 316

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

餐厅座位表 canvas实现

一听就是很牛逼的样子  没错就是很牛逼 把的样子去了!!刚刚接手的时候 ,老大说 来这有个功能  你来实现以下   简述一下:双手指中心为原点缩放整张图,要求放大 缩小有极限 不能一直缩放  ,要求移动但有范围 ,点击画出的座位,获取当前点击的座位编号, 改变颜色!当时我一想 ,简单啊!还能更简单一点吗! 放大缩小  不就是改变图形大小么; 移动就是改变坐标而已  ,点击 更简单了  获取当前点

try again 2679

动态生成圆桌座椅兼容ie/chrome

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <style> .container{ width: 100%; height: 100%; display: flex; .

github_39274378的博客 850

首发:徐亦达团队新论文推荐(ECCV2020):端到端多人多视角3d动态匹配网络

徐亦达团队在ECCV2020上发表了一篇机器学习论文End-to-end Dynamic Matching Network for Multi-view Multi-person 3d ...

fengdu78的博客 814

Contrastive Multiview Coding(多视角的对比学习编码)

原文题目为:Contrastive Multiview Coding 代码链接:https://github.com/HobbitLong/CMC 引言 本文主要提出了Multiview 的contrastive learning。motivation是现实世界中看待同一个物体具有多个视角,每一个视角都是有噪声和不完整的,但是一些对于该物体很重要的元素,例如physics(物理), geometr...

winycg的博客 8110

圆桌会议

【题目描述】 有 N 个人顺时针围在一圆桌上开会,他们对身高很敏感。 因此决定想使得任意相邻的两人的身高差距最大值最小。 如果答案不唯一,输出字典序最小的排列,指的是身高的排列。N<=5500 【输入格式】 第一行一个整数N 第二行有N个整数, 第i个整数表示第i个人的身高hi, 1<=hi<=1000。 按顺指针给出N个人的身高 【输...

406

js+css3围绕中心圆形旋转动画js特效

下载地址 js+css3圆形旋转动画特效,鼠标悬停的时候会暂停,离开的时候又继续旋转。 dd:

ICode联盟 1524

【技术专题】HTML5 网页技术 - HTML5 地理定位 API & Web Workers

Java1234_小锋老师推出《一天学会 HTML5 视频教程(无废话版)》,涵盖HTML5核心知识点,包括语义化标签、音频视频、Canvas动画、SVG、Web Storage、File API、拖放与地理定位API,以及关键的Web Workers多线程技术。通过实战示例详解navigator.geolocation获取位置信息及Worker后台执行耗时任务,实现页面流畅交互。配套课件、源码打包下载,助力快速掌握现代Web开发技能。

java1234的博客 207

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 328

React 性能:memo / useMemo / useCallback

讲清 memo/useMemo/useCallback 的配合与边界,先测量再优化,避开常见过早优化。

JudithHuang的博客 322

Claude Code 从入门到实战(一):安装、登录与第一个Vue项目

Claude Code 系列实战第 1 篇:先认识 Claude Code 的工作方式与任务循环,完成 npm 安装、登录与授权,通过让 Claude 理解一个 Vue 项目完成第一次实战任务,并辨析默认、自动接受编辑、Plan 规划等权限模式的差异与选择策略。

weixin_45284808的博客 204

DSH (DeepSeek Harness) Windows 升级安装指南20261107

注意:如果在普通窗口执行 nvm 提示找不到命令,或执行 nvm use 提示 Access is denied,请务必关闭当前窗口,重新打开一个管理员CMD 执行上述完整路径命令。找到 .credentials.yaml,将其重命名为 .credentials.yaml.bak(备份并使其失效)。Node.js Storage Location:可改到非系统盘(如 D:\dev\nvm,避免路径含空格或中文)。打开文件资源管理器,进入 C:\Users<你的用户名>.dsh\。

fengye207161的博客 182
上一篇: 动态生成圆桌座椅兼容ie/chrome
github_39274378
博客等级 码龄9年 13粉丝 47原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值