찾다
웹 프론트엔드CSS 튜토리얼맞춤 속성이있는 큰 gotcha

맞춤 속성이있는 큰 Gotcha

최근에 나는 CSS 사용자 정의 속성 의이 기능에 의해 많은 사람들 (나 자신을 포함한)이 혼란스러워한다는 것을 알았으므로 그것을 기록하기로 결정했습니다.

CSS에 몇 가지 사용자 정의 속성을 추가해 봅시다.

 html {
  -Color-1 : 빨간색;
  -Color-2 : 파란색;
}

우리는 즉시 배경 구배를 만듭니다.

 html {
  -Color-1 : 빨간색;
  -Color-2 : 파란색;

  -BG : Linear-Gradient (오른쪽으로, var (-color-1), var (-color-2));
}

이제 페이지에 두 개의 div가 있다고 가정합니다.

<div></div>
<div></div>

그들을 스타일로 만들자 :

 div {
  배경 : var (-bg);
}

이것은 완전히 작동합니다! 기이!

이제 스타일을 수정합시다. 나는 그것이 빨간색 에서 파란색으로 바뀌는 것을 원하지 않습니다. 나는 그것이 녹색 에서 파란색으로 바뀌기를 원합니다. 매우 간단합니다. 빨간색을 녹색으로 업데이트했습니다.

 html {
  -Color-1 : 빨간색;
  -Color-2 : 파란색;

  -BG : Linear-Gradient (오른쪽으로, var (-color-1), var (-color-2));
}
div {
  배경 : var (-bg);
}
.variation {
  -Color-1 : 녹색;
}

유효하지 않은! (사이렌은 시끄럽고 뿔은 시끄럽고 가축은 어디에나 숨어 있습니다).

친구, 이것은 작동하지 않습니다.

내가 이해하는 한, 문제는 --bg 어떤 DIV에서도 선언 된 적이 없다는 것입니다. --bg 더 높은 수준으로 선언되기 때문에 사용할 수 있지만 사용하면 그 값이 잠겼습니다. --bg 선언에 따라 사용 된 다른 속성을 변경했다고해서 속성이 종속성으로 사용되는 모든 위치를 찾아서 사용하는 모든 것을 업데이트한다는 것을 의미하지는 않습니다.

아아,이 설명은 옳지 않습니다. 그러나 이것은 내가 생각할 수있는 최고의 설명입니다.

해결책? 글쎄, 몇 가지가 있습니다.

솔루션 1 : 가변 범위를 사용되는 위치로 제한하십시오.

당신은 이것을 할 수 있습니다 :

 html {
  -Color-1 : 빨간색;
  -Color-2 : 파란색;
}

div {
  -BG : Linear-Gradient (오른쪽으로, var (-color-1), var (-color-2));
  배경 : var (-bg);
}
.variation {
  -Color-1 : 녹색;
}

이제 --bg 두 DIV에 대해 선언되며 --color-1 의존성 변경이 작동합니다.

솔루션 2 : 쉼표가 분리 된 대부분의 변수에 대한 선택기를 설정합니다.

:root 에서 많은 변수를 설정하는 일반적인 작업을했다고 가정 해 봅시다. 그런 다음이 문제를 해결합니다. 메인 선언에 추가 선택기를 추가하여 올바른 범위에 도달 할 수 있습니다.

 html,
div {
  -Color-1 : 빨간색;
  -Color-2 : 파란색;

  -BG : Linear-Gradient (오른쪽으로, var (-color-1), var (-color-2));
}
div {
  배경 : var (-bg);
}
.variation {
  -Color-1 : 녹색;
}

너무 멀리 가져 오지 않을 수있는 다른 예에서는 다음과 같습니다.

 :뿌리, 
.단추,
. what everation-is-a-bandaid {
  -패딩 인라인 : 1REM;
  -패딩 블록 : 1rem;
  -패딩 : var (-Padding-Block) var (-Padding-inline);
}

.Button {
  패딩 : var (-Padding);
}
.button.wide {
  -패딩 인라인 : 0.5rem;
}

해결책 3 : 포괄적 인 모드

그의 사방에 변수를 넣으십시오.

 * {
  -액세스 : 나;
  -어디서나 : 당신;
  -want : to;

  -hogwild : var (-Access) var (-어디서나);
}

이것은 좋은 해결책이 아닙니다. 페이지 렌더링으로 인해 중간 크기의 사이트 중 하나가 500ms로 지연된 채팅을 최근에 들었습니다. 페이지의 모든 그리기에는 모든 속성을 계산해야하기 때문입니다. "작동"하지만 이것은 선택기를 통해 합법적 인 성과 문제를 일으킬 수있는 몇 가지 예 중 하나입니다.

