목차
기본을 만듭니다
채우기를 추가하십시오
방향 인식을 추가하십시오
함께 결합하십시오
접근성
그게 다야!
웹 프론트엔드 CSS 튜토리얼 CSS의 방향 인식이있는 고스트 버튼

CSS의 방향 인식이있는 고스트 버튼

Apr 16, 2025 am 11:32 AM

CSS의 방향 인식이있는 고스트 버튼

유령 버튼을 보았을 것입니까? 그것들은 투명한 배경으로 특징 지어지며 마우스가 맴돌 때 배경은 단색으로 채워집니다. Smashing Magazine에는이 주제에 대한 기사가 있습니다. 이 기사는 유령 버튼을 만들지만이 부분은 비교적 간단합니다. 흥미롭게도 까다 롭고, 우리는 마우스 호버에서 고스트 버튼의 채우기 애니메이션을 시작할 것입니다.

기본 유령 버튼 예는 다음과 같습니다.

대부분의 경우 배경색은 단색으로 전환됩니다. 일부 디자인은 버튼을 왼쪽에서 오른쪽으로, 위로 아래로 채우면 시각적 효과를 높입니다. 예를 들어 왼쪽에서 오른쪽으로 채우십시오.

다음은 소규모 사용자 경험 문제가 있습니다. 마우스가 채워진 영역의 가장자리 위로 떠오르면 무언가 잘못되었다고 느낄 것입니다. 이 예를 고려하면, 버튼은 왼쪽에서 채워지고 오른쪽에서 마우스를 가져옵니다.

초기 호버 지점에서 버튼을 채우는 것이 가장 좋습니다.

그렇다면 버튼 방향 인식을 어떻게 제공합니까? 초기 직관은 JavaScript를 사용하는 것이지만 CSS 및 추가 태그로 수행 할 수 있습니다.

결과를 간단히 살펴보고 싶은 사람들을 위해 다음은 순수한 CSS로 구현 된 방향 인식 고스트 버튼이 있습니다!

단계별로 구축합시다. 모든 코드는이 CodePen 컬렉션에서 찾을 수 있습니다.

기본을 만듭니다

고스트 버튼을 만드는 기본부터 시작하겠습니다. 마킹은 간단합니다.

 <button>우우!</button>
로그인 후 복사

CSS 구현은 CSS 사용자 정의 속성을 활용합니다. 이를 통해 유지 보수가 더 쉬워지고 인라인 속성을 통해 사용자 정의를 촉진합니다.

 버튼 {
  -BORDERWIDTH : 5;
  -BoxShadowDepth : 8;
  -ButtonColor : #F00;
  -결제 크기 : 3;
  -horizontalPadding : 16;
  -TerticalPadding : 8;

  배경 : 투명;
  국경 : calc (var (-borderwidth) * 1px) solid var (-buttoncolor);
  Box-Shadow : calc (var (-BoxShadowDepth) * 1px) calc (var (-BoxShadowDepth) * 1px) 0 #888;
  색상 : var (-ButtonColor);
  커서 : 포인터;
  글꼴 크기 : calc (var (-Fontsize) * 1REM);
  글꼴 중량 : 대담한;
  개요 : 투명;
  패딩 : calc (var (-verticalpadding) * 1px) calc (var (-horizontalpadding) * 1px);
  전환 : Box-Shadow 0.15S 용이성;
}

버튼 : 호버 {
  Box-Shadow : calc (var (-BoxShadowDepth) / 2 * 1px) calc (var (-BoxShadowDepth) / 2 * 1px) 0 #888;
}

버튼 : Active {
  Box-Shadow : 0 0 #888;
}
로그인 후 복사

함께 모으고 우리는 다음을 얻습니다.

매우 좋은! 우리는 버튼과 호버 효과가 있지만 아직 채우기 효과는 없습니다. 다음으로 채우기 효과를 추가하겠습니다.

채우기를 추가하십시오

