固定容器内任意个div填充算法

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title> </title>
    <style>
        #box{
            height: 600px;
            width: 600px;
            border: 1px solid black;
        }
        </style>
</head>

<body>
    <input id="sr" />
    <input type="button" id="bt" value="自动生成div" />
    <div id="box"></div>
</body>
<script>
    window.onload = function () {
        var aBtn = document.getElementById(‘bt‘);
        var oBox = document.getElementById(‘box‘);
        var oSr = document.getElementById(‘sr‘);
        var str = ‘‘;
        var num = 0;
        var flag = 0;
        var aColor = [‘red‘, ‘blue‘, ‘green‘, ‘yellow‘, ‘purple‘, ‘pink‘, ‘gray‘];
        //自动生成100个10*10的div
        aBtn.onclick = function () {
            str = ‘‘;
            num = oSr.value;  //3
            cnum = Math.round(Math.sqrt(num));  //2
            lnum = Math.floor(num / cnum);  //1
            xnum = 0;
            if(num != 3){
                for (var i = 0; i < lnum; i++) {
                    for (var j = 0; j < cnum + xnum; j++) {
                        if (i == lnum - 1) {
                            xnum = num - cnum * lnum;
                        }
                        str += ‘<div style = "float:left;width:‘ + Math.floor(oBox.clientWidth / (cnum + xnum)) + ‘px;height:‘ + Math.floor(oBox.clientHeight / lnum) + ‘px;background:‘ + aColor[(i + j) % aColor.length] + ‘;"></div>‘;
                    }
                    str += ‘<br />‘;
                }
            }else{
                for (var i = 0; i < cnum; i++) {
                    for (var j = 0; j < lnum + xnum; j++) {
                        if (i == cnum - 1) {
                            xnum = num - cnum * lnum;
                        }
                        str += ‘<div style = "float:left;width:‘ + Math.floor(oBox.clientWidth / (lnum + xnum)) + ‘px;height:‘ + Math.floor(oBox.clientHeight / cnum) + ‘px;background:‘ + aColor[(i + j) % aColor.length] + ‘;"></div>‘;
                    }
                    str += ‘<br />‘;
                }
            }

            oBox.innerHTML = str;
        }
    }
</script>

</html>

效果如下:

原文地址:https://www.cnblogs.com/sghy/p/10337255.html

时间: 2024-08-12 04:40:49

固定容器内任意个div填充算法的相关文章

html中的div、td 、p 等容器内强制换行和不换行的实现

div.td .p 等容器内强制换行和不换行,在某些情况下还是比较实用的,下面本文整理了一些相关方面的知识,并有具体的实现方法,需要的朋友可以参考下1.强制不换行,同时以省略号结尾. 代码如下:<div style="width:100px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" > 你好朋友朋友朋友我为什么不能看到效果啊 </div> 2.css自动换行 代码如下:div{ wor

固定大小容器内,不同比例的图片高度撑满,宽度居中裁剪

在一个商品展示列表中,一个需求是在一个正方形的方块中,按原比例展示商品图片,但是图片比例不定,需要居中显示,高度撑满,宽度多余的隐藏. 结构: imgOuter是固定容器,宽高都是120px: CSS代码: .imgOuter{ width: 120px; height: 120px; border-radius: 10px; overflow: hidden; border: 1Px solid #d7d7d7; position: relative; z-index: 1; } img居中显

CGA填充算法之种子填充算法

CGA填充算法之种子填充算法 平面区域填充算法是计算机图形学领域的一个很重要的算法,区域填充即给出一个区域的边界 (也可以是没有边界,只是给出指定颜色),要求将边界范围内的所有象素单元都修改成指定的颜色(也可能是图案填充).区域填充中最常用的是多边形填色,本文讨论种子填充算法(Seed Filling)   如果要填充的区域是以图像元数据方式给出的,通常使用种子填充算法(Seed Filling)进行区域填充.种子填充算法需要给出图像数据的区域,以及区域内的一个点,这种算法比较适合人机交互方式进

图像填充算法

封闭连通域的图像填充是个常见的算法,最近有机会接触到大图像的例子,做一下总结. 这类问题最基本的算法是种子填充.即先给出封闭区域内的一点,从这点出发搜索邻域,只要不到边界,就把相邻点纳入连通域,赋予填充色.边界的判断比较灵活,可以使用固定颜色,也可以用一定阈值的色彩容差,类似photoshop中的魔棒.其他更复杂的计算自然也可以. 邻域的搜索是填充的重点.最简单的算法就是递归,写出来也就几行代码,像下面的样子: FillShape(int x, int y) { if( !IsBrim(x,y)

多边形区域填充算法--递归种子填充算法

http://blog.csdn.net/orbit/article/details/7323090 平面区域填充算法是计算机图形学领域的一个很重要的算法,区域填充即给出一个区域的边界(也可以是没有边界,只是给出指定颜色),要求将边界范围内的所有象素单元都修改成指定的颜色(也可能是图案填充).区域填充中最常用的是多边形填色,本文中我们就讨论几种多边形区域填充算法. 一.种子填充算法(Seed Filling) 如果要填充的区域是以图像元数据方式给出的,通常使用种子填充算法(Seed Fillin

图形填充之边缘填充算法

编译器:VS2013 基本思想: 基本思想:按任意顺序处理多边形的每条边.处理时,先求出该边与扫描线的交点,再对扫描线上交点右方的所有象素取补. 取补:若该像素是背景色,则变为填充色; 若像素是填充色,则变为背景色. 前言:刚开始接触这个算法时,一直不知道怎么找出直线上任意一点x,y的关系,困扰了很久,也和高中数学忘了差不多有关,只记得y=kx+b,然而这题使用 (y1-y0)/(x1-x0)=(y-y0)/(x-x0) 这样一来关系很明显表达出来,而且用k做的话会存在k不存在的情况,而这种做法

centos7 docker容器(二)运行和移除容器内应用详解

安装.运行和移除docker中的应用 运行和保存Docker容器 1.运行并保存基于Ubuntu Docker容器的nginx服务器.安装Nginx守护进程到Ubuntu启动容器: # docker run ubuntu bash -c "apt-get -y install nginx" 2.其次,在安装完Nginx包后,发出命令 docker ps -l 得到运行容器的ID或名称.运行以下命令: # docker ps -l 运行以下命令获得更改 # docker commit 5

计算机图形学 - 扫描线种子填充算法

算法描述: 种子填充算法原理和程序都很简单, 但由于多次递归, 费时.费内存, 效率不高.为了减少递归次数, 提高效率可以采用扫描线种子填充算法.算法的基本过程如下: 当给定种子点( x, y) 时, 首先填充种子点所在扫描线上的位于给定区域的一个区段, 然后确定与这一区段相连通的上.下两条扫描线上位于给定区域内的区段, 并依次保存下来.反复这个过程, 直到填充结束. 区域填充的扫描线算法可由下列4 个步骤实现: ①  初始化: 堆栈置空.将种子点(x, y) 入栈. ② 出栈: 若栈空则结束.

计算机图形学 有效边表填充算法(6)

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/40154077 本文通过一个完整的实例,展示多边形有效边表填充算法. 1)创建CAET类 头文件:AET.h // AET.h: interface for the CAET class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_AET_