레이아웃의 다단을 100% 로 맞추기

예전에 Table로 레이아웃을 잡을 때는 어렵지 않게 구현되었던 표현인데 근래들어서 웹표준에 맞게 코딩을 하게 되면서 레이아웃을 DVI태그로 구현해야 하게 되므로써 다소 구현이 어려워진 것 중에 하나가 다단을 구성하는 것이 아닐까 합니다.
그 다단을 구현하는 방법이 여러가지가 있을 것 같은데.. 이번에 소개를 해드리는 것은 javascript로 구현하는 방법입니다.
레이아웃을 구성 시 2단 또는 3단 이상의 다단을 구성할때 상위 Tag에 대해 가로 100%로 자동으로 맞춰지는 javascript 입니다.
예를들어 만약 레이아웃을 4단으로 구성한다고 했을 때 3개의 단에 대해서는 px 또는 %로 고정값을 지정하고
나머지 하나의 단에 대해서만 .pct 클래스를 지정해 주면 .pct 클래스가 자동으로 나머지 넓이에 대해 값을 지정해 주게 됩니다.

HTML

전체 div를 multiColumn으로 감싸 줍니다. 물론 class이름은 바꿀 수 있습니다.
1단, 2단, 4단은 css에서 또는 inline으로 넓이를 지정해 주면 됩니다.
여기에 작성된 샘플은 CSS 파일에서 넓이를 지정해 주었습니다.

<div class='multiColumn'>
    <div>1단</div>
    <div>2단</div>
    <div class='pct'>3단</div>
    <div>4단</div>
</div>

JAVASCRIPT

jquery를 활요해서 HTML문서가 처음 로딩될때와 브라우저 창의 크기를 변경할떄 체크를 해서 .pct의 넓으를 재지정해 줍니다.

$(function () {
    contentLayAutoWidth();
});

$(window).resize(function () {
    contentLayAutoWidth();
});

/* 레이아웃의 다단 단수를 100%로 채움 */
function contentLayAutoWidth() {
    $('.multiColumn > .pct').css("width", function (index) {
        var siblingsWidthSum = 0;
        var parentPadding = 1;
        var siblingsMargin = 10;
        var parentWidth = $(this).parent().innerWidth();
        $(this).siblings().each(function () {
            siblingsWidthSum = siblingsWidthSum + ($(this).outerWidth() + siblingsMargin);
        });
        index = parentWidth - siblingsWidthSum - parentPadding;
        return index;
    });
}

CSS

css를 통해서 1단, 2단, 4단의 넓이를 20%로 지정했습니다.
나머지의 css요소는 이번 코드에서는 중요하지 않은 요소들입니다. 단지 변경된것을 눈에 보여주기 위해 지정된 css요소들 입니다.

.multiColumn div {
    width:20%;
    height:200px;
    margin:0 2px;
    border:1px #ddd solid;
    float:left
}
.multiColumn div.pct {
    border:1px #fdd solid
}

이렇게 지정하면 아래와 같이 표현이 됩니다.
아래의 링크를 눌러서 확인하시면 됩니다.
jsfiddle 로 확인 할 수 있습니다.

