찾다
웹 프론트엔드CSS 튜토리얼사용자 정의 속성을 가진 색상을위한 문맥 유틸리티 클래스

사용자 정의 속성을 가진 색상을위한 문맥 유틸리티 클래스

CSS의 currentColor 속성은 매우 실용적이지만 불행히도 우리는 유사한 currentBackgroundColor 속성이 없으며 color-mod() 함수는 아직 널리 지원되지 않습니다.

따라서 많은 개발자들은 컨텍스트에 따라 링크를 스타일링하고 호버링하거나 초점을 맞출 때 색상을 뒤집기를 원합니다. CSS 사용자 정의 속성과 일부 간단한 유틸리티 클래스를 사용하면 스타일의 계단식 기능을 사용하여 강력한 효과를 얻을 수 있습니다.

이를 위해서는 텍스트와 배경색을 지정하기 위해 유틸리티 클래스 (사용자 지정 속성 포함)를 사용 하여이 클래스를 사용하여 밑줄이 그어진 색상을 정의하고 호버링시 전체 배경으로 확장해야합니다.

먼저 HTML 구조를 살펴 보겠습니다.

<p>
    Lorem ipsum dolor sit amet, consectetur apiscing elit, <a href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b">sed do eiusmod tempidiDunt</a> Ut Labore et dolore magna aliqua. Aliquam Sem Fringilla Ut Morbi Tincidunt. Maecenas accumsan lacus vel pacilisis. posuere sollicitudin aliquam 초 Ultrices sagittis orci sclerisque purus semper.
  </p>

이 코드에는 단락과 링크가 포함되어 있습니다. 다음으로 유틸리티 클래스를 설정했습니다. 컬러 헌트에서 4 가지 색상을 정의하여 색상 속성 클래스와 배경색 속성 클래스를 생성합니다. 각각은 값 (각각 --c--bg )을 할당하는 변수를 포함합니다. 예를 들어, 해당 녹색 클래스는 다음과 같습니다.

 .u-color-- 녹색 {
  ---C : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b08ffc8;
  색상 : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b08ffc8;
}

.u-bg--green {
  ---bg : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b08ffc8;
  배경색 : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b08ffc8;
}

SASS 사용자는 매핑 및 루프를 사용하여 자동으로 색상 및 배경 클래스를 생성 할 수 있습니다. 이것은 필요하지 않으며 많은 색상 관련 유틸리티 클래스를 자동으로 생성하는 한 가지 방법 만 있습니다. 이것은 매우 유용하지만 사용량을 추적하고 사용하지 않은 클래스를 만드는 것을 피하십시오. 다음은 이러한 클래스를 생성하는 SASS 코드입니다.

 $ colors : (// 색상 목록 정의 '녹색': https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b08ffc8,
  'light': https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15bffff7f7,
  '그레이': https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15bdadada,
  '다크': https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b204969
);

@each $ n, $ c in $ colours {// $ n은 키입니다. $ c는 값입니다.
    ---C : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b {$c};
    색상 : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b {$c};
  }

  .u-bg--https : //www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b {$ n} {
    ---bg : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b {$c};
    배경색 : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b {$c};
  }
}

html에서 유틸리티 클래스를 적용하는 것을 잊어 버린 경우 --c 변수는 currentColor 를 사용하며 --bg ! 이를 피하기 위해 최상위 기본값을 정의합니다.

 html {
  ---C : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b000000;
  ---bg : https://www.php.cn/link/93ac0c50ddc7b88e5fe05c70e15bffffff;
}

이제 링크를 스타일링하십시오. 이 기사에서 우리는 모두 스타일을 지정할 것입니다<a></a> 요소이지만 .fancy-link 와 같은 클래스를 추가하기 쉽습니다.

링크의 스타일은 "사랑의 증오"순서를 따라야합니다 : :link , :visited , :hover (및 :focus !) 및 :active . 우리는 사용할 수 있지만 :any-link 이지만 브라우저 지원은 CSS 사용자 정의 속성만큼 좋지 않습니다.

먼저 링크 스타일을 선언하고 이전 브라우저에 허용되는 경험을 제공 한 다음 사용자 정의 속성 지원을 확인할 수 있습니다.

 /* 오래된 브라우저의 스타일*/
