목차
를 사용하여 맵에 키 값 쌍을 추가 할 수 있습니다. 공유 키와 함께
함수를 두 번 사용해야합니다.
웹 프론트엔드 CSS 튜토리얼 Sass지도 대 중첩 목록

Sass지도 대 중첩 목록

Feb 24, 2025 am 08:46 AM

Sass Maps vs. Nested Lists

코어 포인트

SASS 맵과 중첩 목록은 SASS의 데이터 구조이며 Mapping은 SASS 3.3에 도입되었습니다. 매핑은 더 복잡한 데이터 저장을 허용하는 키 값 쌍을 제공하는 반면 중첩 목록은 복잡한 데이터를 저장할 수 있지만 키 값 페어링이 부족한 간단한 구조입니다.

맵핑의 복잡성이 추가 되었음에도 불구하고 다양한 데이터 (예 : 브레이크 포인트 폭, 색상 값, 그리드 레이아웃, 유형 비율 및 기타 응답 형 타이포그래피 세부 정보와 같은 다양한 데이터를 저장하는 능력 때문에 인기가 있습니다. 반면, 중첩 목록은 단순성과 입력이 적기 때문에 더 실용적입니다.
    SASS 매핑을 사용하는 주요 장점 중 하나는 특정 값을 직접 액세스 할 수있는 기능으로 코드를보다 효율적이고 읽기 쉽게 만듭니다. 그러나 중첩 목록은 쓰기 및 유지 관리가 더 빠를 수 있지만 매핑의 오류 확인 및 자세한 쿼리 기능이 부족합니다.
  • 중첩 목록은 입력 측면에서 더 효율적일 수 있지만 각 목록에 포함 할 항목 수와 해당 주문의 절대적인 확실성이 필요합니다. 중첩 목록의 결 측값은 SASS가보고하지 않는 오류를 일으킬 수 있지만 매핑의 경우 기능은 하나의 값이 누락 된 경우에도 원하는 값을 여전히 제공 할 수 있습니다.
  • 이 기사의 제목은 일부 사람들을 놀라게 할 수 있습니다. SASS 베테랑 인 경우 목록 목록을 사용하여 중첩 된 데이터 배열 (루비 -Sass-3.3 이전)을 시뮬레이션해야합니다. (Ruby) Sass 3.3은 매핑이라는 새로운 데이터 유형을 추가합니다. 목록 목록은 복잡한 데이터를 중첩 형식으로 저장할 수 있지만 키 값 페어링은 없습니다. 맵은 키 값 쌍을 추가하고 다양한 데이터를 생성 할 수 있습니다.
  • 매핑의 출현으로 많은 SASS 사용자가 모든 것을 매핑에 넣기 시작했습니다 (그리고 좋은 이유가 있습니다!). 모든 중단 점 너비, 색상 값, 그리드 레이아웃, 유형 비율 및 기타 반응 형 타이포그래피 세부 정보를 맵에 넣을 수 있습니다!
  • 이제 Sass가 키 값 쌍 매핑을 가지고 있으므로 목록 목록을 사용해야할만한 이유가 있습니까? 이론적 인 이유 중 하나는 후진 호환성입니다. 이전 버전이 설치된 개발자가 SASS를 유지 관리하면 목록이 도움이됩니다. 그러나 실제로 SASS 버전은 일반적으로
  • 또는 다른 프로젝트 구성으로 제어되며 루비 보석은 하나의 명령 ()으로 만 업데이트 될 수 있습니다.
  • 매핑 대신 중첩 목록을 사용하도록 선택할 수있는 더 실용적인 이유는 입력이 적다는 것입니다. 지도와 중첩 목록을 비교하여 각 구문 및 루프 트래버스에서 비교하는 방법을 확인해 봅시다. map-get() 문법 비교
  • 이 예에서는 반응 형 타이포그래피를 제어하는 ​​데이터 구조를 만들어 봅시다. 4 개의 중단 점을 저장합니다 (하나는 가장 작은 기본보기). 각 중단 점에 대해 최소 너비, 최대 너비,베이스 글꼴 크기 및 기본 선 높이를 저장합니다.
복합 매핑 구문 다음은 맵에 데이터를 저장하는 방법입니다. 큰 맵에는 저장하고 사용하는 데 필요한 변수의 값 인 값이있는 4 개의 키 (브레이크 포인트 레이블)가 포함됩니다. 이 읽기 쉬운 형식에서는 450 개의 문자와 26 줄이 있습니다.

중첩 된 목록 구문 동일한 데이터를 저장하는 중첩 목록이 훨씬 짧습니다. 그러나 우리는 더 이상 데이터의 키를 추가하지 않으므로 데이터를 통과하거나 함수로 호출하는 데 의존해야합니다. 즉,지도보다 훨씬 짧습니다. 180 자 미만, 6 줄에 불과합니다.

사이클 비교
<code>$breakpoint-map: (
  small: (
    min-width: null,
    max-width: 479px,
    base-font: 16px,
    vertical-rhythm: 1.3
  ),
  medium: (
    min-width: 480px,
    max-width: 959px,
    base-font: 18px,
    vertical-rhythm: 1.414
  ),
  large: (
    min-width: 960px,
    max-width: 1099px,
    base-font: 18px,
    vertical-rhythm: 1.5
  ),
  xlarge: (
    min-width: 1100px,
    max-width: null,
    base-font: 21px,
    vertical-rhythm: 1.618
  )
);</code>
로그인 후 복사
로그인 후 복사
데이터 구조를 작성할 때 목록을 작성하면 매핑 시간의 3 분의 1 만 쓰면됩니다. 그러나이 값을 살펴볼 필요가 있다면 어떻게 비교합니까?

복잡한 매핑 루프

우리는 다음 코드를 사용 하여이 맵의 상단 항목을 반복 할 수 있습니다.

이 줄의 시작 부분에서 두 변수 ( 및 )는 루프의 맵에서 데이터를 반복 할 때 동적으로 할당됩니다. 각 최상위 데이터 블록에는 키와 값의 두 가지 구성 요소가 있습니다. 키를 및 값 (중첩지도)에 할당합니다. 이 루프에서 우리는 변수 nth()

를 사용할 수 있으며, 이는 현재 항목의 키와 값을 자동으로 나타냅니다.
<code>$breakpoint-list: (
  (small, null, 479px, 16px, 1.3),
  (medium, 480px, 959px, 18px, 1.414),
  (large, 960px, 1099px, 18px, 1.5),
  (xlarge, 1100px, null, 21px, 1.618)
);</code>
로그인 후 복사
로그인 후 복사
루프는 4 번 반복되며, 하나는 반복됩니다. 그러나 중첩 맵에서 유용한 데이터를 얻으려면

기능을 사용해야합니다. 이 함수는 맵의 이름과 필요한 키의 이름 인 두 가지 매개 변수를 사용하고 키와 관련된 값을 반환합니다. 그것은 sass에서 php의 및 또는 JavaScript의 구문과 동일합니다.

를 사용하여 모든 서브 맵을 반복하고 를 사용하여 유용한 변수에 값을 할당하려면 6 라인, 220 자리 루프로 끝납니다.

중첩 된 목록 루프

중첩 목록은 루프를보다 효율적으로 만듭니다. 맵의 경우 맵을 동적 루프 변수에 할당 한 다음 를 사용하여 모든 값을 변수에 할당해야하지만 목록의 경우 모든 값을 변수에 빠르게 할당 할 수 있습니다.

최상위 목록의 각 항목은 동일한 순서로 동일한 5 개의 값을 갖기 때문에 루프에서 사용하기 위해 각 값을 동적 변수에 즉시 할당 할 수 있습니다. 이러한 변수를 사용하면 를 사용하여 사용 가능한 변수에 하위 값을 할당 할 필요가 없습니다. 우리가 필요한 중첩 된 목록 루프는 100 자 미만의 두 줄에 불과합니다.
<code>@each $label, $map in $breakpoint-map {}</code>
로그인 후 복사
로그인 후 복사

$label 중첩 된 목록 경고 $map $label 중첩 목록은 주요 개발자 성능 장점입니다. 전반적으로 매핑을 사용할 때와 같이 절반 미만을 입력 할 수 있습니다. 그러나 SASS에 맵을 추가 할 이유가 있습니다. 목록에는 다음과 같은 함수를 제공합니다. 키-값 매핑. $map

누락 된 값 중첩 된 목록에 의존하는 경우 각 목록에 포함 된 항목 수와 주문 순서를 절대적으로 알고 있어야합니다. 목록에서 항목을 놓치면 어떻게되는지 보자.

코드를 실행하려고하면 마지막 목록이 중단됩니다. "xlarge"에 "xlarge"가

및 "1100px"에 "1100px"가 에 올바르게 할당되지만 "21px"는 및 "1.618"에

를 할당하고
<code>$breakpoint-map: (
  small: (
    min-width: null,
    max-width: 479px,
    base-font: 16px,
    vertical-rhythm: 1.3
  ),
  medium: (
    min-width: 480px,
    max-width: 959px,
    base-font: 18px,
    vertical-rhythm: 1.414
  ),
  large: (
    min-width: 960px,
    max-width: 1099px,
    base-font: 18px,
    vertical-rhythm: 1.5
  ),
  xlarge: (
    min-width: 1100px,
    max-width: null,
    base-font: 21px,
    vertical-rhythm: 1.618
  )
);</code>
로그인 후 복사
로그인 후 복사
가 비어 있습니다. 결과적으로, 우리는 마지막 중단 점에서 유효하지 않은 글꼴 크기 선언과 누락 된 라인 높이 속성을 얻습니다. 또한 Sass는 이에 대한 오류를보고하지 않으므로 상황이 성공했는지 알 수 없습니다. 미디어 쿼리의 최대 너비를 사용하려고하면 글꼴 크기 값 (21px)으로 끝날 것입니다. 이것이 매우 쓸모없는 최대 너비라고 생각합니다!

대신 맵을 사용하면 값이 누락 되더라도 함수는 우리에게 필요한 것을 제공합니다. 이것이 우리의 트레이드 오프입니다 : 우리가 목록에 들어가는 단순성과 속도, 우리는 매핑의 특이성과 오류 방지를 잃습니다. $label 쿼리 특정 목록 $min-width 중첩 목록을 사용하는 데있어 다른 관련 문제는 특정 목록을 쿼리하는 것입니다. 맵에는 키가 있으므로 $max-width : $base-font를 사용하여 모든 서브 맵에 빠르게 액세스 할 수 있습니다. $vertical-rhythm 중첩 된 목록에서 중간 목록에 대한 데이터를 가져 오려면보다 복잡한 기능이 필요합니다.

이 함수는 의 모든 목록을 통해 루프하고 원하는 레이블의 첫 번째 값을 확인하고 일치를 찾은 경우 목록을 반환합니다. 루프의 끝이 경기를 찾지 않고 도달하면 NULL을 반환합니다. 기본적으로 첫 번째 값을 의사 키로 사용하는 목록의

에 대한 빠른 수제 해석입니다. map-get() 누락 된 매핑 함수

Sass에는 매핑을 처리하는 데 많은 유용한 기능이 있습니다. 중첩 목록은 동일한 함수에 존재하지 않습니다. 예를 들어

를 사용하여 맵에 키 값 쌍을 추가 할 수 있습니다. 공유 키와 함께

를 사용하여 공유 키의 값을 업데이트하십시오.

또는 를 사용하여 새 목록을 추가 할 수 있지만 map-get()를 시뮬레이션하는 업데이트 기능에는 다른 사용자 정의 SASS 기능이 필요합니다.

또 다른 유용한 매핑 함수는
<code>$breakpoint-list: (
  (small, null, 479px, 16px, 1.3),
  (medium, 480px, 959px, 18px, 1.414),
  (large, 960px, 1099px, 18px, 1.5),
  (xlarge, 1100px, null, 21px, 1.618)
);</code>
로그인 후 복사
로그인 후 복사
입니다. 이 함수는

에 의존하는 모든 사용자 정의 함수를 검증하는 데 유용합니다. 그러나 목록에는 비슷한 기능이 없습니다.

사실리스트를 사용하여 목록의 매핑 함수를 시뮬레이션 할 수 있습니다. (이 라이브러리는 SASS가 추가 된 매핑 지지대를 추가하기 전에 이러한 기능을 제공했습니다.)
<code>@each $label, $map in $breakpoint-map {}</code>
로그인 후 복사
로그인 후 복사
결론

$breakpoint-list 지도는 키 값 쌍을 사용하기 때문에 목록보다 강력합니다. 추가 SASS 매핑 기능은 데이터를 찾고 매핑 된 값을 확인하는 실질적인 방법을 제공합니다. @each 중첩 된 SASS 목록은 쓰기 및 유지 관리가 더 빠를 수 있지만 오류 확인 또는 상세한 쿼리를위한 매핑만큼 적합하지 않을 수 있습니다. 대부분의 경우, 매핑이 더 나은 옵션이라고 생각하지만, 동점이 증가합니다. 더 작은 코드 블록 및 단일 사용 루프의 경우 때때로 중첩 목록을 사용하지만 매핑은 프로젝트 전체 설정 및 데이터 저장에 더 적합합니다.

작업에서 맵과 중첩 목록을 비교했거나 다른 사람보다 우선 순위를 정하기 위해 코드를 리팩토링 했습니까? 의견에 경험을 공유하십시오!

이 튜토리얼 에서이 Sassmeister Gist에서 사용 된 코드를 볼 수 있습니다.

Sass 매핑 및 중첩 목록의 FAQ (FAQ)

Sass지도와 중첩 목록의 주요 차이점은 무엇입니까?

Sass 매핑 및 중첩 목록은 Sass Preprocessors의 강력한 도구이지만 명백한 차이점이 있습니다. SASS 맵은 각 값이 고유 키와 관련된 다른 프로그래밍 언어의 연관 배열과 유사합니다. 이를 통해 데이터를 쉽게 검색, 업데이트 및 조작 할 수 있습니다. 반면에 중첩 목록은 JavaScript의 배열과 유사한 일련의 값입니다. 다양한 값을 보관하고 반복해야 할 때 가장 적합하지만 매핑에서 제공하는 특정 값에 직접 액세스 할 수있는 능력이 부족합니다.

Sass 매핑을 사용하는 방법은 무엇입니까?

SASS 맵을 사용하려면 먼저 한 쌍의 괄호가있는 맵을 정의해야합니다. 각 키 가치 쌍은 결장으로 분리됩니다. 예를 들어, . 그런 다음 함수를 사용하여 다음과 같이 맵의 값에 액세스 할 수 있습니다. 중첩 된 목록처럼 Sass지도를 중첩 할 수 있습니까?

예, 중첩 된 목록처럼 Sass지도를 중첩 할 수 있습니다. 이것은 관련 데이터를 함께 결합하려고 할 때 특히 유용합니다. 중첩 된 맵의 값에 액세스하려면

함수를 두 번 사용해야합니다.

Sass지도를 반복하는 방법은 무엇입니까?

지시문을 사용하여 Sass지도를 반복 할 수 있습니다.

지시문은 키와 값의 두 가지 변수를 취합니다. 예는 다음과 같습니다. .

중첩 된 목록 대신 SASS 매핑을 사용하는 장점은 무엇입니까?

Sass 매핑은 중첩 된 목록에 비해 몇 가지 장점이 있습니다. 특정 값에 직접 액세스 할 수 있으므로 코드를보다 효율적이고 읽기 쉽습니다. 또한 키 값 쌍을 추가, 삭제 및 업데이트하는 등 매핑 조작을위한 내장 기능을 제공합니다. $map: (key1: value1, key2: value2) 중첩 목록을 Sass지도로 변환 할 수 있습니까? map-get 예, map-get($map, key1) 함수를 사용하여 중첩 목록을 SASS 맵으로 변환 할 수 있습니다. 이 함수는 쌍 목록을 가져 와서 각 쌍이 맵의 키 값 쌍 인 맵을 반환합니다.

Sass에서 중첩 목록을 사용하는 방법은 무엇입니까?

Sass에서 중첩 목록을 사용하려면 먼저 한 쌍의 괄호가있는 목록을 정의해야합니다. 각 값은 공간이나 쉼표로 분리됩니다. 예를 들어,

. 그런 다음 함수를 사용하여 다음과 같이 목록의 값에 액세스 할 수 있습니다.

SASS 맵과 중첩 목록을 동시에 사용할 수 있습니까? $list: (value1, value2, value3) 예, Sass 매핑과 중첩 목록을 모두 사용할 수 있습니다. 예를 들어, 매핑을 사용하여 일련의 목록을 저장하고 그 반대도 마찬가지입니다. 이것은 복잡한 데이터 구조를 구성하는 데 유용합니다. nth Sass 매핑 또는 중첩 목록을 사용하는 제한 사항은 무엇입니까? nth($list, 1) Sass 매핑 및 중첩 된 목록은 강력한 도구이지만 몇 가지 제한 사항이 있습니다. 예를 들어, SASS 맵에는 중복 키가 없으며 맵의 키 순서를 보장 할 수 없습니다. 마찬가지로, 중첩 된 목록이 너무 커지거나 너무 복잡해지면 관리하기 어려울 수 있습니다.

Sass 맵 또는 중첩 목록을 사용하는 방법을 선택하는 방법은 무엇입니까?

Sass 맵 또는 중첩 목록을 사용하는 선택은 특정 요구에 따라 다릅니다. 특정 값에 직접 액세스하고 데이터를 조작 해야하는 경우 SASS 매핑이 최선의 선택 일 수 있습니다. 일련의 값을 보관하고 반복 해야하는 경우 중첩 목록으로 충분합니다.

위 내용은 Sass지도 대 중첩 목록의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

vue 3 vue 3 Apr 02, 2025 pm 06:32 PM

그것은#039; VUE 팀에게 그것을 끝내는 것을 축하합니다. 나는 그것이 막대한 노력과 오랜 시간이라는 것을 알고 있습니다. 모든 새로운 문서도 있습니다.

브라우저에서 유효한 CSS 속성 값을 얻을 수 있습니까? 브라우저에서 유효한 CSS 속성 값을 얻을 수 있습니까? Apr 02, 2025 pm 06:17 PM

나는 누군가이 매우 합법적 인 질문으로 글을 썼습니다. Lea는 브라우저에서 유효한 CSS 속성 자체를 얻는 방법에 대해 블로그를 작성했습니다. 이는 이와 같습니다.

CI/CD에 약간 CI/CD에 약간 Apr 02, 2025 pm 06:21 PM

"웹 사이트"는 "모바일 앱"보다 더 잘 맞지만 Max Lynch 의이 프레임이 마음에 듭니다.

끈적 끈적한 포지셔닝 및 대시 Sass가있는 쌓인 카드 끈적 끈적한 포지셔닝 및 대시 Sass가있는 쌓인 카드 Apr 03, 2025 am 10:30 AM

다른 날, 나는 Corey Ginnivan의 웹 사이트에서 스크롤 할 때 카드 모음이 서로 쌓이는 것을 발견했습니다.

WordPress 블록 편집기에서 Markdown 및 현지화 사용 WordPress 블록 편집기에서 Markdown 및 현지화 사용 Apr 02, 2025 am 04:27 AM

WordPress 편집기에서 사용자에게 직접 문서를 표시 해야하는 경우 가장 좋은 방법은 무엇입니까?

반응 형 디자인을위한 브라우저 비교 반응 형 디자인을위한 브라우저 비교 Apr 02, 2025 pm 06:25 PM

목표가 귀하의 사이트를 동시에 다른 크기로 표시하는 이러한 데스크탑 앱이 많이 있습니다. 예를 들어, 글을 쓸 수 있습니다

끈적 끈적한 헤더 및 바닥 글에는 CSS 그리드 사용 방법 끈적 끈적한 헤더 및 바닥 글에는 CSS 그리드 사용 방법 Apr 02, 2025 pm 06:29 PM

CSS 그리드는 레이아웃이 그 어느 때보 다 쉽게 레이아웃을 만들 수 있도록 설계된 속성 모음입니다. 어쨌든, 약간의 학습 곡선이 있지만 그리드는

Google 글꼴 변수 글꼴 Google 글꼴 변수 글꼴 Apr 09, 2025 am 10:42 AM

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

See all articles