javascript - 带有文本的跨度的随机位置

标签 javascript jquery html css

我有七个文本跨度。如何设置此跨度的随机位置?我想在不重叠且不退出边缘的情况下设置随机位置。

<!DOCTYPE html>
<html lang="pl">
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>

    <style>
.picture{
    border:1px solid #000;
    margin: 5px 5px 5px 5px;
    position:absolute;
}

.cont {
    position:relative;
    background: red;
    width: 300px;
    height: 300px;
}
</style>    

    <body>
        <div class="cont">
        <input type="text" id="i_file1" name="i_file" class="textField">
        <input type="text" id="i_file2" name="i_file" class="textField">
        <input type="text" id="i_file3" name="i_file" class="textField">
        <input type="text" id="i_file4" name="i_file" class="textField">
        <input type="text" id="i_file5" name="i_file" class="textField">
        <input type="text" id="i_file6" name="i_file" class="textField">
        <input type="text" id="i_file7" name="i_file" class="textField">



        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>
        <br/>

        <button onclick="textFields()" id="texttt"> text </button>
        <button id="losuj" onclick="reset()">reset </button>

    </body>

    <script>

        function textFields() {

            $('input[type="text"]').each(function() {

                var id  = $(this).attr("id");
                id = "#" + id;
                var value1 = $(id).val();
                var html_code = '<br/><br/><span class="blabla">' + value1 + '</span>';
                $(id).after(html_code);
                $(id).hide();
            });

            $("#texttt").hide();

        }



function reset() {

        var containerW = 300;
        var containerH = 300;


        $('.blabla').each(function() {

         var x = parseInt(Math.random() * (containerW-$(this).width()));
         var y = parseInt(Math.random() * (containerH-$(this).height()));   

            $(this).css({
                position: 'absolute',
                top: x + 'px',
                left: y + 'px'
            });
        });
    }



    </script>


</html>

我现在的代码,我将位置设置为随机,但我不知道如何通过重叠来做到这一点。

最佳答案

好的,这是我的解决方案, 具有 TOP 属性:
我将 div 拆分为 (300/20) = 15 个部分——我们可以调用行
所以当第一个 span 显示时,它会取一个随机元素
in ps[] 其余得不到这个元素,rest同理
具有 LEFT 属性:
我将随机 LEFT 从 0 设置到 div 可以包含跨度的点
=> 我确保它们永远不会重叠 希望对您有所帮助!

<!DOCTYPE html>
<html lang="pl">
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    </head>

    <style>
.picture{
    border:1px solid #000;
    margin: 5px 5px 5px 5px;
    position:absolute;
}

.cont {
    position:relative;
    background: red;
    width: 300px;
    height: 300px;
}
</style>    

    <body>
 <button id="losuj" onclick="random()">
        Random
        </button><BR><BR>
        <div class="cont">
        <input type="text" id="i_file1" name="i_file" class="textField">
        <input type="text" id="i_file2" name="i_file" class="textField">
        <input type="text" id="i_file3" name="i_file" class="textField">
        <input type="text" id="i_file4" name="i_file" class="textField">
        <input type="text" id="i_file5" name="i_file" class="textField">
        <input type="text" id="i_file6" name="i_file" class="textField">
        <input type="text" id="i_file7" name="i_file" class="textField">





       

    </body>

    <script>
function getRandomInteger(min, max) {
  min = Math.floor(min);
  max = Math.floor(max);
  var rd = Math.floor(Math.random() * (max - min)) + min;
  return rd;
}



function random() {
        var ps= [];
        var n = 0;
        var containerW = 300;
        var containerH = 300;
        var spanW;
        var spanH;
        var first = true;
        var first_H ;
        var current_H ;
      for(var i=0; i< 15; i++)
      {
        ps[i] = i;
      }
      $('input[type="text"]').each(function() {
if(first)
{
  spanW = $(this).width();
  spanH = $(this).height();
  first = false
 }
  var x = getRandomInteger(0,containerW-spanW);
  var p = getRandomInteger(0,ps.length-1);
  var y = ps[p]*20;
  ps.splice(p, 1);
  $(this).css({
    position: 'absolute',
    top: y + 'px',
    left: x + 'px'
  });
});
}
    


    </script>


</html>

关于javascript - 带有文本的跨度的随机位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42540076/

相关文章:

jquery - 发出多个 AJAX 请求的最实用方法

html - 使用 Tapestry 的网络响应式设计

javascript - 将网站上的所有右键点击变成左键点击

javascript - 使用 Django 提供随机图像

javascript - 如何保证 jQuery $ 被初始化?

javascript - 为什么当 src 在 bootstrap 4 模态中使用 jQuery 是动态的时 HTML5 视频标签不起作用?

html - 如何使 SELECT 选项出现在 DIV 容器之外

javascript - 具有多个文本输入的 DRY javascript

javascript - 如何等待可观察对象完成以返回值?

javascript - IE 跟随链接甚至在 onclick ="return false;"之后