솔루션 4 : 새로운 "기본"속성 및 폴백을 소개합니다

여기의 모든 크레딧은 스티븐 쇼 (Stephen Shaw)에게 인정을 받았습니다. 스티븐 쇼 (Stephen Shaw).

우리가 처음 으로이 질문을 시연 한 곳으로 돌아가 봅시다.

 html {
  -Color-1 : 빨간색;
  -Color-2 : 파란색;

  -BG : Linear-Gradient (오른쪽으로, var (-color-1), var (-color-2));
}

우리가해야 할 일은 두 가지를주는 것입니다.

  1. 전체 배경을 다루는 방법
  2. 그라디언트 배경의 일부를 다루는 방법

그래서 우리는 이것을해야합니다.

 html {
  -Color-1 : 빨간색;
  -Color-2 : 파란색;
}
div {
  -BG-DEFAULT : 선형 별 (오른쪽으로, var (-color-1), var (-color-2));
  배경 : var (-bg, var (-bg-default));
}

우리는 --bg 전혀 선언하지 않습니다. 그것은 단지 값을 기다리고 있는데, 값을 얻는다면 그것은 "승리"의 가치입니다. 그러나 그렇지 않다면, 그것은 우리의 --bg-default 로 돌아갑니다. 지금……

  1. --color-1 또는 --color-2 를 설정하면 예상대로 그라디언트의 일부를 대체합니다 (DIV 중 하나에 닿는 선택기 에서이 작업을 수행하는 한).
  2. 또는 전체 배경을 내가 원하는대로 재설정하도록 --bg 설정할 수 있습니다.

그것을 다루는 좋은 방법처럼 느껴집니다.

때로는 CSS 사용자 정의 속성에 오류가 발생합니다. 그러나 그것은 그들 중 하나가 아닙니다. 나에게 버그 와 비슷하더라도 분명히 그렇지 않습니다. 당신이 알아야 할 것들 중 하나입니다.

위 내용은 맞춤 속성이있는 큰 gotcha의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

최근에 색상에 대한 도구, 기사 및 리소스가 많이있었습니다. 당신의 즐거움을 위해 여기에 반올림하여 몇 개의 탭을 닫을 수 있습니다.

Flexbox에서 자동 마진이 작동하는 방법Flexbox에서 자동 마진이 작동하는 방법Apr 13, 2025 am 11:35 AM

Robin은 이전에 이것을 다루었지만 지난 몇 주 동안 그것에 대해 약간의 혼란을 듣고 다른 사람이 설명하는 데 찌르는 것을 보았습니다.

움직이는 무지개가 강조합니다움직이는 무지개가 강조합니다Apr 13, 2025 am 11:27 AM

나는 샌드위치 사이트의 디자인을 절대적으로 좋아합니다. 많은 아름다운 특징 중에는 무지개가있는이 헤드 라인이 스크롤 할 때 움직이는 밑줄이 있습니다. 그것은 아닙니다

새해, 새 직업? 그리드 구동 이력서를 만들자!새해, 새 직업? 그리드 구동 이력서를 만들자!Apr 13, 2025 am 11:26 AM

많은 인기있는 이력서 디자인은 그리드 모양으로 섹션을 배치하여 사용 가능한 페이지 공간을 최대한 활용하고 있습니다. CSS 그리드를 사용하여 레이아웃을 만듭니다

너무 많이 재 장전하는 습관에서 사용자를 해소하는 한 가지 방법너무 많이 재 장전하는 습관에서 사용자를 해소하는 한 가지 방법Apr 13, 2025 am 11:25 AM

페이지 새로 고침은 일입니다. 때로는 반응이 없다고 생각하거나 새로운 콘텐츠를 사용할 수 있다고 생각할 때 페이지를 새로 고침합니다. 때때로 우리는 단지 화가났습니다

React를 사용한 도메인 구동 설계React를 사용한 도메인 구동 설계Apr 13, 2025 am 11:22 AM

React 세계에서 프론트 엔드 애플리케이션을 구성하는 방법에 대한 지침은 거의 없습니다. (“옳은 느낌”이 될 때까지 파일을 움직여도 롤). 진실

비활성 사용자 감지비활성 사용자 감지Apr 13, 2025 am 11:08 AM

대부분의 경우 사용자가 응용 프로그램에 적극적으로 참여하거나 일시적으로 비활성화되어 있는지에 대해 신경 쓰지 않습니다. 비활성, 의미, 아마도 그들

Wufoo ZapierWufoo ZapierApr 13, 2025 am 11:02 AM

Wufoo는 항상 통합으로 훌륭했습니다. 캠페인 모니터, MailChimp 및 Typekit과 같은 특정 앱과 통합이 있지만

See all articles

핫 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.