CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

青灯夜游
Freigeben: 2022-08-03 11:27:03
Original
2341 Leute haben es durchsucht

Im vorherigen Artikel „CSS-Pseudo-Selektor-Lernen: Pseudo-Element-Selektor-Analyse“ haben wir etwas über Pseudo-Element-Selektoren gelernt, und heute werfen wir einen genaueren Blick auf Pseudo-Klassen-Selektoren. Ich hoffe, dass es für alle hilfreich ist !

CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

Pseudoklassenselektor

Pseudoklassenselektorist eine Verwendung, die es ermöglicht, HTML-Elemente anhand von Statusinformationen zu finden, die nicht im HTML-Element enthalten sind. Die spezifische Verwendung des „Pseudoklassenselektors“ besteht darin, Schlüsselwörter zum vorhandenen Selektor hinzuzufügen, um die Statusinformationen des positionierten HTML-Elements darzustellen. [Empfohlenes Lernen:CSS-Video-Tutorial]Durch Pseudoklassen können Entwickler den dynamischen Status von Elementen festlegen, z. B. Schweben (Hover), Klicken (aktiv) und Elemente im Dokument, die von anderen Selektoren nicht ausgewählt werden können (Diese Elemente haben keine ID oder Klassenattribute), z. B. erstes Kind oder letztes Kind.

Zum Beispiel kann der Pseudoklassenselektor :hoververwendet werden, um die Farbe einer Schaltfläche zu ändern, wenn der Benutzer mit der Maus darüber fährt. Wie im folgenden Beispielcode gezeigt:

/* 所有用户指针悬停的按钮 */ button:hover { color: blue; }
Nach dem Login kopieren
Der Name der Pseudoklasse unterscheidet nicht zwischen Groß- und Kleinschreibung, sondern muss mit einem Doppelpunkt :beginnen. Darüber hinaus müssen Pseudoklassen in Verbindung mit Selektoren in CSS verwendet werden. Das Syntaxformat lautet wie folgt:

选择器:伪类 { 属性 : 属性值; }
Nach dem Login kopieren
:hover伪类选择器可以用来在用户将鼠标悬停在按钮上时改变按钮的颜色。如下示例代码所示:

         
Nach dem Login kopieren
Nach dem Login kopieren
  • 涂山红红
  • 涂山苏苏
  • 涂山蓉蓉
  • 涂山雅雅

伪类的名称不区分大小写,但需要以冒号:开头。另外,伪类需要与 CSS 中的选择器结合使用,语法格式如下:

li:first-child { color: red; } li:last-child { color: blue; }
Nach dem Login kopieren
Nach dem Login kopieren

伪类选择器的具体语法格式为:伪类,这里一定不要忘记:

Das spezifische Syntaxformat des Pseudoklassenselektors

ist:pseudo-class.hier nicht vergessen:.

In CSS werden verschiedene Pseudoklassen bereitgestellt, wie in der folgenden Tabelle dargestellt:

-Element zu, dessen lang-Attributwert mit „it“ beginnt.

muss das letzte untergeordnete Element im übergeordneten Element sein im übergeordneten Element

ist element

-child

:focus :hover :in-range :invalid trifft jedes entspricht dem letzten untergeordneten Element im übergeordneten Element, passt zu allen nicht besuchten Links passt zu jedem Element, das kein entspricht dem zweiten untergeordneten Element im übergeordneten Element entspricht dem vorletzten untergeordneten Element des übergeordneten Elements entspricht dem vorletzten untergeordneten Element des übergeordneten Elements entspricht dem zweiten untergeordneten Element von Das übergeordnete Element
Selektor Beispiel Beispielbeschreibung
:aktiv a:aktiv passender angeklickter Link
:geprüft Eingabe:geprüft match < in selected state ;input>
:disabled input:disabled entspricht jedem deaktivierten -Element
:empty p:empty entspricht jedem

:enabled input:enabled entspricht jedem aktivierten -Element
:first-child p:first-child entspricht dem ersten Element im übergeordneten Child-Element

, muss das erste untergeordnete Element im übergeordneten Element sein

:first-of-type p:first-of-type entspricht dem ersten untergeordneten Element im übergeordneten Element A

