javascript – jQuery图像网格系统

前端之家收集整理的这篇文章主要介绍了javascript – jQuery图像网格系统前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个关于图像网格系统的问题.

我从codepen.io创建了这个DEMO

在本演示中,您可以看到:

@H_403_9@

这个DEMO工作得很好但是.我的问题是如何在这个css中使用我的网格系统:

@H_403_9@

我为此创建了第二个演示:第二个DEMO.在第二个演示中,您可以看到网格系统不像第一个DEMO那样工作.

我的jQuery代码

@H_403_9@(function($,sr){ var debounce = function (func,threshold,execAsap) { var timeout; return function debounced () { var obj = this,args = arguments; function delayed () { if (!execAsap) func.apply(obj,args); timeout = null; }; if (timeout) clearTimeout(timeout); else if (execAsap) func.apply(obj,args); timeout = setTimeout(delayed,threshold || 100); }; } // smartresize jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize',debounce(fn)) : this.trigger(sr); }; })(jQuery,'smartresize'); /* Wait for DOM to be ready */ $(function() { // Detect resize event $(window).smartresize(function () { // Set photo image size $('.photo-row').each(function () { var $pi = $(this).find('.photo-item'),cWidth = $(this).parent('.photo').width(); // Generate array containing all image aspect ratios var ratios = $pi.map(function () { return $(this).find('img').data('org-width') / $(this).find('img').data('org-height'); }).get(); // Get sum of widths var sumRatios = 0,sumMargins = 0,minRatio = Math.min.apply(Math,ratios); for (var i = 0; i < $pi.length; i++) { sumRatios += ratios[i]/minRatio; }; $pi.each(function (){ sumMargins += parseInt($(this).css('margin-left')) + parseInt($(this).css('margin-right')); }); // Calculate dimensions $pi.each(function (i) { var minWidth = (cWidth - sumMargins)/sumRatios; $(this).find('img') .height(Math.floor(minWidth/minRatio)) .width(Math.floor(minWidth/minRatio) * ratios[i]); }); }); }); }); /* Wait for images to be loaded */ $(window).load(function () { // Store original image dimensions $('.photo-item img').each(function () { $(this) .data('org-width',$(this)[0].naturalWidth) .data('org-height',$(this)[0].naturalHeight); }); $(window).resize(); });

谁能在这方面帮助我?提前感谢您的回答.

最佳答案
由于您将动态创建HTML,因此应删除.photo-row容器,但保留.photo-item,如下所示:

@H_403_9@

然后你可以做的就是在页面加载时用.photo-row包装你的元素.首先从各种两个开始:

var imgGrab  = $('.photo-item'); //photos
var imgLength = imgGrab.length; //number of photos

for ( i=0; i

然后找到重新发送的那些并用.photo-row包装:

$(".photo-item").each(function(){
   if($(this).parent().is(":not(.photo-row)")){
     $(this).wrap('

这将动态包装您的图像,让CSS完成其工作,无论它们的数量如何:

CODEPEN

猜你在找的CSS相关文章