Archive / Javascript / ListItemHeight

아직 정리 안됐음.

쇼핑몰 상품 리스트와 같이 여러개의 리스트 항목을 표같이 줄단위로 정렬할 때 각 항목의 높이가 다르면 줄이 맞지 않는다. 또한 브라우저마다 클리어(clear)의 구현이 달라서 줄단위로 리스트를 나누고 클리어 시켜줘야 하는 문제가 있다. 이를 해결하기 위해서 줄단위로 모든 항목의 높이를 가장 큰 값으로 조정해 주는 스크립트 이다.

function initListItemHeight(item_per_row) {
	var i = 0, j = 0, k = 0, l = 0, m = 0;

	function getMaxHeight(arr) {
		var arr_count = 0;
		var i = 0;
		var temp_max = 0;

		arr_count = arr.length;
		for (i = 0; i < arr_count; i++) {
			temp_max = Math.max(temp_max, arr[i].offsetHeight);
		}
		return temp_max;
	}

	var els = document.getElementById("M1W-subcontent").getElementsByTagName("ul");
	var list_items = new Array();
	for (m = 0; m < els.length; m++) {
		if (els.item(m).className != "section") {
			continue;
		}

		var lists = els.item(m).childNodes;
		l = 0;
		for (k = 0; k < lists.length; k++) {
			if (lists.item(k).tagName == "LI") {
				list_items[l++] = lists.item(k);
			} else {
				continue;
			}
		}
		//*
		for (i = 0; i < list_items.length - 1; i = i + item_per_row) {
			var maxHeight = 0;
			j = 0;
			k = 0;
			var line = new Array();

			for (j = 0; j < item_per_row; j++) {
				if (list_items[i + j]) {
					line[j] = list_items[i + j];
				}
			}
			maxHeight = getMaxHeight(line);
			for (k = line.length; k > 0; k-- ) {
				list_items[i + k - 1].style.height = maxHeight + "px";
			}
		}
		//*/
	}
}
initListItemHeight(3);
Page last modified on May 27, 2009, at 08:46 AM

Powered by PmWiki