javascript - 调整大小后重新排序 div

标签 javascript html css

我希望我的 div 如此,同时能够为运动使用过渡(例如,如果单击 div2):

来自

[div1][div2]

[div3][div4]

-

[---div2----]

[div1][div3]

[div4]

到目前为止,问题在我附加的 codepen 中很明显。

用我的 div 实现这一点的最佳方法是什么:

HTML

<div class="container">
 <div id="cell1" class="cell" onclick="clickFunction(this)"></div>
 <div id="cell2" class="cell" onclick="clickFunction(this)"></div>
 <div id="cell3" class="cell" onclick="clickFunction(this)"></div>
 <div id="cell4" class="cell" onclick="clickFunction(this)"></div>
 <div id="cell5" class="cell" onclick="clickFunction(this)"></div>
 <div id="cell6" class="cell" onclick="clickFunction(this)"></div>
</div>

CSS

.container{
width:300px;
}
.cell{
width:100px;
height:100px;
border:solid black 1px;
display:inline-block;
transition:background-color 1s;
}
.cell:hover{
background-color: blue;
}
.click {
background-color: green;
width:200px;
height:200px;
}

Javascript

var clickFunction = function(elem){

        if(elem.classList.contains("click")){
            elem.classList.remove("click")
        }
        else{
            var elements = document.getElementsByClassName("cell");

            for(var i = 0; i<elements.length; i++){

            if(elements[i].classList.contains("click")){
                elements[i].classList.remove("click");

            }
            }
            elem.classList.add("click");
        }
    }

代码笔

So far

最佳答案

查看下面的代码。我用的是 flex 。

var clickFunction = function(elem){

        if(elem.classList.contains("click")){
            elem.classList.remove("click")
        }
        else{
            var elements = document.getElementsByClassName("cell");

            for(var i = 0; i<elements.length; i++){

            if(elements[i].classList.contains("click")){
                elements[i].classList.remove("click");

            }
            }
            elem.classList.add("click");
        }
    }
.container{
  width:300px;
  display: flex;
  flex-wrap: wrap;
}
.cell{
  width:100px;
  height:100px;
  border:solid black 1px;
  display:inline-block;
  transition:background-color 1s;
  order: 2;
  
}
.cell:hover{
  background-color: blue;
}
.click {
  background-color: green;
  width:200px;
  order: 1;
}
<div class="container">
  <img class="cell" src="http://www.placehold.it/300x300?text=Cell 1" onclick="clickFunction(this)">
  <img class="cell" src="http://www.placehold.it/300x300?text=Cell 2" onclick="clickFunction(this)">
  <img class="cell" src="http://www.placehold.it/300x300?text=Cell 3" onclick="clickFunction(this)">
  <img class="cell" src="http://www.placehold.it/300x300?text=Cell 4" onclick="clickFunction(this)">
</div>

关于javascript - 调整大小后重新排序 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46920583/

相关文章:

css - HTML 元素出现在使用 div 的包装元素之外

javascript - 如何在 JavaScript 中使用 Mozilla DevNet 日期填充

javascript - 悬停时将 flex 子级扩展到全宽

html - 如何将图像的一部分插入文本框?

html - <hr> 在 html 布局中对齐不正确

html - 100% 高度离开页面几个像素?

android - 是否可以通过邮件 Intent 发送 html?

javascript - Jquery递归函数将嵌套的li合二为一

javascript - 为什么 Webpack 在我的主目录中寻找预设?

javascript - 如何通过将隐藏字段变量传递给函数来在jsp页面中添加javascript函数