CSS选择器的详细说明(有误之处请指教)

CSS的选择器可分为以下几种,个人经历,其中1~6,8用的最多,7,9用得少:

  1. 1.元素选择器 2.类选择器(class) 3.id选择器 4.属性选择器 5.后代选择器和子元素选择器 6.相邻兄弟选择器 7.伪类 8.伪元素
    一、元素选择器 元素选择器最为常见的,其名称就是html元素,甚至是html自己,如下:
    <style type="text/css">
    //img标签,图像标签
    			img{
    				padding-top:2.5px ;//定义内边距
    				padding-left:15px ;//定义左边距
    				cursor: pointer;//定义鼠标悬浮时样式
    			}
    			h1{
    				font-size: 26px;//定义字体大小
    				text-align: center;//定义文本居中
    			}	
    			a{
    				color: red;
    				text-decoration: none;//定义超链接消除下划线,默认值是有的
    			}
    </style>
    <body>
    //此时,以下标签则会呈现相应的样式
     <img src="">.........<img>
     <h1>.........................................</h1>
     <a>.........................</a>
    </body>
    

    二、类选择器
          类选择器也很常见,一般你自己命名一个名字(随你喜欢,翠花,狗蛋,狗剩都可以,讲真,不开玩笑)作为你的样式的名称,然后,在body中,你想在哪个标签中用这个样式,就在那个标签中用 class=“你样式的名字”来表示。如下:

    点击这里可查看具体长什么样

    //代码:
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>实验一</title>
    		<style type="text/css">
    			.狗剩{
    				width: 580px;
    				height: 688px;
    				margin:0 auto;
    			}
    			.border{
    				border: gray 5px  double;
    			}
    			img{
    				padding-top:2.5px ;
    				padding-left:15px ;
    				cursor: pointer;
    			}
    			h1{
    				font-size: 26px;
    				text-align: center;
    			}
    			.font1{
    				font-size: 12px;
    				color: gray;
    				text-align: center;
    			}
    			.solid{
    				border-bottom:1px solid gray;//这里是设置一个双实线的外框
    			}
    			a{
    				color: red;
    				text-decoration: none;
    			}
    			.font2{
    				font-size: 16px;
    				color: black;
    				text-indent: 2em;
    				text-align:left;
    				padding-left:3px ;
    			}
    		</style>
    	</head>
    	<body>
    		 <div class="狗剩 border">
    		 	
    		 	<h1>传谷歌秘密开发Fuchsia项目 欲5年内取代Android</h1>
    		 	<p class="font1">2018-07-20 07:00 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    		 		&nbsp;&nbsp;&nbsp;腾讯科技 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    		 		<a href="http://www.zhku.edu.cn/">我要评论(0)</a></p>
    		 	<p class="solid"></p>
    		 	<img src="img/exp1.jpg"  title="点我也没用"/>
    		 	<p class="font2">腾讯科技讯 据外媒报道,知情人士周四透露,在过去两年多的时间中,谷歌内部一群工程师一直
    		 	在开发一款软件移动操作系统,希望用它最终来替代目前占全球移动操作系统市场主导地位的Android。
    		 	</p>
    		 	<p class="font2">不过随着这个团队的不断成长,它将不得不克服一些关于软件如何工作的激烈内部争论。</p>
    		 	
    		 	<p class="font2">这个名为Fuchsia的项目为了克服Android的局限性从零开始创建,原因是越来越多的个人设备和其他设备开始接入互联网。
    		 		它的设计是为了更好地适应语音互动和频繁的安全更新,无论是笔记本电脑还是微小的互联网连接传感器,所有的设备都
    		 		将使用同一的操作系统。</p>
    		 </div>
    	</body>
    </html>
    

    另外,类选择器也可以结合元素标签一起使用:

    //例如,您可能希望只有段落显示为红色文本
    <html>
    <head>
    <style type="text/css">
    p.important {color:red;}
    </style>
    </head>
    <body>
    
    <h1 class="important">I never give up.</h1>//不显示红色
    
    <p class="important">I never give up.</p>//显示红色
    
    </body>
    </html>
    
    三、id选择器       id选择器和类选择器类似,不过,类选择器是这种形式 .XXX而id选择器是这种形式 #XXX,关于它们俩的区别在这里也做一下说明吧:       我们都知道XHTML/HTML是一种文本语言,我们对一个文本里的内容可以一目了然的,但服务器不会,它是死的,因此,我们需要用一个方法来描述它。一般情况下,html标签像ul p这些基本的HTML标签就可以做到了,但是,其他的元素类型或者说布局选择,这些该怎么表示呢,此时id和class就派上用场了。它们就像元素的身份特征,描述了这个元素该长什么样。其中,id就像身份证,class就像衣服,只要你愿意,随时可以借其他人穿,也就是说class样式可以用在不同的元素标签中,在w3school[可以点击查看](http://www.w3school.com.cn/css/css_selector_id.asp)一文中这样描述:        *区别 1:只能在文档中使用一次与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。        我的理解: 对于区别一,(经本人实践,在我的谷歌浏览器完全可以显示,可能有些浏览器不可以,但我觉得这句话不是强调这个意思,它应该说的是一种规范,我们平时书写时就应该注意id应该唯一,为什么呢?试想一下,在一个大项目中,css样式绝对是庞大的,此时,但你用js来操控特定的html文本标签时,你打算选用id还是class?说到这里大家应该心里多少有点“bilibili高数”了吧,这也就是id不重复的原因,否则js则操控的不只是特定标签了。)        *区别 二:不能使用 ID 词列表不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。        我的理解:对于区别2,我们都知道类选择器可以写成一下这个样子,而id不予许,它是独一无二的。 ```

    never give up

    //注意两个都要写上,不然没效果(感觉其实有点鸡肋) ```
          *区别 3:ID 能包含更多含义类似于类选择器,可以独立于元素来选择 ID。有些情况下,您知道文档中会出现某个特定 ID 值,但是并不知道它会出现在哪个元素上,所以您想声明独立的 ID 选择器。例如,您可能知道在一个给定的文档中会有一个 ID 值为 mostImportant 的元素。您不知道这个最重要的东西是一个段落、一个短语、一个列表项还是一个小节标题。您只知道每个文档都会有这么一个最重要的内容,它可能 在任何元素中,而且只能出现一个。在这种情况下,可以编写如下规则: ``` #mostImportant {color:red; background:yellow;} //这个规则会与以下各个元素匹配(这些元素不能在同一个文档中同时出现,因为它们都有相同的 ID 值):

    This is important!

    This is important!
    • This is important!
    ```        我的理解:对于区别三,额呃呃呃,可能语文不好,我觉得它的描述有点没意义,直到我偶然看到一篇国外的文章时[点击这里](https://css-tricks.com/the-difference-between-id-and-class/) 才觉得“ ID 能包含更多含 义”应该是体现在这个方面:       当我们想实现这样的一个功能,用户打开一个页面时,自动定位到我们想让用户最先看到的地方时,我们可以这样做设置网址为http://XXXXXXXXXXXX#id名,此时打开后,会定位到id标签处。经过本人实现,确实如此,不过你实验时,为了确切体验到,你需要足够多的内容来填充浏览器,这样得到的效果更明显。在很多项目中为了规范其实id 和 class都会该出,像这样: `

    //class是规定样式,id便于js操控。` 四、属性选择器       属性选择器的设置同样是为了我们方便修改某个标签的样式,这个很好用,特别在一个大项目中,为一个标签添加样式时,它的写法如下: ``` //形如:E[attribute] 选择器,表示选择拥有属性 attribute 的E元素,不考虑属性的值 a[rel] { color: red; }

    //还可以根据多个属性进行选择,只需将属性选择器链接在一起即可。例如,为了将同时有
    // href 和 title 属性的 HTML 超链接的文本设置为红色,可以这样写:
    a[href][title] {
    color:red;
    }

    <font size=5 color=red>关于它其他格式的详细说明:[可以参考这位博主](https://blog.csdn.net/ixygj197875/article/details/79037984),他写得很详细,每个样式都有例子,通俗易懂。</font>
    </font>
    <font size=5 color=red>五、后代选择器和子元素选择器</font>
    <font size=5 color=black>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于后代选择器,如果您希望只对 A 元素中的 B元素应用样式,可以这样写A  B{............},这样其他标签,即使有B也不会呈现相应的颜色,如:
    

    h1 strong {color:red;}

    I nevergive up

    //这里strong虽是em的儿子,h1的孙子也会显示红色, //注意这里区分下面的子元素选择器 ```       对于子元素选择器,写法是这样的:A>B,如: ``` h1>strong {color:red;}//选择h1的亲儿子红色,例如:

    Inever give up.

    //这里 never give 会显示红色

    I nevergive up

    //这里没显示红色,因为strong是em的儿子,h1的孙子 ``` 另外,子元素选择器也可以结合后代选择器,例如: ``` table.company td > p

    //它表示,选择这样的P标签,它是td的亲儿子,且属于这样的一个表格,表格带有company属性
    //例如:
    !DOCTYPE html>

    //它会显示相应样式

    这是真的

    	<table>
    		<td><p>这是真的</p></td>//它不会
    	</table>
    </body>
    
    ``` 六、相邻兄弟选择器        如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器。这里注意两点:1.两个元素相邻 2.拥有着共同的父亲。3.它影响的是后面的元素 即 A+B只影响B ```

    This is a heading.

    //它没变

    This is paragraph.

    //只有它变红

    This is paragraph.

    This is paragraph.

    This is paragraph.

    //再比如:

    • List item 1
    • //他不会变红
    • List item 2
    • //他变红了,因为它是一的兄弟
    • List item 3
    • //他也变红,它是二的兄弟
    <font size=5 color=black>另外,除了“+”,还有“~”,它的作用是查找某一个指定元素的后面的所有兄弟结点
    例如:
    

    1

    //不变红

    2

    //不变红

    3

    //变红

    4

    //变红

    5

    //变红 ``` 七、伪类        w3school给出的解释是CSS 伪类用于向某些选择器添加特殊的效果。最常见的伪类可以说是超链接了: ``` //注意这几个是有顺序的,任意颠倒将不会呈现相应的样式 a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ a:hover {color: #FF00FF} /* 鼠标移动到链接上 */ a:active {color: #0000FF} /* 选定的链接 */ ```       除此之外,伪类还有:(1)first-child (2)lang(这个基本没用过)
    //first-child作用:选择某元素的第一个儿子是A。这个特定伪类很容易遭到误解,请看下面:
    //例如:A:first-child,起作用的是A,不是A的第一个儿子
    <html>
    <head>
    <style type="text/css">
    p:first-child {color:red;}
    li:first-child {color:red;}
    </style>
    </head>
    
    <body>
    <div>
    <p>These are the necessary steps:</p>//显示红色,p是div的第一个儿子
    <ul>
    <li>Intert Key</li>//显示红色,这个li为ul的第一个儿子
    <li>Turn key <strong>clockwise</strong></li>
    <li>Push accelerator</li>
    </ul>
    <p>Do <em>notpush the brake at the same time as the accelerator.</em> </p>//不显示红色,因为不是选择
                                                                              //P的第一个儿子。
    </div>
    </body>
    
    </html>
    
    //对于lang,这样定义:lang 伪类使你有能力为不同的语言定义特殊的规则。在下面的例子中,lang 类为属性值为
     //no 的 q 元素定义引号的类型:
     <html>
    <head>
    <style type="text/css">
    q:lang(no)
       {
       quotes: "~" "~"
       }
    </style>
    
    </head>
    <body>
    <p>文字<q lang="no">段落中的引用的文字</q>文字</p>
    </body></html>
    

    运行效果:

    文字段落中的引用的文字文字

    八、伪元素
          关于伪元素,因为经验不足,也是查了很多文章才慢慢理清,首先说一下为什么叫伪元素?为什么叫伪类?(1)伪元素可以通过添加相应的元素实现相应的功能个 (2)伪类可以通过添加相应的类实现相应的功能
          伪元素有这几种:
          :first-letter 向文本的第一个字母添加特殊样式。
          :first-line 向文本的首行添加特殊样式。
          :before 在元素之前添加内容。
          :after 在元素之后添加内容。

    h1:before
      {
      content:url(logo.gif); //在每个h1之前加入图片
      }
     h1:after
      {
      content:url(logo.gif);//在每个h2之后加入图片
      }
    

    关于它们详细说明查看这里这位大神在里面阐述了具体的由来,例子也很详细。





    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    legendaryhaha

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值