레이아웃의 다단을 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

  • 구글 스프레드시트에서 콤보박스 적용하기

    MS 엑셀을 대체할 만한 제품 중에 구글 스프레드시트는 좋은 대안이 될 수 있습니다. 물론 MS 엑셀의 파워풀한 기능을 모두 사용할 수는 없지만 웬만한 기능은 동일하게 구현이 가능합니다. 더욱이 인터넷만 된다면 어디에서든지 사용할 수 있고 스마트폰에서도 무료로 사용이 가능하기 때문에 상당한 이점이 있습니다. 엑셀의 기능 중에 콤보박스 기능을 구글 스프레드시트에서도 쉽게 구현을 할 수 있습니다. 콤보박스 […]

  • CSS로 그럴듯한 버튼효과를 내보자

    별도의 라이브러리를 사용하지 않고 순수하게 CSS3만을 활용하여 버튼의 효과를 줄 수 있습니다. 급하게 퍼블리싱할때 써먹을 수 있게 정리해 놓겠습니다. 미리보기 BUTTON 1 BUTTON 2 BUTTON 3 BUTTON 4 코드설명 HTML HTML은 기본 버튼을 사용하고 .btn으로 기본속성을 지정하고 .hover로 효과의 형태를 변경하겠습니다. <button class=”btn hover1″> BUTTON 1 </button> <button class=”btn hover2″> BUTTON 2 </button> <button class=”btn […]

  • VisualStudio Code 에디터의 설치와 유용한 확장프로그램(플러그인)

    SublimeText나 Atom에디터등 텍스트기반 에디터가 유행을 하자 MS에서도 Visual Studio를 기반으로 한 텍스트에디터를 출시하였고 다른 에디터들과 마찬가지로 무료로 서비스를 제공하고 있습니다. 저는 Notepadd++, SublimeText, Atom, Brackets, VisualStudioCode 에디터등을 두루두루 써보다가 VisualStudioCode에 정착을 했습니다. 원래는 Notepadd++를 요긴하게 잘 사용해 왔으나 플러그인 등이 부족하고 현재의 유행하는 편리한 기능의 에디터와는 다르기 때문에 좀더 편리한 에디터를 찾고자 했습니다. 그래서 여러가지 […]

  • VirtualBox와 Vagrant의 기본 사용법

    프로그램의 개발환경을 구축할 때 이제는 VirtualBox나 VMware같은 가상머신을 사용하는 것이 보편화 되었습니다. 가상머신 위에서 개발을 할 경우 심적인 부담없이 자유롭게 개발을 할 수가 있습니다. 예를들어 여러가지 오픈소스를 설치하여 사용 하더라도 다른 프로그램과 충돌이 날 것에 대해 걱정을 하지 않아도 되고 혹시라도 시스템이 죽거나 복구가 불가능할 경우에는 가상머신을 제거하고 다시 설치하여 사용하면 되므로 안심하고 개발을 할 […]

  • Gruntfile의 주요 플러그인들

    앞선 포스팅에서 Grunt 소개와 설치방법를 소개했었습니다. 이번에는 Grunt의 주요 플러그인들을 소개하고 간략한 설명을 포스팅 하겠습니다. 플러그인 Grunt.js에서 말하는 플러그인과 Node.js에서 말하는 패키지는 동일한 것입니다. 그래서 Grunt에서 패키지를 설치하는 방법과 Node.js에서 패키지를 설치하는 방법이 동일합니다. 플러그인 찾기 대부분의 Grunt 플러그인들은 Grunt사이트의 Plugin 메뉴에서 확인할 수 있습니다. 먼저 Grunt웹사이트의 플러그인 메뉴로 이동합니다. 원하는 기능의 플러그인을 검색창을 이용하여 […]

  • 포토스케이프(PhotoScape X) 100% 활용 하기

    사진이나 이미지를 다룰 때 포토샵을 뺴놓으면 섭하지만 이 포토샵의 가격이 후덜덜 하고 또한 클라우드로 변경되면서 가격은 좀 싸졌을지 모르지만 매년 또는 매달 비용을 지불해야 하는 부담감이 있습니다. 이걸 가지고 돈을 벌 수 있는 직업이 있다면 그런대로 투자할 만 한데 그렇지 않은 일반 개인이나 서민들은 해적판이나 대체 프로그램을 찾기 마련입니다. 여러가지 다양한 사진 다루는 툴이 있겠지만 […]

답글 남기기

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