ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 当第一个砌体’item’被隐藏时,所有剩余的项目形成一个列

2019-07-03 00:23:57  阅读:266  来源: 互联网

标签:jquery javascript css masonry


我正在尝试将Masonry用于一个项目,但我对JS缺乏经验.我遇到了一个问题,即隐藏砌体网格中的第一个项目导致其余的网格项形成一个列.

我可以隐藏和显示我想要的其他项目,而不是它看起来的第一个.

下面的编码重现问题,按“创建”以形成砌体布局,然后“隐藏”以隐藏具有“特殊”类的div …

http://codepen.io/anon/pen/ByxmMv

从第一个div中删除“特殊”类将演示所需的布局行为.

我希望我只是做错了但如果我不能有人展示出一种解决方法?

谢谢你的帮助.

 <!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Masonry</title>
  <link rel="stylesheet" href="css/style.css" media="screen" type="text/css" />
  <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
  <script src="http://masonry.desandro.com/masonry.pkgd.js"></script>
  <script type="text/javascript">

    function hide() {
      $(".special").hide();
      msnry.layout();
    }
    function show() {
      $(".special").show();
      msnry.layout();
    }
    function create() {
      container = document.querySelector('#container');
      msnry = new Masonry( container, {
        itemSelector: ".item",
        isAnimated: true
      });
    }
    function destroy() {
      msnry.destroy();
    }
  </script>


  <style type="text/css">
    #container {
      background: #EEE;
      max-width: 80%;
      margin: 10px;
    }
    .item {
      width:  150px;
      height: 150px;
      float: left;
      background: green;
      border: 2px solid #333;
      margin: 10px;
    }
    .item:nth-child(3n){
      height: 100px;
    }
    .special {
      background:orange;
    }
  </style>
</head>
<body>

  <button onclick="create()">Create</button>
  <button onclick="destroy()">Destroy</button>
  <button onclick="hide()">Hide</button>
  <button onclick="show()">Show</button>
  <div id="container">
    <div class="item special"></div>
    <div class="item special"></div>
    <div class="item special"></div>
    <div class="item"></div>
    <div class="item special"></div>
    <div class="item special"></div>
    <div class="item"></div>
    <div class="item special"></div>
    <div class="item delete"></div>
    <div class="item"></div>
    <div class="item special"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>

</body>
</html>

解决方法:

您可以添加’sizer’元素以获得适当的宽度:

        msnry = new Masonry( container, {
            itemSelector: ".item",
            columnWidth: '.sizer',
            isAnimated: true
        });

http://codepen.io/herihehe/full/ravYEL/

标签:jquery,javascript,css,masonry
来源: https://codeday.me/bug/20190702/1361264.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有