목차
2.1.    标签选择器
2.1.1 通用选择 *
2.1.2 单标签
2.1.3 多标签
2.2.    属性选择器
2.2.1 特殊1:id选择器
2.2.2 特殊2:class选择器
2.2.3 属性选择器
3.1.    伪类
3.1.1 UI伪类
3.1.2 结构化伪类(IE低版本不行)
3.2.    伪元素
웹 프론트엔드 HTML 튜토리얼 css知多少(5)--选择器_html/css_WEB-ITnose

css知多少(5)--选择器_html/css_WEB-ITnose

Jun 24, 2016 am 11:49 AM

1. 引言

  从本节开始,就进入本系列的第二个部分??css和html的结合??说白了就是选择器。

  CSS中定义了样式,如何将这些样式设置到相应的html节点上?就不得不通过选择器。让浏览器知道css选择了哪一个dom节点,浏览器就会乖乖的把相应的样式渲染成视图。

  至于css能把页面渲染成什么样子,这是本系列的第三部分。

  第一部分讲css样式的加载和层叠,第二部分讲选择器以及选择器的等级,第三部分讲呈现的各种样式(背景、字体、定位、浮动等)。这样一个思路,也正式浏览器使用css的流程,是最有效的学习思路。(第二节中讲过,此处再回顾一遍)

2. 选择器

说道css选择器,大家都知道有许多种,但是真要你去掰着手指头数一数的话,你可能需要数几分钟。其实这么多选择器,完全可以分为两类:

  1. 标签选择器(*是特殊情况),可但标签,也可上下文多标签;
  2. 属性选择器(id和class都是属性,特殊的属性);

2.1.    标签选择器

2.1.1 通用选择 *

  通用选择器 * 大家应该都比较熟悉了,最常用的就是 *{margin:0; box-sizing:border-box;}。mragin:0咱们在上一节已经说过,box-sizing:border-box将在后面的盒子模型那块再详细描述。

  例如,我们在检测bootstrap3的样式时,也可以看到它用到了 * 选择器:

  

2.1.2 单标签

  单标签选择器是最基础的css知识了,在上一节的浏览器默认样式中,到处都用了单标签选择。这里不再赘述,css基础薄弱的朋友,可以先去补补课。

2.1.3 多标签

  多标签选择器一般和html上下文有关,它有以下集中分类

  1. 选择一个祖先的所有子孙节点,例如 div p{…}
  2. 选择一个父元素的所有直属节点,例如 div > p{…}
  3. 选择某一个元素紧挨着的兄弟节点,例如 li + li{…}
  4. 选择某一个元素的所有同胞节点,例如 span ~ a{…}
  5. 以上各种情况的组合应用(不要组合过于复杂,编码讲求可读性第一)

 

  给大家列举一个比较典型的应用,如下图

  

  上图中的效果应该比较常见,在各个菜单之间加下划线。我之前的实现是:每个li都加一个border-bottom,在把最后一个li的border-bottom去掉。

  其实完全没必要这样麻烦,下面一个样式设置即可解决:

  

  有点意思吧?

2.2.    属性选择器

2.2.1 特殊1:id选择器

  基础知识,不再赘述。

  按照许多css教程上讲的,id选择器和属性选择器是不同的两个类别,为什么要把id选择器放在属性选择器下面的呢?因为css选择器是根据html节点的特性来设置的,id也是一个属性,只是它是一个比较特殊的属性,每个html节点的id不能重复。

  由于特殊,而且比较常用,所以就单独给id选择器一个“#”,本质上就是一个属性选择器。下面两行代码的执行效果完全相同:

  

2.2.2 特殊2:class选择器

  基础知识,不再赘述。

  class也是一个特殊的属性,之所以把它放在属性选择器下,和上文将的id一样。

2.2.3 属性选择器

  属性选择器有两种情况:

  1. 只通过属性名选择:img[title]{…      }
  2. 通过属性名和属性值选择:input[type=’text’]{…}

  这两个也是比较基础的,再次也就不再详细展开了,不了解的朋友可以去看看基础教程补补课。

3. 伪类和伪元素

  上文提到了若干种选择器类型,伪类和伪元素可针对任何一种选择器使用。

3.1.    伪类

  伪类分为UI伪类和结构化伪类。

3.1.1 UI伪类

  UI伪类都比较简单常用,我下面简单写几句代码,就不再详细说了。

  

3.1.2 结构化伪类(IE低版本不行)

  先问大家一个问题:如何实现一个表格间隔显示背景颜色,如图:

  

  最简单的方式莫过于使用结构化伪类,一句样式设置即可实现。

  

 

  结构化伪类有如下书写选项,至于什么意思,从字面意思即可理解:

  

3.2.    伪元素

  记住,伪元素是一个非常重要的概念!其中,:before和:after 非常常用。

  首先,咱们先看看:before和:after是怎么回事儿。

  

  上图中,我们可以看到,可以为元素前后添加内容。这里的“内容”还可以写成unicode编码的方式,如下图:

      

  另外,除了可以添加内容外,你还可以自定义执行内容的样式,如下图:

  

  

  以上大体了解了两者的基本用法,下面给家介绍两个典型的应用场景:

  第一,大家都知道fontAwesome吧,web最流行的icon字体库。这些小图标的应用就是通过伪元素来实现的,如下图:

  

  (不知道fontAwesome也没关系,我们在讲到css字体时,会详细介绍)

  第二,清除浮动的样式大家都知道吧?这就是一个很典型的伪元素应用场景:

  

  (在讲到css浮动时,会专门讲解clearfix)

