css 滚动词云

css + javascript 实现滚动词云效果

javascript 复制代码
// 163css.js
var radius = 120;
var dtr = Math.PI / 180;
var d = 300;
var mcList = [];
var active = false;
var lasta = 1;
var lastb = 1;
var distr = true;
var tspeed = 10;
var size = 250;
var mouseX = 0;
var mouseY = 0;
var howElliptical = 1;
var aA = null;
var oDiv = null;
window.onload = function() {
    var b = 0;
    var a = null;
    oDiv = document.getElementById("div1");
    aA = oDiv.getElementsByTagName("a");
    for (b = 0; b < aA.length; b++) {
        a = {};
        a.offsetWidth = aA[b].offsetWidth;
        a.offsetHeight = aA[b].offsetHeight;
        mcList.push(a)
    }
    sineCosine(0, 0, 0);
    positionAll();
    oDiv.onmouseover = function() {
        active = true
    }
    ;
    oDiv.onmouseout = function() {
        active = false
    }
    ;
    oDiv.onmousemove = function(e) {
        var c = window.event || e;
        mouseX = c.clientX - (oDiv.offsetLeft + oDiv.offsetWidth / 2);
        mouseY = c.clientY - (oDiv.offsetTop + oDiv.offsetHeight / 2);
        mouseX /= 5;
        mouseY /= 5
    }
    ;
    setInterval(update, 30)
}
;
function update() {
    var o;
    var n;
    if (active) {
        o = (-Math.min(Math.max(-mouseY, -size), size) / radius) * tspeed;
        n = (Math.min(Math.max(-mouseX, -size), size) / radius) * tspeed
    } else {
        o = lasta * 0.98;
        n = lastb * 0.98
    }
    lasta = o;
    lastb = n;
    if (Math.abs(o) <= 0.01 && Math.abs(n) <= 0.01) {
        return
    }
    var m = 0;
    sineCosine(o, n, m);
    for (var h = 0; h < mcList.length; h++) {
        var r = mcList[h].cx;
        var l = mcList[h].cy * ca + mcList[h].cz * (-sa);
        var g = mcList[h].cy * sa + mcList[h].cz * ca;
        var q = r * cb + g * sb;
        var k = l;
        var f = r * (-sb) + g * cb;
        var p = q * cc + k * (-sc);
        var i = q * sc + k * cc;
        var e = f;
        mcList[h].cx = p;
        mcList[h].cy = i;
        mcList[h].cz = e;
        per = d / (d + e);
        mcList[h].x = (howElliptical * p * per) - (howElliptical * 2);
        mcList[h].y = i * per;
        mcList[h].scale = per;
        mcList[h].alpha = per;
        mcList[h].alpha = (mcList[h].alpha - 0.6) * (10 / 6)
    }
    doPosition();
    depthSort()
}
function depthSort() {
    var a = 0;
    var b = [];
    for (a = 0; a < aA.length; a++) {
        b.push(aA[a])
    }
    b.sort(function(e, c) {
        if (e.cz > c.cz) {
            return -1
        } else {
            if (e.cz < c.cz) {
                return 1
            } else {
                return 0
            }
        }
    });
    for (a = 0; a < b.length; a++) {
        b[a].style.zIndex = a
    }
}
function positionAll() {
    var g = 0;
    var e = 0;
    var a = mcList.length;
    var c = 0;
    var f = [];
    var b = document.createDocumentFragment();
    for (c = 0; c < aA.length; c++) {
        f.push(aA[c])
    }
    f.sort(function() {
        return Math.random() < 0.5 ? 1 : -1
    });
    for (c = 0; c < f.length; c++) {
        b.appendChild(f[c])
    }
    oDiv.appendChild(b);
    for (var c = 1; c < a + 1; c++) {
        if (distr) {
            g = Math.acos(-1 + (2 * c - 1) / a);
            e = Math.sqrt(a * Math.PI) * g
        } else {
            g = Math.random() * (Math.PI);
            e = Math.random() * (2 * Math.PI)
        }
        mcList[c - 1].cx = radius * Math.cos(e) * Math.sin(g);
        mcList[c - 1].cy = radius * Math.sin(e) * Math.sin(g);
        mcList[c - 1].cz = radius * Math.cos(g);
        aA[c - 1].style.left = mcList[c - 1].cx + oDiv.offsetWidth / 2 - mcList[c - 1].offsetWidth / 2 + "px";
        aA[c - 1].style.top = mcList[c - 1].cy + oDiv.offsetHeight / 2 - mcList[c - 1].offsetHeight / 2 + "px"
    }
}
function doPosition() {
    var a = oDiv.offsetWidth / 2;
    var c = oDiv.offsetHeight / 2;
    for (var b = 0; b < mcList.length; b++) {
        aA[b].style.left = mcList[b].cx + a - mcList[b].offsetWidth / 2 + "px";
        aA[b].style.top = mcList[b].cy + c - mcList[b].offsetHeight / 2 + "px";
        aA[b].style.fontSize = Math.ceil(12 * mcList[b].scale / 2) + 8 + "px";
        aA[b].style.filter = "alpha(opacity=" + 100 * mcList[b].alpha + ")";
        aA[b].style.opacity = mcList[b].alpha
    }
}
function sineCosine(f, e, g) {
    sa = Math.sin(f * dtr);
    ca = Math.cos(f * dtr);
    sb = Math.sin(e * dtr);
    cb = Math.cos(e * dtr);
    sc = Math.sin(g * dtr);
    cc = Math.cos(g * dtr)
}
;
html 复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- saved from url=(0047)http://bdzh.jg91.com/templets/20130926/163.html -->
<html lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gbk">
        <title></title>
        <style type="text/css">
            body,h1,h2,h3,h4,h5,h6,p,ul,ol,li,form,img,dl,dt,dd,table,th,td,blockquote,fieldset,div,strong,label,em {
                margin: 0;
                padding: 0;
                border: 0;
            }

            ul,ol,li {
                list-style: none;
            }

            #div1 {
                height: 220px;
                margin: 30px 30px 30px 0;
                padding: 0;
                position: relative;
                width: 700px;
            }

            #div1 a {
                background: #e6ae77;
                color: #fff;
                display: block;
                font-weight: bold;
                left: 0;
                padding: 5px;
                position: absolute;
                text-decoration: none;
                top: 0
            }

            #div1 a.aa {
                background: #e6ae77;
                color: #fff
            }

            #div1 a:hover {
                border: 2px solid #FF0000
            }
        </style>
        <script type="text/javascript" src="zywdscripts/163css.js"></script>
        <base target="_blank"/>
    </head>
    <body marginheight="0" marginwidth="0" style="background-color:#fbf3e8;">
        <div id="div1" class="fl">
            <a class="aa" href="/zswd/cs/144913210L624KJ6KAG5F85.html" style="left: 249.401px; top: 154.869px; font-size: 17px; opacity: 1.41512; z-index: 0;">脾的主要功能与运化</a>
            <a href="/zswd/cs/144913619IEAIC54KAIJAB.html" style="left: 161.406px; top: 175.185px; font-size: 17px; opacity: 1.37021; z-index: 1;">怎样理解肺主宣发、肃降,通调水道?</a>
            <a href="/zswd/cs/14491311HLJ6F6GE3FFIB4C.html" style="left: 167.192px; top: 218.945px; font-size: 15px; opacity: 0.743456; z-index: 2;">怎样理解脾统血和肝藏血?</a>
            <a href="/zswd/nj/143301678694IJ72B7H67EA.html" style="left: 261.768px; top: 193.054px; font-size: 14px; opacity: 0.587244; z-index: 3;">阳气在人体中有什么重要作用?</a>
            <a class="aa" href="/zswd/nj/14330162DFBKIE643G15JBB.html" style="left: 302.582px; top: 121.413px; font-size: 15px; opacity: 0.827579; z-index: 4;">怎样理解阳气和阴精的相互关系</a>
            <a class="aa" href="/zswd/sh/14330162J2B6JI66F9A9H2K.html" style="left: 283.997px; top: 65.5633px; font-size: 17px; opacity: 1.35815; z-index: 5;">什么是六经辨证</a>
            <a class="aa" href="/zswd/sh/14330167JLF7ED143G81FGG.html" style="left: 157.006px; top: 62.9974px; font-size: 18px; opacity: 1.67517; z-index: 6;">为什么要辨阴阳两纲?如何辨别</a>
            <a class="aa" href="/zswd/jk/14421668I7AC54EDID7A5K.html" style="left: 107.187px; top: 107.793px; font-size: 17px; opacity: 1.26451; z-index: 7;">怎样通过闻语声、察呼吸来判断病位?</a>
            <a href="/zswd/jk/14421616CEJ94DI89BB82F5.html" style="left: 88.1175px; top: 163.194px; font-size: 15px; opacity: 0.695773; z-index: 8;">怎样掌握先后缓急和审因论治的原则?</a>
            <a href="/zswd/wb/14330174KK514F15CKDI9AJ.html" style="left: 147.83px; top: 188.301px; font-size: 13px; opacity: 0.365502; z-index: 9;">为什么说温病是多种外感急性热性病的总称?</a>
            <a href="/zswd/zy/143311615D575D47BH7H8I8K.html" style="left: 198.677px; top: 161.476px; font-size: 13px; opacity: 0.264945; z-index: 10;">药物的气和味有何关系?</a>
            <a class="aa" href="/zswd/zy/143311612H75G27BHA554ABF.html" style="left: 280.629px; top: 94.4186px; font-size: 13px; opacity: 0.355097; z-index: 11;">升降浮沉对认识和运用药物有何临床意义</a>
            <a class="aa" href="/zswd/fj/14411617KAI2IE4KBDGD32F.html" style="left: 259.491px; top: 23.8429px; font-size: 14px; opacity: 0.622616; z-index: 12;">中成药的特点是什么?怎样选用中成药?</a>
            <a href="/zswd/zj/144913128H4GJAE5GB03GF8.html" style="left: 215.695px; top: -11.1293px; font-size: 14px; opacity: 0.948329; z-index: 13;">针刺时的基本手法与辅助手法有哪些</a>
        </div>
    </body>
