html 个 div 的起始位置和随机移动

Start position and random movement for html divs

我想得到类似 this 的东西,但是我的 html div 包含句子而不是 css 方块。我试图让句子从随机位置开始并在页面上随机移动。我尝试调用 html div 而不是在 javascript 中创建新的 div;我不知道这是否是正确的方法..这可能吗? 不习惯javascript,开始用

我的html代码:

<html>
    <head>
        <title>Niveau 1</title>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="script.js"></script>
        <link href="style.css" rel="stylesheet" />
    </head>
    <body>
        <div class='d1'>
            <p><a href="niveaux/niveau2/niveau2.html">quoi maintenant ?</a></p>
        </div>
        <div class='d2'>
            <p><a href="niveaux/niveau2/niveau2.html">quand maintenant ?</a></p>
        </div>
        <div class='d3'>
            <p><a href="niveaux/niveau2/niveau2.html">qui maintenant ?</a></p>
        </div>
        <div class='d4'>
            <p><a href="niveaux/niveau2/niveau2.html">où maintenant ?</a></p>
        </div>
        <div class='d5'>
            <p><a href="niveaux/niveau2/niveau2.html">aller de l'avant, appeler ça aller, appeler ça de l'avant</a></p>
        </div>
        <div class='d6'>
            <p><a href="niveaux/niveau2/niveau2.html">longuement, brièvement, c'est égal</a></p>
        </div>
        <div class='d7'>
            <p><a href="niveaux/niveau3/niveau3.html">quelle liberté</a></p>
        </div>
        <div class='d8'>
            <p><a href="niveaux/niveau4/niveau4.html">quelque fois je me dis toi, si c'est moi qui parle</a></p>
        </div>
    </body>
</html>

我的javascript代码:


$(document).ready(function(){
    animateDiv('.d1');
    animateDiv('.d2');
    animateDiv('.d3');
    animateDiv('.d4');
    animateDiv('.d5');
    animateDiv('.d6');
    animateDiv('.d7');
    animateDiv('.d8');
});

function makeNewPosition(){

    var h = $(window).height() - 50;
    var w = $(window).width() - 50;

    var nh = Math.floor(Math.random() * h);
    var nw = Math.floor(Math.random() * w);

    return [nh,nw];

}

function animateDiv(myclass){
    var newq = makeNewPosition();
    $(myclass).animate({ top: newq[1], left: newq[0] }, 15000,   function(){
      animateDiv(myclass);
    });

};

}

我的css代码:

    height: 100%;
    width: 100%;
    margin: none;
    padding: none;
    background-color: black;
}

* {
   cursor: none;
}

div.d1, .d2, .d3, .d4, .d5, .d6, .d7, .d8 {
    position:fixed;
    font-size: 20px;
    text-decoration: none;
    font-family: Arial, Helvetica, sans-serif;
    cursor: none;
    color: transparent;
    text-shadow: 0px 0px 5px #ffffff;
}

a {
    text-decoration: none;
    color: transparent;
}

a:visited {
    text-decoration: none; color: transparent;
}

a:hover {
    color: none;
    text-decoration:none;
    cursor:crosshair;
    text-shadow: 0px 0px 3px #ffffff
}

要将文本放在开头的随机位置,您可以使用 $.css() 而不是 $.animate() 来立即移动元素:

function moveDiv(myclass) {
    var newq = makeNewPosition();
    $(myclass).css({ top: newq[1], left: newq[0] });
}

并更新 document.ready 函数以对所有元素调用 moveDiv()

$(document).ready(function () {
    moveDiv('.d1');
    moveDiv('.d2');
    moveDiv('.d3');
    moveDiv('.d4');
    moveDiv('.d5');
    moveDiv('.d6');
    moveDiv('.d7');
    moveDiv('.d8');
    animateDiv('.d1');
    animateDiv('.d2');
    animateDiv('.d3');
    animateDiv('.d4');
    animateDiv('.d5');
    animateDiv('.d6');
    animateDiv('.d7');
    animateDiv('.d8');
});

P.S.

我必须应用一些修复程序才能使您的代码正常工作:

  • 我不得不删除 JavaScript
  • 末尾多余的 }
function animateDiv(myclass){
    var newq = makeNewPosition();
    $(myclass).animate({ top: newq[1], left: newq[0] }, 15000,   function(){
      animateDiv(myclass);
    });

};

// } <- remove
  • 而且您的 CSS 开头似乎被截断了,所以我在顶部添加了 html {
html {
    height: 100%;
    width: 100%;
    margin: none;
    padding: none;
    background-color: black;
}