CSS选择器

在我们的网页中,html是超文本标记语言,负责网页结构的展示,每个标签都有自己的语义,告诉浏览器该处被标记的文本是什么意思,比如h1,h2,h3为标题,ul为列表,可以用作导航栏。即使没有添加样式,从结构中也可以看出它的作用,而CSS可以改变网页结构的样式,做出精美的效果,在W3C标准中属于表现层。CSS 指层叠样式表 (Cascading Style Sheets),主要通过CSS选择器去选择指定的结构,添加不同的属性来改变结构的表现。它的主要写法如下,selector是选择器,property为属性,value为属性值。

selector {property: value}

CSS选择器对于学习CSS来说至关重要,它决定了我们能否找到想要改变样式的结构,因为我们想要改变结构的样式,首先要选到它,再为其添加样式。这就好比我们去菜场买菜,首先要知道去菜场的路怎么走,会有好多种走法,反正最终可以走到菜场,而CSS选择器也有好多种选择器,最终都可以完成效果,但是使用合适的选择器会加快我们网页设计效率。等走到菜场之后,至于买什么菜,看自己的需要,萝卜青菜的都可以买,同理我们使用选择器选到正确的结构之后,至于添加什么样式,看你的设计要求,只需要在括号中写清楚属性和值就可以。了解了这一概念之后再来看一下CSS选择器如何使用。
CSS选择器分为基本选择器和高级选择器,基本选择器包括标签选择器、类选择器、ID选择器,他们的优先级为ID选择器>类选择器>标签选择器

,高级选择器包括层次选择器、结构伪类选择器、属性选择器。
CSS选择器

一、 标签选择器
标签选择器又叫元素选择器,是最常见的选择器,通过标签名称获得,可以选到多个元素。
    <style>
        h1 {color: red;}
        p,span{color: blue;}
    </style>
    <body>
        <div id="show">
            <h1>这是标题</h1>
            <p>这是段落1</p>
            <p id="nav">
                <ul class="first">
                    <li>菜单1</li>
                    <li>菜单2</li>
                    <li>菜单3</li>
                </ul>
            </p>
            <span>这是段落2</span>
        </div>
    </body>
效果图

二、类选择器
通过“.类名”获取,一个元素也可以设置多个类名用空格分隔开来,多个元素可以设置相同的类名。当结合标签选择器一起使用时,表示class属性值为该类的标签。

    <style>
        .first{color: red;}
        span.first{color: green;}
        .sec{background-color: orange;}
    </style>

    <body>
        <div id="show">
            <h1>这是标题</h1>
            <p>这是段落1</p>
            <p id="nav">
                <ul class="first">
                    <li>菜单1</li>
                    <li>菜单2</li>
                    <li>菜单3</li>
                </ul>
            </p>
            <span class="first">这是段落2</span>
            <span class="first sec">这是段落3</span>
        </div>
    </body>
效果图

三、 ID选择器
通过“#ID”获得,在整个文档中,即每个元素只有唯一的ID,不可以重复,它与类选择器不同,同一个元素不允许设置多个ID值,一般用在特定的地方,比如导航栏等。

    <style>
        #show{color: blue;}
        #nav{color: red;}
    </style>

    <body>
        <div id="show">
            <h1>这是标题</h1>
            <p>这是段落1</p>
            <div id="nav" >
                <ul class="first">
                    <li>菜单1</li>
                    <li>菜单2</li>
                    <li>菜单3</li>
                </ul>
            </div>
            <span class="first">这是段落2</span>
            <span class="first sec">这是段落3</span>
        </div>
    </body>
效果图

四、层次选择器
根据元素所处上下文的位置来获取的,包括后代选择器,子选择器,相邻兄弟选择器,通用兄弟选择器四种,上述四种选择器都可以结合使用,他们结构如下:


层次选择器
    <style>
        div strong{color: blue;}
        div > em{background-color: #0000FF;}
        span+span{color: orange;}
        h1~p{color: deeppink}
        div.company ul > p{color: orange;}
        #show>.company strong~li{background-color: yellow;}
    </style>

    <body>
        <div id="show">
            <h1>这是标题</h1>
            <p>这是段落1</p>
            <ul>
                <p>这里1</p>
            </ul>
            <div class="company" >
                <ul class="first">
                    <li>菜单1</li>
                    <p>这里2</p>
                    <strong>这里3</strong>
                    <li>菜单2</li>
                    <li>菜单3</li>
                </ul>
                <em>这里4</em>
            </div>
            <span class="first">这是段落2</span>
            <span class="first sec">这是段落3</span>
        </div>
    </body>
效果图

五、结构伪类选择器
伪类的结构如下,根据元素在某父级下的位置来获取。

selector : pseudo-class {property: value}
结构伪类

注意:E:first-child不是代表父级E下的第一个元素,而是某父级下的第一个子元素E,不管父元素是什么。
first-child与first-of-type的区别:first-child不论元素类型,直接从第一个寻找,first-of-type先看元素类型,再从相同类型中寻找。nth-child(n)和nth-of-type(n)一样的道理,n可以为1,2,3...代表第几个,nth-child(1)和first-child作用一样。

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            p:nth-child(2){
                background-color: orange;
            }
            div p:nth-of-type(1){
                border: 1px solid red;
            }
            div.nav p:nth-of-type(1){
                color: red;
            }
        </style>
    </head>
    <body>
        <div class="nav">
            <span>1</span>
            <p>2</p>
            <p>3</p>
        </div>
        <div>
            <p>4</p>
        </div>
    </body>
效果图

与CSS结构伪类相似的还有<a>标签的锚链接,包括已访问,未访问,鼠标悬停和鼠标选中4种状态,在CSS中可以分别为其设置样式。在使用时顺序不要错,不然会有部分伪类无法实现。hover放在link和visited之后,active放在hover之后,在设置visited属性时,会有部分属性不起作用,尽量只增加字体大小和颜色属性,还有一种情况就是超链接无效导致浏览器无历史记录,可以检查一下自己的浏览器是否有记录。

<style>
            a:link{ //链接样式
                color: red;
            }
            a:visited{//已访问过的链接
                color: green;
                font-size: 30px;
            }
            a:hover{//鼠标悬停
                color: orange;
            }
            a:active{//鼠标选中
                color: blue;
            }       
        </style>

六、 属性选择器
一个标签元素拥有许多属性,属性选择器为拥有指定属性的标签添加样式,不限于class和id,比如a标签拥有href属性等标签。它的结构如下


属性选择器
<head>
        <meta charset="UTF-8">
        <title></title>
            <style>
                a[target]{
                    color: red;
                }
                a[target="_blank"]{
                    text-decoration: none;
                }
                a[href^=http]{
                    font-weight: bold;
                }
                a[href$=com]{
                    background-color: blue ;
                }
                a[href*=www]{
                    border: 5px solid palegreen;
                    
                }
            </style>
    </head>
    <body>
        <p></p>
        <a href="http://www.baidu.com" target="_blank">这是一个超链接1</a>
        <a href="#" target="_self">这是一个超链接2</a>
    </body>
效果图

以上就是CSS的常见选择器。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352