A {
  색상 : 상속;
  텍스트 결정 : 밑줄;
}

A : 호버,
A : 초점,
A : Active {
  텍스트 결정 : 없음;
  개요 : .0625EM Solid CurrentColor;
  개요-오프셋 : .0625EM;
}

A : Active {
  개요 width : .125EM;
}

@supports (--a : b) { /* 지원을 위해 CSS 변수를 확인하십시오* /
  /* 기본 변수 값*/
  html {
    ---C : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b000000;
    ---bg : https://www.php.cn/link/93ac0c50ddc7b88e5fe05c70e15bffffff;
  }

  A {
    /* 기본 링크 스타일*/
  }
}

다음으로 기본 링크 스타일을 만듭니다. 맞춤 속성을 사용하여 스타일을 최대한 건조하게 만듭니다.

먼저 변수를 설정해야합니다. 다양한 속성에 대한 --space 변수를 정의하고 텍스트 주위에 공간을 추가하려고합니다. 링크 색상은 또한 --link-color 변수로 정의되어 currentColor 로 기본값이됩니다. 가짜 밑줄은 배경 이미지를 사용하여 생성되며, 그 크기는 --bg-size 변수를 사용하여 상태에 따라 조정되며, 이는 --space 값으로 기본값을 얻습니다. 마지막으로, 더 많은 재미를 위해, 우리는 링크가 :active 있을 때 테두리 --shadow-size 시뮬레이션 할 것입니다. 이것은 우리에게 제공합니다 :

 -공간 : .125EM;
-링크 색상 : CurrentColor;
-BG 사이즈 : var (-공간);
-쉐도우 크기 : 0;

먼저, 우리는 폴백 스타일을 조정해야합니다. 사용자 정의 속성을 사용하도록 색상을 설정하고 기본 밑줄을 제거합니다.

 색상 : var (-link-color);
텍스트 결정 : 없음;

다음으로 가짜 밑줄을 만듭니다. 이미지는 두 개의 동일한 시작과 끝점의 선형 구배가됩니다 : 텍스트 색상 --c . 우리는 그것이 background-repeat: repeat-x; 요소 background-position: 0 100%; . 마지막으로, 우리는 크기, 수평 100% 및 수직 --bg-size 값을 제공합니다. 마침내 :

 배경 이미지 : 선형 그레이드 (var (-c, currentColor), var (-C, currentColor));
배경 반복 : 반복 -X;
배경 위치 : 0 100%;
배경 크기 : 100% var (-BG 사이즈);

for :active State, 우리는 또한 존재하지 않을 것이지만 변수를 사용하면 다음과 같이 적용 할 수 있습니다 : box-shadow box-shadow: 0 0 0 var(--shadow-size, 0) var(--c);

이것은 대부분의 기본 스타일입니다. 이제 링크 상태를 기반으로 변수에 새 값을 할당해야합니다.

:link:visited 링크가 "유휴 상태"에있을 때 사용자가 보는 것입니다. 우리가 모든 것을 설정 했으므로 이것은 짧은 규칙 세트입니다. --link-color 의 초기 할당에서 --c 변수를 선언 할 수 있지만, 나는 우리의 스타일의 모든 단계를 명확하게하기 위해 여기에 할당하고 있습니다.

 A : 링크,
A : 방문 {
  -링크 색상 : var (-c);
}

링크는 이제 멋져 보이지만, 우리가 상호 작용하면 아무 일도 일어나지 않을 것입니다 ... 다음은 이러한 스타일을 만듭니다. 두 가지 일이 필요합니다. 배경은 사용 가능한 모든 높이 (즉, 100%)를 차지해야하며 텍스트 색상은 텍스트 색상 (혼란스럽고 오른쪽)이므로 텍스트 색상을 배경 색상으로 변경해야합니다. 첫 번째는 간단합니다 : --bg-size: 100%; . 텍스트 색상의 경우 --bg 변수를 다음과 같이 할당합니다. --link-color: var(--bg); . 의사 클래스 선택기와 함께 다음과 같이 끝납니다.

 A : 호버,
A : 초점,
A : Active {
    -BG 크기 : 100%;
    -link-color : var (-bg);
}