input:focus entspricht dem fokussierten -Element
a:hover entspricht dem Element, über dem sich die Maus befindet
input:in-range trifft auf -Elemente mit dem angegebenen Wertebereich zu
input:invalid trifft auf alle zu p:lang(it)
:last-child p :last-child
:link a:link
:not(selector) :not (p)
:nth-child(n) p:nth-child(2)
:nth-last-child(n) p:nth-last-child(2)
:nth-last -of-type(n) p:nth-last-of-type (2)
:nth-of-type(n) p:nth-of-type(2)
stimmt mit dem einzigen untergeordneten Element im übergeordneten Element überein. Bereich Eingabe:out-of-range trifft auf -Elemente mit Werten außerhalb des angegebenen Bereichs zu Das angegebene „readonly“-Attribut
:read-write input:read-write stimmt mit keinem „readonly“-Attribut überein element
:root root passend zum Root-Element des Elements, in dem das „required“-Attribut angegeben ist. In HTML ist das Root-Element immer HTML
:target #news:target entspricht dem aktuell aktiven #news-Element (klicken Sie auf die URL, die diesen Ankernamen enthält)
:valid input:valid entspricht allen -Elementen mit einem gültigen Wert
:visited a:visited stimmt mit allen Links überein, die besucht wurden

Klassifizierung von Pseudoklassenselektoren

Die CSS-Version hat sich von der ersten zur dritten Version weiterentwickelt, und die Anzahl der bereitgestelltenPseudoklassenselektorenist bereits riesig. Insbesondere die CSS3-Version hat eine große Anzahl von „Pseudoklassenselektoren“ hinzugefügt. Es gibt so viele „Pseudo-Klassen-Selektoren“: bezieht sich auf Benutzer Einige verhaltensbezogene Pseudoklassen, wie z. B. Schweben mit:hover, Drücken von:activeund Erhalten des Fokus:focususw.

URL-Positionierungs-Pseudoklasse: Wird zum Auffinden von Elementen in HTML-Seiten verwendet

Eingabe-Pseudoklasse: Pseudoklasse im Zusammenhang mit Formularsteuerelementen

Struktur-Pseudoklasse : main Wird zum Auffinden des Zielelements verwendet
  • Pseudoklasse der logischen Kombination: Wird für logische Operationen wie:not()verwendet, was bedeutet, dass es sich nicht um ein bestimmtes Element handelt.:hover、按下:active以及获取焦点:focus等。

  • URL定位伪类:用于定位HTML页面中的元素

  • 输入伪类:与表单控件相关的伪类

  • 结构伪类:主要用于定位目标元素

  • 逻辑组合伪类:用于逻辑操作的,例如:not(),就表示不是某元素。

1、用户行为伪类--动态伪类选择器

之所以称为动态伪类选择器,是因为它们根据条件的改变匹配元素,是相对于文档的固定状态来说的。随着JavaScript广泛用于修改文档内容和元素状态,动态选择器和静态选择器之间的界限越来越模糊,不过,动态伪类选择器仍然是一类比较特别的选择器。

:link选择器匹配超链接,:visited选择器匹配用户已经访问过得超链接。

使用:visited选择器可以应用到链接元素的属性不多。你可以改变颜色和字体,不过仅此而已。

提示::visited选择器匹配用户在所有页面访问过的href属性为URL的任意链接,而不只是你的页面。:visited最常见的用法就是针对已访问的链接应用某种样式,从而让它们跟未访问的链接有所区别。比如我们看新闻,看过的新闻和没有看过的新闻在首页列表呈现的状态是不一样的,便于我们区分。

:hover 选择器

:hover选择器匹配用户鼠标悬停在其上的任意元素。

:active 选择器

:active选择器匹配当前被用户激活的元素(一般情况下为鼠标点击该元素)。

:focus 选择器

:focus选择器匹配获得焦点的元素,常用于 input 元素。

2、结构性伪类选择器

使用结构性伪类选择器能够根据元素在文档中的位置选择元素。这类选择器都有一个冒号字符前缀(:),例如:empty。他们可以单独使用,也可以跟其他选择器组合使用,如p:empty。

结构伪类选择器类选择器包含的内容如下表所示:

