【问题标题】:Setting parent's width the same it's child将父级的宽度设置为与子级相同
【发布时间】:2017-09-02 00:56:47
【问题描述】:

我大概有 30 个这样的图钉:

 <div class="pin">
            <img class="blog-img" src="http://placehold.it/300x300" alt="blog post" />
            <h2>Title</h2>
            <p>
              Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
            </p>
            <a href="#">Read More...</a>
    </div>

我正在尝试将每个.pin 宽度设置为与.blog-img 宽度相同。当 30 个引脚中的每一个都将是唯一的尺寸时,我将如何做到这一点?

我愿意使用 jquery。

编辑:为了澄清这个项目,这些图块将使用 JSON 从后端生成,并使用 EJS 在前端生成。所以这需要是动态的。

条件:必须能够在父容器中使用 display flex。

谢谢!

【问题讨论】:

  • Flexbox 不能让兄弟姐妹跟踪一个特定兄弟姐妹 (details) 的高度/宽度。您可能需要使用 JS 或绝对定位(但您需要知道高度)(demo)。

标签: javascript jquery html css flexbox


【解决方案1】:

这样的事情应该可以解决问题

$('.pin').each(function(){
  var w = $(this).children('.blog-img').width();
  $(this).width(w);
  $(this).animate({opacity:1}, 1000);
});
.pin {
opacity: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="pin">
        <img class="blog-img" src="http://placehold.it/300x300" alt="blog post" />
        <h2>Title</h2>
        <p>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        </p>
        <a href="#">Read More...</a>
</div>

编辑:为了使更改不那么刺耳,从使用 opacity: 0; 隐藏的元素开始,然后使用 animate() 淡入它们

【讨论】:

  • 谢谢德莱顿。有什么办法可以避免 FOUC 问题?它需要在 window.load 上,但随之而来的是无样式的内容问题。
【解决方案2】:

使用 CSS 你可以做到这一点:

.pin {
  display:table;
  width:1%;
  background:gray;
}
<div class="pin">
  <img class="blog-img" src="http://placehold.it/300x300" alt="blog post" />
  <h2>Title</h2>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
    in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </p>
  <a href="#">Read More...</a>
</div>

【讨论】:

  • 很好,我直接进入了 jQuery,从来没有想过直接使用 CSS
【解决方案3】:

如果你想使用jQuery,那么

$(function(){
  $.each($('.pin'), function(){
     $(this).width( $('.blog-img').first().width());
  });
});

会的。

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多