【问题标题】:Dynamic image alignment with Javascript使用 Javascript 进行动态图像对齐
【发布时间】:2013-06-29 11:44:25
【问题描述】:

我必须满足我对 Javascript 的好奇心。在开始之前,我应该让你知道,我非常清楚这可以单独使用 CSS 来处理,但我想提高我的 Javascript 技能,所以请幽默:)

关于我想要了解的内容:http://codepen.io/cmegown/pen/CGhpa

假设我们有可能无限数量的图像,每个图像都包裹在一个设置为 display: inline-block 的图形中,使其与内部图像的大小相同。这些图像中的每一个都可以是任何尺寸,并且期望的结果是每个图像的底部都完美对齐。这里的关键是这是响应式的,因此图像可能会放大或缩小。以下是我对如何实现这一点的想法:

遍历每张图片并找到最高的一张(outerHeight),然后获取同一张图片的宽度(outerWidth)。从outerHeight 中减去outerWidth 以获得“主”差异。再次循环遍历每个图像以计算每个特定图像的差异并从“主”差异中减去该差异,然后将该数字应用于上边距。冲洗并重复,直到每个图像都与最高图像的底部对齐。

对吗?我认为逻辑是合理的,我只是缺乏在 Javascript 中将其正确组合在一起的技能。很抱歉这篇超长的帖子,但感谢您提供任何和所有帮助/建议!

【问题讨论】:

    标签: javascript dynamic alignment


    【解决方案1】:
    function alignImages() {
    
      // caching selectors
      var imgs = document.getElementsByTagName('img'),
          maxHeight = 0;
      for (idx in imgs) {
        var img = imgs[idx];
        if (img.height > maxHeight) {
          maxHeight = img.height;
        }
      }
      for (idx in imgs) {
        var img = imgs[idx];
        img.style.marginTop = (maxHeight - img.height) + "px";
      }
    
    
    }
    

    【讨论】:

    • 非常接近,但我是一个 JS 新手,无法弄清楚这里有什么不好的地方。
    • 虽然此代码在我上面链接的笔中运行良好,但当应用于实际项目时,每个图像的边距呈指数增长。直觉告诉我这与项目中使用的 knockout.js 有关,该项目用于执行许多 AJAX 请求。
    • 我仍然无法读心以知道问题中是否未设置某些条件;)
    • 完全正确!当它在笔中工作时我很高兴,今天花了几个小时试图解决项目中的问题。无论你用哪种方式旋转它,我都知道的比以前多:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2013-05-27
    • 2015-08-19
    • 2020-09-28
    • 2019-04-05
    相关资源
    最近更新 更多