4. 选择器的扩展

  选择器本来是css的一种规则,用于为css选择html节点的。但是聪明的人类还是通过选择器创造出了其他领域非常伟大的作品。

  • jQuery
  •        jQuery被推广流行的根本原因就是它的“Query”??基于css选择器的“Query”。现在的浏览器都支持querySelectAll()方法了,其实这就是W3C“抄袭”的jQuery的设计。

           相信各位web前端人员对jquery都比较熟悉了,这里点一下即可。

  • zen-Coding
  •   jquery可以通过一段css选择器表达式从既有的html结构中选择符合表达式的dom组,但是zen-coding反其道而行之??可以根据css选择器表达式创造出html节点。不得不佩服这帮人的创造力。

      

      如果你还没用过zen-coding,无论你以后用不用,建议你也一定要去体验一下!

    5. 总结

      本节总结了css的选择器知识,知道了选择器有若干种类型。但是类型多了不一定是个好事儿,下一节就给大家说说类型太多带来的一个问题,以及解决方案。

    -------------------------------------------------------------------------------------------------------------

    欢迎关注我的教程:《从设计到模式》深入理解javascript原型和闭包系列》《微软petshop4.0源码解读视频》《json2.js源码解读视频》

    也欢迎关注我的开源项目??wangEditor,简洁易用的web富文本编辑器

    -------------------------------------------------------------------------------------------------------------

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

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

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

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

    HTML은 초보자를 위해 쉽게 배우나요? HTML은 초보자를 위해 쉽게 배우나요? Apr 07, 2025 am 12:11 AM

    HTML은 간단하고 배우기 쉽고 결과를 빠르게 볼 수 있기 때문에 초보자에게 적합합니다. 1) HTML의 학습 곡선은 매끄럽고 시작하기 쉽습니다. 2) 기본 태그를 마스터하여 웹 페이지를 만들기 시작하십시오. 3) 유연성이 높고 CSS 및 JavaScript와 함께 사용할 수 있습니다. 4) 풍부한 학습 리소스와 현대 도구는 학습 과정을 지원합니다.

    HTML, CSS 및 JavaScript의 역할 : 핵심 책임 HTML, CSS 및 JavaScript의 역할 : 핵심 책임 Apr 08, 2025 pm 07:05 PM

    HTML은 웹 구조를 정의하고 CSS는 스타일과 레이아웃을 담당하며 JavaScript는 동적 상호 작용을 제공합니다. 세 사람은 웹 개발에서 의무를 수행하고 화려한 웹 사이트를 공동으로 구축합니다.

    HTML, CSS 및 JavaScript 이해 : 초보자 안내서 HTML, CSS 및 JavaScript 이해 : 초보자 안내서 Apr 12, 2025 am 12:02 AM

    WebDevelopmentReliesonHtml, CSS 및 JavaScript : 1) HtmlStructuresContent, 2) CSSSTYLESIT, 및 3) JAVASCRIPTADDSINGINTERACTIVITY, BASISOFMODERNWEBEXPERIENCES를 형성합니다.

    HTML의 시작 태그의 예는 무엇입니까? HTML의 시작 태그의 예는 무엇입니까? Apr 06, 2025 am 12:04 AM

    anexampleStartingtaginhtmlis, whithbeginsaparagraph.startingtagsareessentialinhtmlastheyinitiate rements, definetheirtypes, andarecrucialforstructurituringwebpages 및 smanstlingthedom.

    Gitee Pages 정적 웹 사이트 배포 실패 : 단일 파일 문제를 해결하고 해결하는 방법 404 오류? Gitee Pages 정적 웹 사이트 배포 실패 : 단일 파일 문제를 해결하고 해결하는 방법 404 오류? Apr 04, 2025 pm 11:54 PM

    GiteEpages 정적 웹 사이트 배포 실패 : 404 오류 문제 해결 및 해결시 Gitee ...

    웹 주석에서 y 축 위치의 적응 형 레이아웃을 구현하는 방법은 무엇입니까? 웹 주석에서 y 축 위치의 적응 형 레이아웃을 구현하는 방법은 무엇입니까? Apr 04, 2025 pm 11:30 PM

    웹 주석 기능에 대한 Y 축 위치 적응 알고리즘이 기사는 Word 문서와 유사한 주석 기능을 구현하는 방법, 특히 주석 간격을 다루는 방법을 모색합니다 ...

    HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구 HTML, CSS 및 JavaScript : 웹 개발자를위한 필수 도구 Apr 09, 2025 am 12:12 AM

    HTML, CSS 및 JavaScript는 웹 개발의 세 가지 기둥입니다. 1. HTML은 웹 페이지 구조를 정의하고 등과 같은 태그를 사용합니다. 2. CSS는 색상, 글꼴 크기 등과 같은 선택기 및 속성을 사용하여 웹 페이지 스타일을 제어합니다.

    CSS3 및 JavaScript를 사용하여 클릭 후 주변 사진을 흩어지고 확대하는 효과를 얻는 방법은 무엇입니까? CSS3 및 JavaScript를 사용하여 클릭 후 주변 사진을 흩어지고 확대하는 효과를 얻는 방법은 무엇입니까? Apr 05, 2025 am 06:15 AM

    이미지를 클릭 한 후 주변 이미지를 산란 및 확대하는 효과를 얻으려면 많은 웹 디자인이 대화식 효과를 달성해야합니다. 특정 이미지를 클릭하여 주변을 만들 수 있습니다 ...

    See all articles