2013-10-30 4 views
4

Drupal, Omega 4 테마를 사용하여 반응 형 디자인 기법에 착수하기 시작했으며 특이점 그리드 시스템을 사용하고 싶습니다. CSS (기본 원리 예, 미묘함)를 잘 모릅니다. 그리고 SASS는 좀 더 비밀스러운 기능을 빠져 ​​나오기위한 좋은 방법으로 보입니다. jQuery와 같은 점은 Javscript를 피하는 데 도움이됩니다. 저는 처음부터 초보자 였기 때문에 가능한 한 단순한 페이지로 시작한다고 생각했습니다. 그래서, 여기에 HTML입니다 :특이점 gs를 사용하여 div가 격자로 나란히 표시되도록하려고 시도합니다.

<html> 
    <head> 
    <title>Singularity HTML Demo</title> 
    <link rel="stylesheet" href="stylesheets/test-grid_1.css"> 
    </head> 
    <body> 
    <div id="page"> 
     <h1>Page tests_1</h1> 
     <div id="foo"> 
      <h2>Foo</h2> 
      <p><p>Aliquam nulla metus, laoreet non felis ut, commodo laoreet nulla. </p></p> 
     </div> 
     <div id="bar"> 
      <h2>Bar</h2> 
      <p>Morbi volutpat justo ante, et laoreet est porttitor id. Nullam rhoncus ipsum leo, sed tincidunt ante consequat in.</p> 
      <p>Quisque porttitor tincidunt hendrerit. Nulla et urna nisi. Fusce vulputate aliquet posuere. Cras tempor ante vel turpis scelerisque mollis. In bibendum augue in tincidunt vulputate. Donec accumsan sapien et molestie sodales. Maecenas ut arcu et arcu congue rhoncus. Suspendisse potenti. Nulla vehicula est ut ante semper lobortis. Maecenas sit amet porta mi, nec mattis dui. Curabitur tempus, magna a volutpat auctor, tellus diam pretium sapien, a accumsan augue lectus et est. Quisque sollicitudin metus tincidunt massa fermentum; non varius libero bibendum.</p> 
     </div> 
     <div id="baz"> 
      <h2>Baz</h2> 
      <div> 
       <p>Baz</p> 
       <p>Vestibulum quis tristique arcu. Cras nec est aliquet, vehicula dolor sed, fermentum eros. Maecenas et commodo diam. Aenean egestas nulla a dolor aliquet pellentesque. Nunc enim tellus, sagittis sit amet ipsum nec, bibendum dictum nisl. Nam sollicitudin quis orci sed consequat. Nam et imperdiet ipsum, aliquam cursus nulla. Morbi erat magna, rhoncus vel velit vel, sollicitudin imperdiet orci. Quisque posuere at leo in pellentesque. Vestibulum ornare nulla odio, id mollis lorem blandit eget. Donec est sem, adipiscing eu ligula at, blandit lobortis magna. Nam tempus, risus vitae lacinia consectetur, leo orci fringilla arcu, facilisis blandit metus leo eget eros. Donec pellentesque est eget nulla ultricies, nec placerat risus sagittis. Nulla elementum metus nisi, eget sagittis risus commodo vitae. Pellentesque imperdiet porta vestibulum!</p> 
      </div> 
     </div> 
     <div id="qux"><p>Qux</p></div> 
     <div id="waldo"><p>Waldo</p></div> 
     <div id="garfield"><p>Garfield</p></div> 
     <div id="dilbert"><p>Dilbert</p></div> 
    </div> 

    </body> 
</html> 

난 그냥 하나의 열 다른 미만의 모든 div의 표시 오프 시작했다 말대꾸 스타일 시트를했고, 그 일 (어려운 일이 아니다!). 내 의미를 보여주기 위해 이미지를 게시하고 싶었지만 분명히 할 수 없다!

그런 다음 중단 점을 추가하고 새 코드를 수정하여 각 열이 왼쪽 및 오른쪽으로 번갈아 표시되는 2 열 그리드에 표시되도록했습니다. 여기 내 말대꾸 코드를 사용하여 특이점이다 중단 점에서 쫓겨

@import "singularitygs"; 
$include-border-box: true; 

$break: 500px; 
$break2: 800px; 
$break3: 1200px; 
$include-clearfix: true; 

$grids: add-grid(1); 
$grids: add-grid(2 at $break); 
$grids: add-grid(2 8 2 1 at $break2); 
$grids: add-grid(12 at $break3); 
$gutters: add-gutter(1/6); 

body { 
    margin: 0; 
    padding: 0; 
    @include background-grid; 
} 

#foo { 
    background-color: red; 
    color: yellow; 
    @include grid-span(1, 1); 
    @include breakpoint($break) { 
     @include grid-span(1, 1); 
    } 

} 

#bar { 
    background-color: green; 
    color: yellow; 
    @include grid-span(1, 1); 
    @include breakpoint($break) { 
     @include grid-span(1, 2); 
    } 
} 

#baz { 
    background-color: purple; 
    color: whitesmoke; 
    @include grid-span(1, 1); 
    @include breakpoint($break) { 
     @include grid-span(1, 1); 
    } 
} 

#qux { 
    background: yellow; 
    @include grid-span(1, 1); 
    @include breakpoint($break) { 
     @include grid-span(1, 2); 
    } 
} 

#waldo { 
    background: blue; 
    color: whitesmoke; 
    @include grid-span(1, 1); 
    @include breakpoint($break) { 
     @include grid-span(1, 1); 
    } 
} 

#garfield { 
    background: orange; 
    @include grid-span(1, 1); 
    @include breakpoint($break) { 
     @include grid-span(1, 2); 
    } 
} 

