2017-04-06 3 views
3

ich vielleicht 30 dieser Stifte haben:Einstellung der Eltern Breite das gleiche, es ist Kind

<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>

Und ich versuche jede .pin Breite die gleiche wie die .blog-img Breite einzustellen. Wie würde ich dies tun, wenn jeder der 30 Pins in der Größe einzigartig sein wird?

Ich bin offen für die Verwendung von jquery.

Bearbeiten: Um dieses Projekt zu verdeutlichen, werden diese Kacheln von einem Back-End mit JSON und am Front-End mit EJS generiert. Das muss also dynamisch sein.

Kriterien: Muss Display-Flex im übergeordneten Container verwenden können.

Danke!

+0

Flexbox nicht Geschwister, die Höhe/Breite eines bestimmten Geschwister machen verfolgen ([** Details **] (http://stackoverflow.com/q/34194042/3597276)). Sie müssten JS oder möglicherweise absolute Positionierung verwenden (aber Sie müssten die Höhe wissen) ([** demo **] (https://jsfiddle.net/e8tyv4k1/1/)). –

Antwort

2

So etwas sollte den Trick tun

$('.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>

Edit: Um die Änderung zu machen weniger schrill, mit den Elementen beginnen versteckt mit opacity: 0; sie dann verblassen Sie sich mit der animate()

+0

Danke Dryden. Gibt es eine Möglichkeit, ein FOUC-Problem zu vermeiden? Es muss auf window.load sein, aber mit dem kommt ein Blitz von unsterblichem Inhaltsproblem. – Quesofat

+0

@Quesofat sehe meine Bearbeitungen oben –

0

Wenn Sie jQuery verwenden wollen, dann

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

würde es tun.

3

Mit CSS können Sie dies tun:

.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>

+1

Schön, ich sprang direkt in jQuery, dachte nie daran, gerade CSS zu gehen –

0

können Sie CSS table + table-caption Verwendung mit einem Behälter um den Text hinzufügen.

.pin { 
 
    display: table; 
 
} 
 

 
.text { 
 
    display: table-caption; 
 
    caption-side: bottom; 
 
}
<div class="pin"> 
 
    <img class="blog-img" src="http://placehold.it/300x300" alt="blog post" /> 
 
    <div class="text"> 
 
    <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> 
 
</div>

Verwandte Themen