밑에서, 밑줄은 호버링하거나 집중할 때 완전한 배경이됩니다! 보너스로, 우리는 --shadow-size 추가하여 링크를 클릭 할 때 모의 경계를 추가 할 수 있으며, --space 변수는 다시 유용합니다.

 A : Active {
  -Shadow-size : var (-공간);
}

우리는 지금 거의 끝났습니다! 그러나 너무 일반적인 것처럼 보이므로 전환, 일부 패딩 및 둥근 모서리를 추가하고 링크가 여러 행에 걸쳐 있으면 멋지게 보이도록하겠습니다!

전환을 위해서는 애니메이션 색상, 배경 크기 및 box-shadow 만 있으면됩니다. 지속 시간은 당신에게 달려 있지만 링크의 높이가 약 20 픽셀이라는 점을 감안할 때 더 짧은 기간을 설정할 수 있습니다. 마지막으로, 매끄럽게 보이도록 ease-in-out 합시다. 이것은 다음과 같이 요약됩니다.

 전환 프로퍼티 : 색상, 배경 크기, 박스 쉐이도;
전환 기간 : 150ms;
전환 타이밍 기능 : 편의-아웃;
Will Change : 색상, 배경 크기, Box-Shadow; /* 브라우저에 어떤 속성이 작동할지 알려주십시오. */

다음으로 --space 변수를 paddingborder-radius 에 할당하지만 전자에 대해 걱정하지 않습니다. 인라인 블록으로 정의하지 않기 때문에 padding 텍스트 블록의 수직 리듬을 망치지 않습니다. (그냥 가치를 테스트하십시오)

 패딩 : var (-공간);
Border-Radius : var (-공간);

마지막으로, 스타일이 여러 줄에 올바르게 적용되도록하기 위해서는 box-decoration-break: clone; (그리고 당신이 선호하는 경우 접두사), 그게 다야.

완료되면 다음 스타일이 있어야합니다.

 /* 오래된 브라우저의 스타일*/
A {
  색상 : 상속;
  텍스트 결정 : 밑줄;
}

A : 호버,
A : 초점,
A : Active {
  텍스트 결정 : 없음;
  개요 : .0625EM Solid CurrentColor;
  개요-오프셋 : .0625EM;
}

A : Active {
  개요 width : .125EM;
}

/* 최신 브라우저의 기본 링크 스타일*/
@Supports (-a : b) {
  /* 기본 변수 값*/
  html {
    ---C : https://www.php.cn/link/93ac0c50dddc7b88e5fe05c70e15b000000;
    ---bg : https://www.php.cn/link/93ac0c50ddc7b88e5fe05c70e15bffffff;
  }

  A {
    /* 변수*/
    -공간 : .125EM;
    -링크 색상 : CurrentColor;
    -BG 사이즈 : var (-공간);
    -쉐도우 크기 : 0;

    /* 레이아웃*/
    패딩 : var (-공간); /* 인라인 요소는 수직 리듬에 영향을 미치지 않으므로 각 방향을 지정할 필요가 없습니다*/

    /* 텍스트 스타일*/
    색상 : var (-link-color); /* 변수로 색상 설정*/
    텍스트 결정 : 없음; /* 기본 밑줄을 삭제*/

    /* 박스 스타일*/
    Border-Radius : var (-공간); / * 더 아름답게 만드십시오 more */
    배경 이미지 : 선형 그레이드 (var (-c, currentColor), var (-C, currentColor));
    배경 반복 : 반복 -X;
    배경 위치 : 0 100%;
    배경 크기 : 100% var (-BG 사이즈);
    Box-Shadow : 0 0 0 var (-shadow-size, 0) var (-c, currentColor); /* 사용 : 활성 상태*/
    박스-디코레이션 브레이크 : 클론; /* 여러 줄에 걸친 링크에서 스타일이 반복되는지 확인*/

    /* 전환 명세서*/
    전환 프로퍼티 : 색상, 배경 크기, 박스 쉐이도;
    전환 기간 : 150ms;
    전환 타이밍 기능 : 편의-아웃;
    Will Change : 색상, 배경 크기, Box-Shadow;
  }

  /* 유휴 상태*/
  A : 링크,
  A : 방문 {
    -link-color : var (-c, currentColor); / * --C를 사용하거나 CurrentColor로 돌아갑니다 */
  }

  /* 상호 작용 상태*/
  A : 호버,
  A : 초점,
  A : Active {
    -BG 크기 : 100%;
    -link-color : var (-bg);
  }

  /* 활동*/
  A : Active {
    -Shadow-size : var (-공간); /* 박스 샤도 크기 정의*/
  }
}