이를 위해 고스트 버튼의 채우기 상태를 표시하는 요소를 만듭니다. 비결은 clip-path 사용하여 이러한 요소를 자르고 숨기는 것입니다. clip-path 변환하여 호버에 표시 할 수 있습니다.

부모 버튼과 정렬 되어야합니다 . 우리의 CSS 변수는 여기에서 큰 도움이 될 것입니다.

처음에는 의사 요소 사용을 고려할 수 있습니다. 그러나 각 방향에 대해 의사 요소의 수는 충분하지 않습니다. 그들은 또한 접근성에 영향을 미칩니다.

기본 왼쪽에서 오른쪽 패딩을 추가하여 시작하겠습니다. 먼저 추가하겠습니다<span></span> 요소. 해야 한다<span></span> 요소는 버튼과 동일한 텍스트 내용을 가져야합니다.

<button>
  <span>우우!</span>
  우우!
</button>
로그인 후 복사

이제 우리는 필요합니다<span></span> 요소는 버튼과 정렬됩니다. 우리의 CSS 변수는 대부분의 작업을 수행합니다.

 버튼 스팬 {
  배경 : var (-ButtonColor);
  국경 : calc (var (-borderwidth) * 1px) solid var (-buttoncolor);
  하단 : calc (var (-borderwidth) * -1px);
  색상 : var (-bg, #fafafa);
  왼쪽 : calc (var (-borderwidth) * -1px);
  패딩 : calc (var (-verticalpadding) * 1px) calc (var (-horizontalpadding) * 1px);
  위치 : 절대;
  오른쪽 : calc (var (-borderwidth) * -1px);
  상단 : calc (var (-borderwidth) * -1px);
}
로그인 후 복사

마지막으로, 우리는 할 것입니다<span></span> 요소는보기 외부로 자르고 작물을 업데이트하여 호버에 표시하는 규칙을 추가합니다. 전환을 정의하면 케이크에 착빙이 추가됩니다.

 버튼 스팬 {
  -Clip : 삽입 (0 100% 0 0);
  -webkit-clip-path : var (-클립);
  클립 경로 : var (-클립);
  전환 : 클립 경로 0.25S 편의, -webkit-clip-path 0.25s 용이성;
  / * ... 남은 div 스타일 */
}

버튼 : 호버 스팬 {
  -Clip : 삽입 (0 0 0 0);
}
로그인 후 복사

방향 인식을 추가하십시오

그렇다면 방향 인식을 어떻게 추가합니까? 우리는 네 가지 요소가 필요합니다. 각 요소는 호버 진입 점을 감지 할 책임이 있습니다. clip-path 사용하여 버튼 영역을 네 부분으로 나눌 수 있습니다.

버튼에 4를 추가합시다<span></span> 요소와 버튼을 채우도록 배치합니다.

<button>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  우우!
</button>
로그인 후 복사
버튼 스팬 {
  배경 : var (-bg);
  하단 : calc (var (-borderwidth) * -1px);
  -webkit-clip-path : var (-클립);
  클립 경로 : var (-클립);
  왼쪽 : calc (var (-borderwidth) * -1px);
  불투명도 : 0.5;
  위치 : 절대;
  오른쪽 : calc (var (-borderwidth) * -1px);
  상단 : calc (var (-borderwidth) * -1px);
  z- 인덱스 : 1;
}
로그인 후 복사

CSS 변수를 사용하여 각 요소를 찾아 작물과 색상을 할당 할 수 있습니다.

 버튼 스팬 : nth-of-type (1) {
  ---BG : #00F;
  -Clip : 다각형 (0 0, 100% 0, 50% 50%, 50% 50%);
}
버튼 스팬 : nth-of-type (2) {
  ---BG : #F00;
  -Clip : 다각형 (100% 0, 100% 100%, 50% 50%);
}
버튼 스팬 : nth-of-type (3) {
  ---BG : #008000;
  -Clip : 다각형 (0 100%, 100%100%, 50%50%);
}
버튼 스팬 : nth-of-type (4) {
  ---BG : #800080;
  -Clip : 다각형 (0 0, 0 100%, 50%50%);
}
로그인 후 복사

매우 멋지다. 이것을 테스트하려면 호버링하는 동안 불투명도를 바꾸겠습니다.

 버튼 스팬 : nth-of-type (1) : 호버,
버튼 스팬 : nth-of-type (2) : 호버,
버튼 스팬 : nth-of-type (3) : 호버,
버튼 스팬 : nth-of-type (4) : 호버 {
  불투명도 : 1;
}
로그인 후 복사

오, 여기에 질문이 있습니다. 우리가 들어가서 한 섹션 위로 마우스로 가져간 다음 다른 섹션 위로 가져 가면 충전 방향이 바뀝니다. 이것은 옳지 않은 것 같습니다. 이 문제를 해결하기 위해 공간의 일부가 채워 지도록 z-indexclip-path 호버에 설정할 수 있습니다.

 버튼 스팬 : nth-of-type (1) : 호버,
버튼 스팬 : nth-of-type (2) : 호버,
버튼 스팬 : nth-of-type (3) : 호버,
버튼 스팬 : nth-of-type (4) : 호버 {
  -Clip : 다각형 (0 0, 100% 0, 100% 100%, 0 100%);
  불투명도 : 1;
  z- 인덱스 : 2;
}
로그인 후 복사

함께 결합하십시오

우리는 채우기 애니메이션을 만드는 방법을 알고 있으며 방향을 감지하는 방법을 알고 있습니다. 우리는 두 가지를 어떻게 결합합니까? 같은 수준에서 콤보를 사용하십시오!

이렇게하면 세그먼트를 호버 할 때 특정 채우기 요소를 표시 할 수 있습니다.

먼저 태그를 업데이트합시다.

<button>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <b>우우!</b>
  <b>우우!</b>
  <b>우우!</b>
  <b>우우!</b>
  우우!
</button>
로그인 후 복사

이제 CSS를 업데이트 할 수 있습니다. 왼쪽에서 오른쪽으로 패딩을 언급하면 ​​스타일을 재사용 할 수 있습니다. 각 요소에 대한 특정 clip-path 설정하면됩니다. 일부 속성 값과 같은 순서로 처리했습니다. 첫 번째 자식 요소는 상단이고 두 번째 요소는 옳습니다.

 버튼 B : nth-of-type (1) {
  -Clip : 삽입 (0 0 100% 0);
}
버튼 B : nth-of-type (2) {
  -Clip : 삽입 (0 0 0 100%);
}
버튼 B : nth-of-type (3) {
  -Clip : 삽입 (100% 0 0 0);
}
버튼 B : nth-of-type (4) {
  -Clip : 삽입 (0 100% 0 0);
}
로그인 후 복사

마지막 단계는 페어링 세그먼트를 호버링 할 때 관련 요소의 clip-path 업데이트하는 것입니다.

 버튼 스팬 : nth-of-type (1) : hover ~ b : nth-of-type (1),
버튼 스팬 : nth-of-type (2) : hover ~ b : nth-of-type (2),
버튼 스팬 : nth-of-type (3) : hover ~ b : nth-of-type (3),
버튼 스팬 : nth-of-type (4) : hover ~ b : nth-of-type (4) {
  -Clip : 삽입 (0 0 0 0);
}
로그인 후 복사

괜찮은! 방향 인식이있는 순수한 CSS 유령 버튼을 얻습니다.

접근성

현재 상태에서는 버튼이 액세스 할 수 없습니다.

스크린 리더가 콘텐츠를 4 번 반복하기 때문에 이러한 추가 요소는 큰 도움이되지 않습니다. 화면 리더에서 이러한 요소를 숨겨야합니다.

<button>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <b aria-hidden="true">우우!</b>
  <b aria-hidden="true">우우!</b>
  <b aria-hidden="true">우우!</b>
  <b aria-hidden="true">우우!</b>
  우우!
</button>
로그인 후 복사

더 이상 중복 컨텐츠가 없습니다.

그게 다야!

추가 마킹과 CSS 트릭만으로도 방향 인식으로 고스트 버튼을 만들 수 있습니다. 사전 처리기를 사용하거나 응용 프로그램에서 구성 요소를 결합하면 모든 HTML을 작성할 필요가 없습니다.

이는 인라인 CSS 변수를 사용하여 버튼 색상을 제어하는 ​​데모입니다.

이 개정 된 출력은 원본 이미지를 유지하고 원본 텍스트의 핵심 의미를 유지하면서 더 간결하고 다양한 문구를 사용합니다. 또한 원래 기사에 언급 된 접근성 문제를 다룹니다.

위 내용은 CSS의 방향 인식이있는 고스트 버튼의 상세 내용입니다. 자세한 내용은 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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

정적 양식 공급자의 비교 정적 양식 공급자의 비교 Apr 16, 2025 am 11:20 AM

"정적 양식 공급자"라는 용어를 동전하려고합시다. 당신은 당신의 HTML을 가져옵니다

Sass를 더 빨리 만들기위한 개념 증명 Sass를 더 빨리 만들기위한 개념 증명 Apr 16, 2025 am 10:38 AM

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

주간 플랫폼 뉴스 : HTML로드 속성, 주요 ARIA 사양 및 iframe에서 Shadow Dom으로 이동 주간 플랫폼 뉴스 : HTML로드 속성, 주요 ARIA 사양 및 iframe에서 Shadow Dom으로 이동 Apr 17, 2025 am 10:55 AM

이번 주에 플랫폼 뉴스 라운드 업 RONDUP, Chrome은로드에 대한 새로운 속성, 웹 개발자를위한 접근성 사양 및 BBC Move를 소개합니다.

HTML 대화 요소와 함께 일부 실습 HTML 대화 요소와 함께 일부 실습 Apr 16, 2025 am 11:33 AM

이것은 처음으로 HTML 요소를보고 있습니다. 나는 그것을 잠시 동안 알고 있었지만 아직 스핀을 위해 그것을 가져 갔다. 그것은 꽤 시원하고 있습니다

PaperForm PaperForm Apr 16, 2025 am 11:24 AM

구매 또는 빌드는 기술 분야의 고전적인 논쟁입니다. 신용 카드 청구서에 라인 항목이 없기 때문에 물건을 구축하는 것이 저렴할 수 있지만

'Podcast 구독'링크는 어디에서 링크해야합니까? 'Podcast 구독'링크는 어디에서 링크해야합니까? Apr 16, 2025 pm 12:04 PM

한동안 iTunes는 팟 캐스팅에서 큰 개 였으므로 "Podcast 구독"을 링크 한 경우 다음과 같습니다.

주간 플랫폼 뉴스 : 텍스트 간격 북마크, 최상위 차단, 새로운 앰프 로딩 표시기 주간 플랫폼 뉴스 : 텍스트 간격 북마크, 최상위 차단, 새로운 앰프 로딩 표시기 Apr 17, 2025 am 11:26 AM

이번 주에 타이포그래피를 검사하기위한 편리한 북마크 인 Roundup, JavaScript 모듈과 Facebook의 Facebook 등을 어떻게 가져 오는지 땜질하기 위해 대기하는 편리한 북마크 인 Roundup과 Facebook의

직접 비자 스크립트 기반 분석을 호스팅하는 옵션 직접 비자 스크립트 기반 분석을 호스팅하는 옵션 Apr 15, 2025 am 11:09 AM

사이트에서 방문자 및 사용 데이터를 추적하는 데 도움이되는 분석 플랫폼이 많이 있습니다. 아마도 널리 사용되는 Google 웹 로그 분석

See all articles