레이아웃을 구성 시 2단 또는 3단 이상의 다단을 구성할때 상위 Tag에 대해 가로 100%로 자동 맞춰지는 자바스크립트 입니다.
예를들어 만약 레이아웃을 4단으로 구성한다고 했을 때 3개의 단에 대해서는 px 또는 %로 고정값을 지정하고 나머지 하나의 단에 대해서만 .pct 클래스를 지정해 주면 `.pct’ 클래스가 자동으로 맞춰 줍니다.

HTML

<div class='multiColumn'>
    <div>1단</div>
    <div>2단</div>
    <div class='pct'>3단</div>
    <div>4단</div>
</div>

JAVASCRIPT

$(function () {
    contentLayAutoWidth();
});

$(window).resize(function () {
    contentLayAutoWidth();
});

/* 레이아웃의 다단 단수를 100%로 채움 */
function contentLayAutoWidth() {
    $('.multiColumn > .pct').css("width", function (index) {
        var siblingsWidthSum = 0;
        var parentPadding = 1;
        var siblingsMargin = 10;
        var parentWidth = $(this).parent().innerWidth();
        $(this).siblings().each(function () {
            siblingsWidthSum = siblingsWidthSum + ($(this).outerWidth() + siblingsMargin);
        });
        index = parentWidth - siblingsWidthSum - parentPadding;
        return index;
    });
}

CSS

.multiColumn div {
    width:20%;
    height:200px;
    margin:0 2px;
    border:1px #ddd solid;
    float:left
}
.multiColumn div.pct {
    border:1px #fdd solid
}

jsfiddle로 확인 할 수 있습니다.

Similar Posts

  • 일렉트론(Electron) 소개 및 사용법

    일렉트론(Electron)은 Node.js를 기반으로 javascript, html, css를 사용하여 데스크탑 애플리케이션을 만드는 플랫폼입니다. 이것은 GitHub에서 모던 에디터인 Atom 에디터를 만들면서 공개한 오픈소스입니다. 웹개발자의 입장에서 보면 데스크탑 APP을 개발하는데 있어서 진입장벽이 낮을 뿐만아니라 크로스플렛폼까지 지원하여 윈도우즈, Mac OS X, 리눅스 등 다양한 OS에서 동일하게 사용할수 있는 장점이 있어서 인기가 많습니다. 일렉트론(Electron)은 간단하게 생각하면 웹브라우저 안에 Node.js를 포함시킨 것이라고 […]

  • 시놀로지 도커로 몽고 익스프레스(mongo-express) 설치하기

    이전 포스팅에서 도커로 몽고DB를 설치해 봤습니다. 시놀로지 도커로 몽고DB 설치하는 방법 바로가기 몽고DB는 설치가 되었으나 이 DB만으로는 CLI외에 Database를 볼 수는 없습니다. 이 몽고DB를 보기위한 방법 중 하나는 Mongo-express를 이용하는 방법입니다. Mongo-express는 phpMyAdmin처럼 웹브라우저로 몽고DB를 볼 수 있습니다. 이 Mong-express를 시놀로지 도커로 설치해 보겠습니다. Mongo-express 도커 설치하기 먼저 시놀로지 DSM에서 도커를 엽니다. 레지스트리 메뉴를 선택합니다. […]

  • 물 위에서의 또다른 삶~ 피라미드형 수상주택

    이탈리아의 디자이너 피에르파올로 라자리니(Pierpaolo Lazzarini)가 마야와 일본 건축에서 영감을 얻은 피라미드 모양의 떠 다니는 수상가옥을 선보였습니다. Waya라고 명명한 수상가옥은 유리 섬유, 탄소 섬유 및 강철로 만들어 지며 모듈형태로 구성되어 있어서 온실 모듈, 호텔 및 영화관 모듈 등 다양한 모듈로 군을 이루는것이 목표라고 합니다. Waya 모듈은 태양열 패널과 수력 터빈에서 모든 전력을 자체적으로 얻습니다 아직까지는 컨셉단계로 […]

  • CSS에서 ellipsis(‘…’)를 처리하는 방법

    이번에 ellipsis에 대해 정리해 보도록 하겠습니다. 보통 게시판 리스트의 제목부분이 길어질 경우 php나 jsp등의 프로그램단에서 일정 글자수 이상이 되는 것에 대해 ‘…’으로 마무리 하는 경우가 많은데요.. 이것을 프로그램이 아닌 CSS만 가지고도 처리할 수 가 있습니다. 한줄라인 글자수 제한 한줄 라인 글자수 를 제한하는 방법은 아래와 같습니다. <div class=”txt_line”>통영의 신흥보물 강구안의 동쪽벼랑인 동피랑의 벽화마을을 다녀왔다</div> .txt_line […]

  • 픽픽(PicPick)으로 이미지에 워터마크 쉽게 붙히기

    예전에 만능디자인툴 picpick이라는 글로 포스팅을 한 적이 있었는데요. 이 디자인 툴에 새로 알게된 유용한 기능이 하나 있어 소개해 볼까 합니다. 블로거라면 내가 찍은 사진이나 캡쳐한 이미지에 나만의 워터마크를 넣고 싶은 욕구가 있을텐데요. 이 워터마크를 포토샵으로도 넣을 수 있지만 손이 많이가는 것은 피할 수 없는 사실입니다. 또한 워터마크를 붙혀야할 이미지의 양이 많아지면 이 또한 상당하게 귀찮은 […]

  • 월마트 자율주행 쇼핑카트

    요즘에는 자율주행이라는 것이 대세인가봅니다. 쇼핑카트까지 자율주행을 한다고 하니.. 뭐.. 몇년 전부터 상상은 해봤던 것이기는 한데.. 실제로 월마트에서 특허까지 취득을 했다고 하니 곧 마트에서 혼자 굴러다니는 쇼핑카트를 볼 날도 멀지 않은것 같습니다. 월마트에서는 위치파악센서, 비디오카메라, 무선네트워크기술을 활용한 기기를 쇼핑카트의 밑에 부탁을 하면 카트가 자유롭게 욺직여서 호출한 사용자 앞으로 오기도 하고 사용자가 원하는 상품의 위치로 안내까지 하는 […]

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다