#dilbert { 
    background: cyan; 
    @include grid-span(1, 1); 
    @include breakpoint($break) { 
     @include grid-span(2, 1); 
    } 
} 

, 왈도 가필드와 Qux 모든 바로 화면 상단까지 이동했다 - 푸 완전히 보이지 않게했고 덮어. 나는 "맑은 : 양쪽/왼쪽/오른쪽"으로 주변을 둘러보고 내가 원하는 것에 접근하려고 노력했지만, 그것은 절망적으로 경험적이었고 나는 튼튼하지 않다는 것을 확신했다. 나는 분명히 뭔가를 놓쳐 버려야 만합니다. 누군가가 저에게 무엇을 말할 수 있다면 매우 감사 할 것입니다!

답변

5

추가 매개 변수없이 grid-span을 사용하면 Isolation 출력 스타일을 사용하여 열을 확장합니다. 이 스타일을 사용하면 모든 열이 같은 행에 나타납니다.

당신은 두 가지 옵션이 있습니다 : 다음 행에 나타납니다 모든 요소에 대해

  • 을, 당신은 그렇게 그 요소를 말해야 : clear: both;은. 이 기술을 클리어링이라고합니다.
  • 자동으로 지우기를 적용하는 출력 스타일 Float으로 전환하십시오. 세 가지 방법 중 하나로이 작업을 수행 할 수 있습니다.

또한, 다음 사항을 고려하십시오

  • 기본 모바일보기 위해 컬럼에 걸쳐 적용 할 필요가 없습니다. 모든 열은 기본적으로 이미 100 % 폭입니다.
  • 다른 부분 파일을 사용하거나 단순히 장식 스타일 위/아래에 레이아웃 스타일을 작성하여 스타일 시트에서 장식과 레이아웃을 구분하는 것을 고려하십시오.
  • 교대로 스타일을 적용하려면 nth-child 의사 선택 도구를 사용할 수 있습니다. 이전 IE 지원이 필요하면 Selectivizr 1.0.3b and Respond polyfills을 사용하십시오.

다음은 어떻게 수행할까요? DEMO : http://sassbin.com/gist/7238506/
HTML과 SCSS를 HAML과 SASS로 변환했습니다. HAML과 SASS로 변환되었습니다. 시각적 노이즈가 없어 읽기 쉽기 때문입니다. 또한 사용되지 않는 격자와 중단 점을 제거했습니다.

$include-border-box: true 

$break: 500px 
$grids: 2 

+breakpoint($break) 
    #page > div 
    &:nth-child(2n) 
     +float-span(1,1) 

    &:nth-child(2n+1) 
     +float-span(1,2) 

    &:last-child 
     +float-span(2,1) 

열이 정렬되는 방법을 얼마나 쉽게 파악했는지 유의하십시오.

UPD 2013년 10월 31일

정말 그래서 푸 바로 아래에 시작하고, 유사 가필드 이동 그래서 Qux 바로 아래에 시작 바즈가 이동하고 싶습니다. 그러나 이것도 가능합니까?

높이가 동적 인 경우이를 우아하게 처리 할 수 ​​없습니다.

이런 상황에서 홀수 단락을 한 열에 넣고 단락을 다른 열에 배치하고이 두 열을 스팬합니다. 이렇게하면 데스크톱에서 필요한 순서가 생성되지만 모바일에서 순서가 변경됩니다.

휴대 전화와 데스크톱 모두에서 설명 된 주문이 실제로 필요한 경우 단락 높이를 고치거나 JS를 사용하여 창 크기 조정시 단락을 재정렬하십시오.

UPD 2013년 11월 1일

관련 문제 : https://github.com/Team-Sass/Singularity/issues/143#issuecomment-27547135

+0

시간을내어 주셔서 감사합니다. 나는 "float"이 어떻게 작동 하는지를 이해하려고 반복적으로 시도했지만 그것을 반 직관적이라고 완전히 고백했다. 나는 단지 $ output : 'float';을 덧붙여서 같은 결과를 얻었습니다. 그러나 이것은 내가 원하는 것만은 아니다. Baz가 Foo에서 바로 시작하도록 정말 바뀌겠습니다. 마찬가지로 Garfield가 위로 올라가서 Qux에서 직접 시작됩니다. 그러나 이것도 가능합니까? –

+0

귀하의 의견을 반영하여 답변을 업데이트했습니다. –

+0

다시 업데이트하여 관련 특이성 문제에 대한 링크를 추가했습니다. Snugug의 답변을 참조하십시오. –

2

당신이 바로 clear에 궤도에있어. Clear는 요소가 기존의 부동 요소를지나 아래로 이동해야하는지 결정하는 데 사용됩니다. 이는 CSS에서 "행"을 작성하기 위해 수행해야하는 작업입니다. CSS를 처음 사용하신 분은 Mozilla Developer Network's clear을 참조하십시오.

일반적으로 말하자면 Sass를 jQuery로 생각하지 말고 CSS에 대한 지식을 추출해야합니다. 많은 프레임 워크가 CSS를 작성하는 것이 더 쉽지만, 예상 출력을 얻으려면 기본 CSS의 작동 방식을 알아야합니다 (대부분 jQuery와 달리). 예를 들어, Singularity에는 two different output styles이 있으며, 직면 한 상황에 가장 적합한 것이 무엇인지 알아야합니다. 누군가 CSS와 그리드에 대해 완전히 새로운 브랜드 인 경우 Float 출력 메소드는 자동으로 플로트를 지우고 "행을 따라 걷기"때문에 처음에는 이해하기가 더 쉽습니다. 실제로 symmetric grid을 사용할 때이 정신 모형으로 정말 쉽게 작업 할 수 있도록 float-span 범위 방법이 있습니다.

희망이 도움이됩니다.