물론 밑줄을 사용하는 것보다 조금 더 복잡하지만 항상 텍스트와 배경 색상에 액세스 할 수있는 유틸리티 클래스와 함께 매우 진보적 인 향상입니다.

세 가지 변수로이를 향상시킬 수 있으며, 각 색상은 RGB 또는 HSL 형식을 사용하여 불투명도를 조정합니다. 텍스트 그림자를 추가하여 text-decoration-skip-ink 시뮬레이션 할 수도 있습니다!

위 내용은 사용자 정의 속성을 가진 색상을위한 문맥 유틸리티 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
커서를위한 다음 레벨 CSS 스타일커서를위한 다음 레벨 CSS 스타일Apr 23, 2025 am 11:04 AM

CSS가있는 커스텀 커서는 훌륭하지만 JavaScript를 사용하여 다음 단계로 가져갈 수 있습니다. JavaScript를 사용하면 커서 상태를 전환하고 커서 내에 동적 텍스트를 배치하고 복잡한 애니메이션을 적용하며 필터를 적용 할 수 있습니다.

Worlds Collide : 스타일 쿼리를 사용한 KeyFrame Collision DetectionWorlds Collide : 스타일 쿼리를 사용한 KeyFrame Collision DetectionApr 23, 2025 am 10:42 AM

2025 년에 서로를 ricocheting하는 요소가있는 대화식 CSS 애니메이션은 CSS에서 Pong을 구현할 필요가 없지만 CSS의 유연성과 힘이 증가하는 것은 LEE의 의심을 강화합니다.

UI 효과를 위해 CSS 배경 필터 사용UI 효과를 위해 CSS 배경 필터 사용Apr 23, 2025 am 10:20 AM

CSS 배경 필터 속성을 사용하여 사용자 인터페이스 스타일에 대한 팁과 요령. 여러 요소들 사이에 필터를 배경으로 배경으로 배경으로하는 방법을 배우고 다른 CSS 그래픽 효과와 통합하여 정교한 디자인을 만듭니다.

미소?미소?Apr 23, 2025 am 09:57 AM

글쎄, SVG '의 내장 애니메이션 기능은 계획대로 이상 사용되지 않았다. 물론 CSS와 JavaScript는 부하를 운반 할 수있는 것 이상이지만 Smil이 이전과 같이 물에서 죽지 않았다는 것을 아는 것이 좋습니다.

'예쁜'은 보는 사람의 눈에 있습니다'예쁜'은 보는 사람의 눈에 있습니다Apr 23, 2025 am 09:40 AM

예, 텍스트-랩을위한 점프 : Safari Technology Preview의 예쁜 착륙! 그러나 Chromium 브라우저에서 작동하는 방식과는 다른 점을 조심하십시오.

CSS- 트릭 연대기 XLIIICSS- 트릭 연대기 XLIIIApr 23, 2025 am 09:35 AM

이 CSS- 트릭 업데이트는 Almanac, 최근 Podcast 출연, 새로운 CSS 카운터 가이드 및 귀중한 컨텐츠에 기여하는 몇 가지 새로운 저자의 추가 진전을 강조합니다.

Tailwind ' s @apply 기능은 소리보다 낫습니다Tailwind ' s @apply 기능은 소리보다 낫습니다Apr 23, 2025 am 09:23 AM

대부분의 경우 사람들은 Tailwind ' S 단일 프로퍼 유틸리티 중 하나 (단일 CSS 선언을 변경)와 함께 Tailwind ' s @apply 기능을 보여줍니다. 이런 식으로 선보일 때 @apply는 전혀 약속하는 소리가 들리지 않습니다. 그래서 Obvio

릴리스가없는 느낌 : 제정신 배치를 향한 여정릴리스가없는 느낌 : 제정신 배치를 향한 여정Apr 23, 2025 am 09:19 AM

바보처럼 배포하는 것은 배포하는 데 사용하는 도구와 복잡성에 대한 보상과 복잡성이 추가됩니다.

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

Video Face Swap

Video Face Swap

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

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구