</html>
相关推荐
CHH543112 分钟前
3D立体卡片动效(附源码)
前端·css·3d·玩转css
戏拈秃笔12 分钟前
前端——在本地搭建Vue单页应用
前端·javascript·vue.js
Elena_Lucky_baby14 分钟前
vue项目创建+eslint+Prettier+git提交规范(commitizen+hooks+husk)
前端·javascript·vue.js
m0_6442226127 分钟前
HarmonyOS开发探索:自定义键盘-webview
前端·华为·计算机外设·移动开发·harmonyos·鸿蒙开发
铁匠匠匠39 分钟前
django学习入门系列之第三点《案例 小米商城二级菜单》
前端·css·经验分享·python·学习·django·前端框架
呀呀呀雅楠?41 分钟前
vue3(nuxt3)中使用ref获取不到子组件变量
前端·javascript·vue.js·nuxtjs
一颗苹果OMG1 小时前
三栏布局,到底哪种最好用呢
前端·css
小秦学加瓦chen1 小时前
使用docker创建nginx容器部署前端项目
前端·nginx·docker
小怪瘦791 小时前
Vue3使用PDFJS将后端查到的二进制数据转为图片
java·前端·javascript
m0_742887731 小时前
分享一个超级实用的东西——巴比达远程访问
前端·巴比达·免费内网穿透