div 动态显示多行多列

需要实现下列需求的画面
1 画面上有个下拉框,里面的可以选择的数值有 2,4,6,8,10,20
2 根据画面选择的数值,动态显示这么多个div元素. (可以只设置个背景色)
2 对应 一行两列
4 二行二列
6 二行三列
8 二行四列
10 二行五列
20 四行五列

可以使用jquery来动态实现.要求div能够随着窗口大小自动调节,默认排满屏幕.
我只是搭了一个空的框架出来,不知道有哪位前端大侠能帮我实现以下.
我现在的空架子只是在点击按钮的时候,取得下拉框的值,放入p元素.---可以无视这段代码.

<html>

<head>

<script type="text/javascript" src="./jquery/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("button").click(function() {
            $("p").html($("#s1").val());
        });
    });
</script>

</head>

<body>

<select id='s1'>

<option value="2">2</option>
<option value="4">4</option>
<option value="6">6</option>
<option value="8">8</option>
<option value="10">10</option>
<option value="20">20</option>
</select>

<p>This is another paragraph.</p>
<button type="button">请点击这里</button>

</body>

</html>

阅读 6.3k
2 个回答
<html>

<head>
  <title>123</title>
  <script type="text/javascript">
    function createDiv() {
      var s1 = document.getElementById('s1');
      var item = s1.value;
      var hasChild = container.children.length ? true : false;
      if(hasChild){
        while(container.hasChildNodes()) //当div下还存在子节点时 循环继续
        {
            container.removeChild(container.firstChild);
        }
      }

      //制定策略
      var strategy =[2,10,20];
      var strategyRow = [1,2,4];
      var strategyIndex = 0;
      //获取策略方案
      for( var index = 0 ; index < strategy.length ; index++) {
        var current = strategy[index];
        if (item <= current) {
          strategyIndex = index;
          break;
        }
      }
      //使用策略
      //当前策略
      var row = strategyRow[strategyIndex];
      var column = item / row;
      var percent = 80 /column + '%';
      for(var i = 0; i < row; i++){
         var rowDiv = document.createElement("div");
         for(var j = 0; j < column; j++){
           var columnDiv = document.createElement("div");
           columnDiv.style.cssText=" margin:10px; border-style: solid; border-width: 2px; border-color: #aa0000; float:left;height:300px;background-color: #00aa00;"+"width:" + percent+ ";";
           rowDiv.appendChild(columnDiv);
         }
         container.appendChild(rowDiv);
      }

    }

  </script>


</head>

<body>
  <select id="s1" >
    <option value="2">2</option>
    <option value="4">4</option>
    <option value="6">6</option>
    <option value="8">8</option>
    <option value="10">10</option>
    <option value="20">20</option>
  </select>
  <button onclick="createDiv()">确定</button>
  <div id="container" />

</body>

</html>

铺满屏幕: let bodywidth = document.body.clientWidth;
点击之后拿到option中的数值,根据需求计算一下需要的div数量 如果需要两个 就每个div的宽度为bodywidth/2 即可,如果需要达到响应式的要求,监听window.ressize即可

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题