:has()
의사 클래스 란 무엇입니까? :has()
:has()
는 W3C Selector 레벨 4 작업 초안의 일부인 관계형 의사 클래스입니다. 이것은 괄호가있는 것입니다 : 특정 아동 요소와 관련된 일치 요소 (보다 정확하게는 특정 어린이 요소를 포함).
:has()
에 이미지가 포함되어 있지 않다고 스타일을 만들고 싶다고 가정 해 봅시다. 우리는 의 부정적인 능력과 결합하여 이것을 달성 할 수 있습니다.
:has()
:has()
요즘 사람들 이이 의사 클래스의 강력한 기능을 완전히 이해하기 위해서는 세 가지 주요 방법이 있습니다.
<code>/* 匹配包含图像元素的article元素 */ article:has(img) { } /* 匹配article元素,其内部直接包含图像 */ article:has(> img) { }</code>요소 - 제목, 텍스트 및 링크 내부의 전체 텍스트를 듣습니다. 어떤 사람들은이 모든 것을 듣고 싶지 않을 수도 있습니다. 우리는 더 잘할 수 있습니다. HTML5부터 시작하여
요소의 요소를 중첩 할 수 있습니다. 그러나 이것은 항상 나에게, 특히 이런 이유로 잘못 느낀다.
프로 :
:has()
:not()
신속하게
<code>/* 匹配不包含图像的article元素 */ article:not(:has(img)) { }</code>
단점 : :has()
:has()
접근성 문제
스타일을 추가해야합니다. 또한 링크가 키보드 탭 키를 통해 초점을 맞추면 애니메이션의 혜택을받지 않습니다. .card
프로 : :hover
단점 :
단점 :
::after
이 데모의 경우 링크를 호버링하기 위해 카드에 이미지 스케일링과 그림자를 추가하여 화살표가 팝업되어 링크의 텍스트 색상을 변경할 수 있습니다. 운영을 단순화하기 위해 카드에 스코어링 된 사용자 정의 속성을 추가합니다. 이것은 기본 스타일입니다 : <code>/* 匹配包含图像元素的article元素 */ article:has(img) { } /* 匹配article元素,其内部直接包含图像 */ article:has(> img) { }</code>
아주 좋아요! 초기 스케일링 (), 카드 제목 ()의 초기 색상 및 링크에서 화살표를 팝업하는 데 사용할 추가 속성을 추가했습니다. 우리는 또한 --img-scale: 1.001
선언의 빈 상태를 나중에 애니메이션으로 설정했습니다. 이것은 우리가 지금 만들어야 할 클릭 가능한 카드의 기초를 설정하므로, 우리가 원하는 요소에 이러한 사용자 정의 속성을 추가하여 리셋과 스타일을 추가 해 봅시다 : .
--title-color: black
box-shadow
<code>/* 匹配不包含图像的article元素 */ article:not(:has(img)) { }</code><.> 그게 다야. 선택기를위한 또 다른 강력한 사용 사례. 다른 요소를 매개 변수로 선언하여 부모 요소와 일치 할 수있을뿐만 아니라 의사 클래스를 사용하여 부모 요소의 스타일을 일치시키고 설정합니다.
프로 :
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/" class="lazy" alt="Creating Animated, Clickable Cards With the :has() Relational Pseudo Class "><div clas="article-body"> <h2>Some Heading</h2> <p>Curabitur convallis ac quam vitae laoreet. Nulla mauris ante, euismod sed lacus sit amet, congue bibendum eros. Etiam mattis lobortis porta. Vestibulum ultrices iaculis enim imperdiet egestas.</p> <a href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b"> Read more <svg fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z" fill-rule="evenodd"></path></svg></a> </div>
접근 가능
:has()
box-shadow
/* 卡片元素 */ article { --img-scale: 1.001; --title-color: black; --link-icon-translate: -20px; --link-icon-opacity: 0; position: relative; border-radius: 16px; box-shadow: none; background: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bfff; transform-origin: center; transition: all 0.4s ease-in-out; overflow: hidden; } /* 链接的::after伪元素 */ article a::after { content: ""; position: absolute; inset-block: 0; inset-inline: 0; cursor: pointer; }
::after
위 내용은 다음과 함께 애니메이션, 클릭 가능한 카드 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!