javascript - CSS-网格、JS-鼠标 onClick 事件

标签 javascript jquery html css css-grid

在我的 HTML 中,我有一个父 div,其中有 25 个 div。

<div class="container>
  <div class="faces"></div>
  <div class="faces"></div>
  <div class="faces"></div>
  .
  .
  .
  .
  .
</div>

我正在使用 CSS 网格

.container {
    display: grid;
    grid-template-columns: repeat(5, auto);
    margin: 2% auto;
    width: 750px;
    grid-gap: 1px;
}

.container > div {
    overflow: hidden;
    height: 150px;
    border: 1px solid;
}

.faces img {
    height: 150px;
}   

这给了我每行 5 个 div。

现在,当我单击任何 div 时,我希望它展开

$('.faces').click(function() {
  $(this).css('grid-column','span 3');
  $(this).css('grid-row','span 2');
  $(this).css('height','auto');
}):

这个 JS 确实有效。但我只希望单击的元素具有这样的 css 属性。 当单击另一个 div 时,前一个 div 应该收回其位置。

我该怎么做?

最佳答案

我为您做了一个示例(只需单击红色框即可):

var lastClickedFace = null;

$(".faces").click(function(e) {
 if (lastClickedFace) {
  $(lastClickedFace).css("background-color", "red");
 }
  
 $(this).css("background-color", "green");
  
 lastClickedFace = this;
});
.faces {
  width: 20px;
  height: 20px;
  background-color: red;
  margin-top: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <div class="faces"></div>
  <div class="faces"></div>
  <div class="faces"></div>
  <div class="faces"></div>
</div>

关键是,要保存“最后点击的脸”。在本例中,我们只需将其分配给名为“lastClickedFace”的变量。

下次您点击任何面孔时,我们会检查此变量是否不为空(这意味着我们有一个“上次点击的面孔”)。

关于javascript - CSS-网格、JS-鼠标 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948211/

相关文章:

javascript - 在 for 循环中打破 Promise 链

javascript - 使用jquery检查正文中是否有任何textNodes

javascript - 将 <li> 更改为 <span>?

html - 调整浏览器大小时如何阻止元素行为异常?

html - 使用 Angular2 将 HTML 页面存储在内存中

javascript - 相当于AngularJS中的location.href.match

javascript - 为什么 regex 或 .replace() 不使用 CKEditor 和 Javascript 替换脚本中的字符串?

javascript - Rails 全日历

javascript - 下拉值不显示所选值

html - 如何更改 Bootstrap 的经典移动菜单?