Math.random()练习-点击生成随机颜色随机位置的div(基础+进阶)

该文章可以对Math.random()充分练习,进阶版用Math.random()实现随机颜色,随机盒子大小,随机盒子位置,该文章分为基础篇和进阶篇,适用于小白学习和大佬巩固。
基础篇:
设置一个固定位置的div点击随机变色,使用Math.random()生成随机数进行拼接。
在这里插入图片描述
设置div的大小和位置

 #box {
        width: 200px;
        height: 200px;
      }
 <div id="box"></div>

js代码如下:

 //产生随机颜色
    function getColor() {
        var str = "#";
        for (var i = 0; i < 6; i++) {
            str += (parseInt((Math.random() * 16)).toString(16));
        }
        console.log(str)

        return str;
    }
    document.onclick = function() {
        // box.innerHTML = getColor();
        box.style.backgroundColor = getColor();
    }

进阶版:
点击生成一个新的div,出现在随机位置,大小也随机,颜色随机生成,效果图如下:
在这里插入图片描述
设置一个div和一个button按钮

 <div id="divs"></div>
 <button id="bn">按钮</button>

js代码如下:

 var divs, bn;
        //init函数  ,init()运行函数
        // 函数式编程
        init();
        function init() {
            divs = document.getElementById("divs");
            bn = document.getElementById("bn");
            // 当点击bn时,执行clickHandler函数
            bn.onclick = clickHandler; //点击事件要求直接等于函数名就可以了
            // bn.οnclick=clickHandler();//这样是错误的,因为这样会立即执行函数
        }
        function clickHandler() {
            var w = getRandom(100, 20);
            // 20-100随机宽高,Math.random()*81它是0-80,20-100
            var bg = "#";
            for (var i = 0; i < 6; i++) {
                bg += getRandom(16).toString(16);
            }
            var str = "";
            str += "<div style='";
            str += "position:absolute;";
            str += "width:" + w + "px;";
            str += "height:" + w + "px;";
            str += "background-color:" + bg + ";";
            str += "left:" + getRandom(1200) + "px;";
            str += "top:" + getRandom(600) + "px;";
            str += "'></div>";
            divs.innerHTML += str;
        }
        function getRandom(max, min) {
            // 如果20-100
            if (isNaN(min)) min = 0;
            var num = Math.random() * (max - min);
            return parseInt(num + min);
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuwenjie_

感谢打赏,问题留言~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值