1. Benutzerverhaltens-Pseudoklasse – dynamischer Pseudoklassenselektor
伪类选择器 作用
selector:first-child 用来定位一组兄弟元素中的第一个元素
selector:last-child 用来定位一组兄弟元素中的最后一个元素
selector:nth-child(n) 用来定位一组兄弟元素中的第n个元素
selector:nth-last-child(n) 用来定位一组兄弟元素中倒序方式的第n个元素
selector:first-of-type 用来定位一组同类型的兄弟元素中的第一个元素
selector:last-of-type 用来定位一组同类型的兄弟元素中的最后一个元素
selector:nth-of-type(n) 用来定位一组同类型的兄弟元素中的第n个元素
selector:nth-last-of-type(n) 用来定位一组同类型的兄弟元素中倒序方式的第n个元素
selector:only-child 用来定位一个没有任何兄弟元素的元素
selector:only-of-type 用来定位一个没有任何同类型兄弟元素的元素
selector:empty 用来定位一个没有子级元素的元素,并且该元素也没有任何文本内容
selector:root 用来定位 HTML 页面中的根元素(
Der Grund, warum sie dynamische Pseudoklassenselektoren genannt werden, liegt darin, dass sie Elemente entsprechend geänderten Bedingungen abgleichen . Relativ zum festen Zustand des Dokuments. Da JavaScript häufig zum Ändern von Dokumentinhalten und Elementzuständen verwendet wird, verschwimmen die Grenzen zwischen dynamischen Selektoren und statischen Selektoren zunehmend. Dynamische Pseudoklassenselektoren sind jedoch immer noch eine besondere Art von Selektoren.: Der Link-Selektor stimmt mit Hyperlinks überein, und der :visited-Selektor stimmt mit Hyperlinks überein, die der Benutzer besucht hat. Verwendung des besuchten Selektors: Es gibt nicht viele Attribute, die auf Linkelemente angewendet werden können. Sie können die Farben und Schriftarten ändern, aber das ist auch schon alles.
Tipps: Der besuchte Selektor stimmt mit jedem Link in der URL überein, dessen href-Attribut die URL ist, die der Benutzer auf allen Seiten besucht hat, nicht nur auf Ihrer Seite. Die häufigste Verwendung von :visited besteht darin, besuchten Links einen bestimmten Stil zuzuweisen, um sie von nicht besuchten Links zu unterscheiden. Wenn wir beispielsweise Nachrichten ansehen, wird der Status der Nachrichten, die wir gelesen haben, und der Nachrichten, die wir nicht gesehen haben, in unterschiedlichen Zuständen auf der Startseitenliste angezeigt, sodass wir sie leichter unterscheiden können.

: Hover-Selektor

: Der Hover-Selektor stimmt mit jedem Element überein, über das sich der Benutzer mit der Maus bewegt.

: aktiver Selektor

: aktiver Selektor entspricht dem Element, das aktuell vom Benutzer aktiviert ist (normalerweise wird das Element mit der Maus angeklickt).

: Fokusauswahl

: Der Fokusauswahl entspricht dem fokussierten Element und wird häufig für Eingabeelemente verwendet. 2. Struktureller PseudoklassenselektorVerwenden Sie den strukturellen Pseudoklassenselektor, um Elemente basierend auf ihrer Position im Dokument auszuwählen. Dieser Art von Selektor wird ein Doppelpunkt vorangestellt (:), zum Beispiel: leer. Sie können einzeln oder in Kombination mit anderen Selektoren wie p:empty verwendet werden.Der Inhalt des Struktur-Pseudoklassenselektors wird in der folgenden Tabelle angezeigt:
selector:nth-last-child(n)

Pseudoklassenselektor Funktion
selector:first-childWird verwendet, um das erste Element in einer Gruppe von Geschwisterelementen zu lokalisieren
selector:last-child Wird verwendet, um das erste Element in zu lokalisieren eine Gruppe von Geschwisterelementen Das letzte Element von
selector:nth-child(n) wird verwendet, um das n-te Element in einer Gruppe von Geschwisterelementen zu lokalisieren
Wird verwendet, um das n-te Element in einer Gruppe von Geschwisterelementen in umgekehrter Reihenfolge zu lokalisieren
selector :first-of-type Wird verwendet, um das erste Element in einer Gruppe von Geschwisterelementen desselben Typs zu lokalisieren
selector:last- of-type code>Wird verwendet, um das letzte Element in einer Gruppe von Geschwisterelementen desselben Typs zu lokalisieren
selector:nth-of-type(n) code> Wird verwendet, um das n-te Element in einer Gruppe von Geschwisterelementen desselben Typs zu finden
selector:nth-last-of-type(n) Wird zum Auffinden des n-ten Elements in umgekehrter Reihenfolge in einer Gruppe von Geschwisterelementen desselben Typs verwendet.
selector:only-child wird zum Auffinden verwendet ein Element ohne Geschwisterelemente
selector:only-of-type Wird verwendet, um ein Element zu finden, das keine Geschwisterelemente desselben Typs hat
selector: empty wird verwendet, um ein Element zu finden, das keine untergeordneten Elemente hat und das Element keinen Textinhalt hat
selector:root Wird verwendet, um das Stammelement in der HTML-Seite zu finden ()

CSS中的结构伪类选择器是根据HTML页面中元素之间的关系来定位HTML元素,从而减少对HTML元素的id属性和class属性的依赖。

:first-child与:last-child

:first-child伪类用来定义一组兄弟元素的第一个元素而:last-child伪类则是定位一组兄弟元素的最后一个元素。

如下示例代码展示了:first-child伪类和:last-child伪类的用法:

HTML结构如下:


                  
Nach dem Login kopieren
Nach dem Login kopieren
  • 涂山红红
  • 涂山苏苏
  • 涂山蓉蓉
  • 涂山雅雅

CSS代码如下:

li:first-child { color: red; } li:last-child { color: blue; }
Nach dem Login kopieren
Nach dem Login kopieren

代码运行结果如下图所示:

CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

:first-child伪类可以使用:nth-child(n)伪类改写为:nth-child(1),而:last-child伪类可以使用:nth-last-child(n)伪类改写为:nth-last-child(1)

:first-child伪类和:last-child伪类经常会引起误解。例如li:first-child是用来定位所有

  • 元素中第一个作为子级元素的,而不是定位
  • 元素的第一个子级元素。

    :first-of-type与:last-of-type

    :first-of-type伪类和:last-of-type伪类一个用于定位一组元素中的第一个兄弟元素,一个用来定位最后一个。

    如下示例代码展示了:first-of-type伪类和:last-of-type伪类的用法:

    HTML结构如下:

    狐妖小红娘

    涂山红红

    涂山苏苏

    Nach dem Login kopieren

    CSS代码如下:

    p:first-of-type { color: red; } p:last-of-type { color: blue; }
    Nach dem Login kopieren

    代码运行结果如下图所示:

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    :first-of-type伪类与:last-of-type伪类的用法一定要和:first-child伪类与:last-child伪类的用法区分开。以:first-of-type伪类和:first-child伪类为例来说明:

    • :first-of-type伪类是定位一组同类型的兄弟元素中的第一个元素,不管这个元素在兄弟元素中的位置如何。

    • :first-child伪类是定位一组兄弟元素中的第一个元素,这些兄弟元素不一定是同类型的。

    如果将上述示例代码中的:first-of-type伪类改写为:first-child伪类的话,将不会生效。

    :nth-child(n)与:nth-last-child(n)

    :nth-child(n)伪类和:nth-last-child(n)伪类都是CSS3中新增的选择器,这两个选择器的用法基本上是一致的。区别在于:nth-last-child(n)伪类是倒序方式定位元素,也就是说,:nth-last-child(n)伪类是从一组元素的结尾开始的。

    接下来,主要以:nth-child(n)伪类为例进行讲解。:nth-child(n)伪类中的n参数的含义具有3种情况:

    • 数字值:任意一个大于 0 的正整数。例如#example td:nth-child(1)表示定位ID为example的父元素下所有

  • 元素中的第一个元素。
  • 关键字:odd表示奇数,等同于:nth-child(2n)even表示偶数,等同于:nth-child(2n+1)

  • 格式为(an+b)公式:a表示周期的长度(步长),n表示计数器(从 0 开始),而b则表示偏移值。

    如下示例代码展示了:nth-child(n)伪类(实现表格隔行换色效果)的用法:

    nbsp;html>    nth-child伪类 
    Nach dem Login kopieren
    姓名 区域
    梵云飞 西西域
    欢都落兰 南国
    石宽 北山
    涂山红红 涂山

    代码运行结果如下图所示:

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    :nth-child(n)伪类的n参数用法中比较复杂的是使用(an+b)公式用法,如下示例列举了一些公式用法:

    • :nth-child(5n):定位元素的序号是5[=5×1]、10[=5×2]、15[=5×3]等。

    • :nth-child(3n+4):定位元素的序号是4[=(3×0)+4]、7[=(3×1)+4]、10[=(3×2)+4]、13[=(3×3)+4] 等。

    • :nth-child(-n+3):定位元素的序号是3[=-0+3]、2[=-1+3]、1[=-2+3]。

    :nth-child(n)伪类与:nth-last-child(n)伪类和:nth-of-type(n)伪类与:nth-last-of-type(n)伪类的区别,类似于:first-of-type伪类与:last-of-type伪类和:first-child伪类与:last-child伪类的区别。

    :empty

    :empty伪类是用来定位没有任何子级元素或文本内容的元素,其中文本内容包含了空白。但是HTML的注释是不影响:empty伪类定位元素的。

    如下示例代码展示了:empty伪类的用法:

    nbsp;html>    empty伪类  
    这个元素的背景是粉色的
    Nach dem Login kopieren

    代码运行结果如下图所示:

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    :root

    CSS中的:root伪类选择器比较简单,它代表的就是元素。

    如下代码展示的:root伪类的用法:

    :root { height: 100vh; width: 100vw; background-color: dodgerblue; }
    Nach dem Login kopieren

    代码运行结果如下图所示:

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    3、UI元素状态伪类选择器

    使用UI伪类选择器可以根据元素的状态匹配元素,下方列表将简单总结这类选择器:

    选择器 说明
    :enabled 选择启用状态的元素
    :disabled 选择禁用状态的元素
    :checked 选择被选中的input元素(只用于单选按钮和复选框)
    :default 选择默认元素
    :valid 根据输入验证选择有效或者无效的input元素
    :in-range/:out-of-range 选择在制定范围之内或者职位受限的input元素
    :required/:optional 根据是否允许:required属性选择input元素

    4、输入伪类选择器

    关于表单输入的伪类,主要介绍三种常用的,具体如下:

    • :enabled:disabled

    • :read-only:read-write

    • :checked

    :enabled和:disabled

    :enabled:disabled一这组伪类选择器分别表示禁用状态与可用状态,这组为了使完全对立的。

    :enabled伪类的实际用处并不大,因为大多元素默认都是可用的,所以写不写意义并不大。

    如下代码展示了:enabled:disabled的用法:

    nbsp;html>    :enabled和:disabled的用法   
    Nach dem Login kopieren

    代码运行结果如下所示:

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    由上图我们看到禁用状态的的背景颜色为灰色。

    :read-only和:read-write

    :read-only:read-write一这组伪类选择器分别表示只读和可写状态,同样的:read-write也很鸡肋,因为默认就是可读写,示例代码如下所示:

    nbsp;html>    :read-only和:read-write   
    Nach dem Login kopieren

    代码运行结果如下所示:

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    我们可以看到,只读的的文字颜色为红色。

    :checked

    :checked伪类可以说是众多伪类选择器中使用频率很高的一个伪类选择器,该选择器表示选中的状态,就比如下面这个例子:

    nbsp;html>    checked伪类   
    Nach dem Login kopieren

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    关于:checked伪类,最佳实践是配合元素来实现,现在我们就通过:checked元素来实现一个开关的效果。

    示例代码如下:

    nbsp;html>    开关             
    Nach dem Login kopieren

    运行效果如下所示:

    CSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse

    5、逻辑组合伪类

    :not()否定的伪类

    • 优先级为0,优先级由括号中的表达式决定;:not(p)由p决定

    • 可以不断的级联;
      input:not(:disabled):not(:read-only) {};表示处于不禁用,也不处于只读的状态

    • 不可出现多个表达式,也不支持选择符;
      li:not(li, od); 尚未支持

    :not()的巨大的用处在于告别重置的问题;

    重置web中的样式,就好比我们在项目中经常使用到的:添加.active类名来控制样式的显示与隐藏/改变样式,往常的写法都是:

    .cs_li { display: none; } .cs_li.active { display: block; }
    Nach dem Login kopieren

    而我们可以使用:not()伪类,可以更好的实现:

    .cs_li:not(.active) { display: none; }
    Nach dem Login kopieren

    在列表中的设置

  • 的边框时也可使用其:not()

    .cs_li:not(:nth-of-type(5n)){ margin-right: 10px; // 除5的倍数项都设置右边的外边距 }
    Nach dem Login kopieren

    :is()的作用是简化选择器

    平时我们开发中经常会用到类似下面的语法:

    .cs_li_a > img, .cs_li_b > img, .cs_li_c > img { display: none; }
    Nach dem Login kopieren

    使用:is()简化可写成:

    :is(.cs_li_a, .cs_li_b, .cs_li_c) > img { display: none; }
    Nach dem Login kopieren

    还有一种嵌套之间的关系,相互嵌套,交叉组合得出结论;如下方所示

    ol ol li, ol ul li, ul ul li, ul ol li { margin-left: 20px; }
    Nach dem Login kopieren

    使用:is()伪类强化,则只需要几行代码:

    :is(ol, ul) :is(ol, ul) li{ margin-left: 20px; }
    Nach dem Login kopieren

    :where()

    :where()与上方的:is()相同,唯一不同的是级别永远为0,也不受括号里面的表达式影响;

    使用的方法与:is()完全相同,但优先级永远是0;底下的括号中的优先级完全被忽略,俩句是同一个优先级,并且级别等同于.conten选择器

    :where(.article, section) .conten {} :where(#article, #section) .conten {
    Nach dem Login kopieren

    (学习视频分享:web前端入门

  • Das obige ist der detaillierte Inhalt vonCSS-Pseudo-Selektor-Lernen, Pseudoklassen-Selektor-Analyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!