jquery - 如何使用网格(Bootstrap 和 jQuery)将更多内容加载到元素中?

标签 jquery html css twitter-bootstrap

我想创建 html&css 布局,其中包含行中的元素,并且单击的每个元素将加载更多内容。类似于此屏幕上的内容:

网格桌面 View :

Grid desktop view

如果不是移动 View ,这对我来说会很容易,这似乎必须有不同的 html 元素顺序:

移动 View :

Mobile view

现在我创建了这个 html 代码(使用 Bootstrap css):

<div class="container">
    <div class="row">

        <div class="col-md-4 item">
            <a class="link" href="#emp_more_4" data-id="4">    
            </a>
        </div>

        <div class="col-md-12 emp_info" id="emp_more_4" style="display: none;">
            <div class="emp_info_con">
            </div>
        </div>

        <div class="col-md-4 module">
            <a class="link" href="#emp_more_3" data-id="3">    
            </a>
        </div>

        <div class="col-md-12 emp_info" id="emp_more_3" style="display: none;">
            <div class="emp_info_con">
            </div>
        </div>

        <div class="col-md-4 module">
            <a class="link" href="#emp_more_2" data-id="2">    
            </a>
        </div>

        <div class="col-md-12 emp_info" id="emp_more_2" style="display: none;">
            <div class="emp_info_con">
            </div>
        </div>

    </div>

    <div class="row">

        <div class="col-md-4 module">
            <a class="link" href="#emp_more_1" data-id="1">    
            </a>
        </div>

        <div class="col-md-12 emp_info" id="emp_more_1" style="display: none;">
            <div class="emp_info_con">
            </div>
        </div>
    </div>
</div>

其中每个“emp_info”元素是具有更多元素内容的元素。

和 jQuery 代码:

        jQuery('.employees a').click(function() {
            var id = jQuery(this).data("id");
            jQuery('.employees .emp_info').hide();
            jQuery('.employees #emp_more_'+id).show();
        });

它会为每个元素加载更多内容,但会破坏列和行布局。 您知道如何在桌面和移动 View 上保持网格布局吗? 如果有人有好主意,我愿意在没有 Bootstrap 类的情况下设计它。

最佳答案

这里有一个可以帮助您的解决方案:

请检查代码:

$(document).on('click', '.item a', function() {
	$(".emp_info").width($('.row').width() - 30);
  $('.item').attr('style', '');
  $(this).closest('.item').css('margin-bottom', $(this).next().height());
    $('.emp_info').not($(this).next()).slideUp();
  $(this).next().slideToggle(function(){ 
  		if($(this).is(':hidden')){
          $('.item').attr('style', '');
      }
  });
});
$(window).on('resize', function(){
   $(".emp_info").width($('.row').width() - 30);
});
.item a {
  height: 50px;
  background: #000;
  margin-bottom: 5px;
  display: block;
}

.item:nth-child(2) .emp_info {
  background-color: #ff0;
}

.item:nth-child(3) .emp_info {
  background-color: #eee;
}

.emp_info {
  background-color: #f00;
  margin-bottom: 10px;
  height: 50px;
  display: none;
  position: absolute;
  left: 15px;
}

.row {
  position: relative;
}

.col-lg-1,
.col-lg-10,
.col-lg-11,
.col-lg-12,
.col-lg-2,
.col-lg-3,
.col-lg-4,
.col-lg-5,
.col-lg-6,
.col-lg-7,
.col-lg-8,
.col-lg-9,
.col-md-1,
.col-md-10,
.col-md-11,
.col-md-12,
.col-md-2,
.col-md-3,
.col-md-4,
.col-md-5,
.col-md-6,
.col-md-7,
.col-md-8,
.col-md-9,
.col-sm-1,
.col-sm-10,
.col-sm-11,
.col-sm-12,
.col-sm-2,
.col-sm-3,
.col-sm-4,
.col-sm-5,
.col-sm-6,
.col-sm-7,
.col-sm-8,
.col-sm-9,
.col-xs-1,
.col-xs-10,
.col-xs-11,
.col-xs-12,
.col-xs-2,
.col-xs-3,
.col-xs-4,
.col-xs-5,
.col-xs-6,
.col-xs-7,
.col-xs-8,
.col-xs-9 {
  position: static;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <div class="row">

    <div class="col-sm-4 item">
      <a class="link" href="#emp_more_4" data-id="1">
      </a>
      <div class="emp_info">
        <div class="emp_info_con">
        </div>
      </div>
    </div>

    <div class="col-sm-4 item">
      <a class="link" href="#emp_more_4" data-id="2">
      </a>
      <div class="emp_info">
        <div class="emp_info_con">
        </div>
      </div>
    </div>

    <div class="col-sm-4 item">
      <a class="link" href="#emp_more_4" data-id="3">
      </a>
      <div class="emp_info">
        <div class="emp_info_con">
        </div>
      </div>
    </div>


  </div>

  <div class="row">

    <div class="col-sm-4 item">
      <a class="link" href="#" data-id="4">
      </a>
      <div class="emp_info">
        <div class="emp_info_con">
        </div>
      </div>
    </div>

    <div class="col-sm-4 item">
      <a class="link" href="#" data-id="5">
      </a>
      <div class="emp_info">
        <div class="emp_info_con">
        </div>
      </div>
    </div>

  </div>
</div>

关于jquery - 如何使用网格(Bootstrap 和 jQuery)将更多内容加载到元素中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39829534/

相关文章:

javascript - 像推特一样的评论框

javascript - 如何水平自动滚动轮播(jquery)

javascript - getJson 返回所有 Handler 而不是数据

jQuery 在鼠标悬停时暂停延迟计时器

html - 触发文本区域中的输入

html - CSS中两个框之间的边距

html - 使用 materialize css 滚动时导航栏会发生变化

javascript - 在 JavaScript 中访问 FancyTree 节点数据

html - 网站在手机上显示为空白

css - 仅在响应时 div 内不需要的顶部填充