반응형
요소 집합에서 최대 높이를 가진 요소
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()
1st의 높이를 반환합니다 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>
<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>
Try Find out divs height and setting div height (Similar to the one Matt posted but using a loop)
If you were interested in sorting entirely in standard JavaScript, or without using forEach():
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]});
Easiest and clearest way I'd say is:
var maxHeight = 0, maxHeightElement = null;
$('.panel').each(function(){
if ($(this).height() > maxHeight) {
maxHeight = $(this).height();
maxHeightElement = $(this);
}
});
참고URL : https://stackoverflow.com/questions/6060992/element-with-the-max-height-from-a-set-of-elements
반응형
'developer tip' 카테고리의 다른 글
어레이 변경을 관찰하는 방법은 무엇입니까? (0) | 2020.09.21 |
---|---|
HTML5 동영상 크기 (0) | 2020.09.20 |
텍스트 상자에 레이블이 아닌 값을 적용하는 자동 완성 (0) | 2020.09.20 |
열에서 구분 된 문자열을 분할하고 새 행으로 삽입 (0) | 2020.09.20 |
Android에서 조각 숨기기 표시 (0) | 2020.09.20 |