반응형
    
    
    
  요소 집합의 최대 높이를 가진 요소
나는 한 세트를 가지고 있습니다.div요소들. 인.jQuery저는 그것을 알아낼 수 있기를 바랍니다.div최대 높이와 그 높이로.div예를 들어:
<div>
    <div class="panel">
      Line 1
      Line 2
    </div>
    <div class="panel">
      Line 1<br/>
      Line 2<br/>
      Line 3<br/>
      Line 4<br/>
    </div>
    <div class="panel">
      Line 1
    </div>
    <div class="panel">
      Line 1
      Line 2
    </div>
</div>
 
위의 내용을 보면, 우리는 두 번째가div(4개 라인 포함)의 높이가 모두 최대입니다.이걸 어떻게 알아요?누가 좀 도와주시겠어요?
지금까지 시도한 것은:
$("div.panel").height()첫 번째 높이를 반환합니다.div.
및 를 사용합니다.
var maxHeight = Math.max.apply(null, $("div.panel").map(function ()
{
    return $(this).height();
}).get());
 
만약 그것이 읽기에 혼란스럽다면, 이것은 더 명확할 수 있습니다.
var heights = $("div.panel").map(function ()
    {
        return $(this).height();
    }).get();
maxHeight = Math.max.apply(null, heights);
당신이 게시한 html은 몇 가지를 사용해야 합니다.<br>실제로 다른 높이의 디브를 갖는 것.다음과 같이:
<div>
    <div class="panel">
      Line 1<br>
      Line 2
    </div>
    <div class="panel">
      Line 1<br>
      Line 2<br>
      Line 3<br>
      Line 4
    </div>
    <div class="panel">
      Line 1
    </div>
    <div class="panel">
      Line 1<br>
      Line 2
    </div>
</div>
 
이와 별도로 최대 높이의 div에 대한 참조가 필요한 경우 다음을 수행할 수 있습니다.
var highest = null;
var hi = 0;
$(".panel").each(function(){
  var h = $(this).height();
  if(h > hi){
     hi = h;
     highest = $(this);  
  }    
});
//highest now contains the div with the highest so lets highlight it
highest.css("background-color", "red");
여러 장소에서 재사용하려는 경우:
var maxHeight = function(elems){
    return Math.max.apply(null, elems.map(function ()
    {
        return $(this).height();
    }).get());
}
 
그런 다음 다음을 사용할 수 있습니다.
maxHeight($("some selector"));
function startListHeight($tag) {
  
    function setHeight(s) {
        var max = 0;
        s.each(function() {
            var h = $(this).height();
            max = Math.max(max, h);
        }).height('').height(max);
    }
  
    $(window).on('ready load resize', setHeight($tag));
}
jQuery(function($) {
    $('#list-lines').each(function() {
        startListHeight($('li', this));
    });
}); 
  #list-lines {
    margin: 0;
    padding: 0;
}
#list-lines li {
    float: left;
    display: table;
    width: 33.3334%;
    list-style-type: none;
}
#list-lines li img {
    width: 100%;
    height: auto;
}
#list-lines::after {
    content: "";
    display: block;
    clear: both;
    overflow: hidden;
} 
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<ul id="list-lines">
    <li>
        <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_sddu7-2560x1600.jpg" alt="" />
        <br /> Line 1
        <br /> Line 2
    </li>
    <li>
        <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_mixwall66-2560x1600.jpg" alt="" />
        <br /> Line 1
        <br /> Line 2
        <br /> Line 3
        <br /> Line 4
    </li>
    <li>
        <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_sddu7-2560x1600.jpg" alt="" />
        <br /> Line 1
    </li>
    <li>
        <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_mixwall66-2560x1600.jpg" alt="" />
        <br /> Line 1
        <br /> Line 2
    </li>
</ul> 
 ul, li {
  list-style: none;
  margin: 0;
  padding: 0;
}
ul {
  display: flex;
  flex-wrap: wrap;
}
ul li {
  width: calc(100% / 3);
}
img {
  width: 100%;
  height: auto;
} 
  <ul>
  <li>
    <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_sddu7-2560x1600.jpg" alt="">
    <br> Line 1
    <br> Line 2
  </li>
  <li>
    <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_mixwall66-2560x1600.jpg" alt="">
    <br> Line 1
    <br> Line 2
    <br> Line 3
    <br> Line 4
  </li>
  <li>
    <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_sddu7-2560x1600.jpg" alt="">
    <br> Line 1
  </li>
  <li>
    <img src="http://img2.vetton.ru//upl/1000/346/138/vetton_ru_mixwall66-2560x1600.jpg" alt="">
    <br> Line 1
    <br> Line 2
  </li>
</ul> 
 div 높이를 알아보고 div 높이를 설정합니다(Matt가 게시한 것과 유사하지만 루프를 사용합니다).
표준 자바스크립트로만 정렬하거나 각()에 사용하지 않고 정렬하는 데 관심이 있는 경우:
var panels = document.querySelectorAll("div.panel");
// You'll need to slice the node_list before using .map()
var heights = Array.prototype.slice.call(panels).map(function (panel) {
    // return an array to hold the item and its value
    return [panel, panel.offsetHeight];
}),
// Returns a sorted array
var sortedHeights = heights.sort(function(a, b) { return a[1] > b[1]});
내가 가장 쉽고 명확하게 말할 수 있는 방법은
var maxHeight = 0, maxHeightElement = null;
$('.panel').each(function(){
   if ($(this).height() > maxHeight) {
       maxHeight = $(this).height();
       maxHeightElement = $(this);
   }
});
이것은 어떤 면에서 도움이 될 수 있습니다.@diogo의 일부 코드를 수정하는 중입니다.
$(window).on('load',function(){
// get the maxHeight using innerHeight() function
  var maxHeight = Math.max.apply(null, $("div.panel").map(function ()                                                        {
    return $(this).innerHeight();
  }).get());
  
// Set the height to all .panel elements
  $("div.panel").height( maxHeight );
  
});
언급URL : https://stackoverflow.com/questions/6060992/element-with-the-max-height-from-a-set-of-elements
반응형
    
    
    
  'programing' 카테고리의 다른 글
| c# mysql 데이터 올바른 구문을 위해 mariadb 서버 버전을 추가합니다. 사용 위치: (0) | 2023.09.02 | 
|---|---|
| 번들 UIT 테스트가 손상되었거나 필요한 리소스가 누락되어 로드할 수 없습니다.번들 재설치 시도 (0) | 2023.09.02 | 
| npm과 링크한 모든 Node.js 모듈을 나열하는 방법 (0) | 2023.09.02 | 
| "인증 플러그인 'caching_sha2_password' (0) | 2023.09.02 | 
| XHR HEAD 요청이 리디렉션(301 302)을 따르지 않을 수 있습니까? (0) | 2023.09.02 |