CSS之旅——第三站 强大的伪选择器

  说到伪选择器,真的让我体会到了CSS的无比强大,强大到自己貌似都不认识CSS了,有点C# 6.0中一些语法糖带给我们的震撼。。。首先

我们可以在VS里面提前预览一下。

可以看到,上面的伪类有很多很多,多的让我眼都快瞎了。。。下面就挑一些实用性比较强的说一说。

一  :nth-child 伪选择器

我们知道在jquery中有一种选择器叫做“子类选择器”,对应的有:nth-child,:first-child,:last-child,:only-child,这回在CSS中同样

可以办到,可以说一定程度上缓解了jquery的压力,下面简单举个例子。

 1 <html xmlns="http://www.w3.org/1999/xhtml">
 2 <head>
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 4     <title></title>
 5
 6     <style type="text/css">
 7         ul li:nth-child(1) {
 8             color: red;
 9         }
10     </style>
11 </head>
12 <body>
13     <ul>
14         <li>1</li>
15         <li>2</li>
16         <li>3</li>
17         <li>4</li>
18         <li>5</li>
19         <li>6</li>
20     </ul>
21 </body>

可以看到,当我灌的是:nth-child(1)的时候,ul的第一个li的color已经变成red了,如果复杂一点的话,可以将1改成n,浏览器在解析css的伪类

选择器的时候,内部应该会调用相应的方法来解析到对应dom的节点,首先要明白n是从0,步长为1的递增,这个和jquery的nth-child类似,没

什么好说的,然后我们尝试下:first-child 和 last-child。

 1 <html xmlns="http://www.w3.org/1999/xhtml">
 2 <head>
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 4     <title></title>
 5
 6     <style type="text/css">
 7         ul li:first-child {
 8             color: red;
 9             font-weight:800;
10         }
11
12         ul li:last-child {
13             color: blue;
14             font-weight: 800;
15         }
16     </style>
17 </head>
18 <body>
19     <ul>
20         <li>1</li>
21         <li>2</li>
22         <li>3</li>
23         <li>4</li>
24         <li>5</li>
25         <li>6</li>
26     </ul>
27 </body>
28 </html>

二 :checked,:unchecked,:disabled,:enabled

 同样在jquery中,有一组选择器叫做“表单对象属性“,我们可以看看jquery的在线文档。

同样我们很开心的发现,在css中也存在这些属性。。。是不是开始有点醉了。。。还是先睹为快。

1. disabled,enabled

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title></title>
 6
 7     <style type="text/css">
 8         input[type=‘text‘]:enabled {
 9             border: 1px solid red;
10         }
11
12             input[type=‘text‘]:disabled {
13                 border: 1px solid blue;
14             }
15     </style>
16
17 </head>
18 <body>
19     <form>
20         <input type="text" disabled="disabled" />
21         <input type="text"/>
22     </form>
23 </body>
24 </html>

2.  checked,unchecked

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title></title>
 6
 7     <style type="text/css">
 8         form input[type="radio"]:first-child:checked {
 9             margin-left: 205px;
10         }
11     </style>
12
13 </head>
14 <body>
15     <form>
16         <input class="test" type="radio" value="女" /><span>女</span><br/>
17         <input class="test" type="radio" value="男" /><span>男</span>
18
19     </form>
20 </body>
21 </html>

3. selected

这个在css中虽然没有原装的,但是可以用option:checked来替代,比如下面这样。

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title></title>
 6
 7     <style type="text/css">
 8         option:checked {
 9             color: red;
10         }
11     </style>
12
13 </head>
14 <body>
15     <form>
16         <select>
17             <option>1</option>
18             <option>2</option>
19             <option>3</option>
20         </select>
21     </form>
22 </body>
23 </html>

三  empty伪选择器

这个选择器有点意思,在jquery中叫做”内容选择器“,就是用来寻找空元素的,如果玩转jquery的empty,这个也没有什么问题,

下面举个例子,让第一个空p的背景变色。

 1 <!DOCTYPE html>
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <title></title>
 6
 7     <style type="text/css">
 8
 9         p:first-child{
10             width:500px;
11             height:20px;
12         }
13
14         p:empty {
15             background:red;
16         }
17     </style>
18
19 </head>
20 <body>
21     <p></p>
22     <p>他好</p>
23 </body>
24 </html>

四:not(xxx) 伪选择器

同样这个也是非常经典的not选择器,在jquery中叫做”基本选择器“,想起来了没有???

总的来说,当你看完上面这些,是不是觉得css3中已经融入了一些”脚本处理行为”,这种感觉就是那个css再也不是你曾今认识的那个css了。

时间: 2024-10-10 13:06:23

CSS之旅——第三站 强大的伪选择器的相关文章

asp.net mvc 之旅—— 第三站 路由模板中强大的自定义IRouteConstraint约束

我们在写mvc的时候,经常会配置各种url模板,比如controller,action,id 组合模式,其实呢,我们还可以对这三个参数进行单独的配置,采用的方式自然 就是MapRoute中的constraints属性. 一:简单的正则匹配 正则匹配算是最最简单的一个方法,比如针对上面路由中id的值,我可以用正则进行限定,也就是说id只能是整数,这个可以做到吗???对这么扩展性极强的mvc, 当然可以做到,比如我下面写的这样: routes.MapRoute( name: "Default&quo

Sql Server之旅——第三站 解惑那些背了多年聚集索引的人

说到聚集索引,我想每个码农都明白,但是也有很多像我这样的猥程序员,只能用死记硬背来解决这个问题,什么表中只能建一个聚集索引, 然后又扯到了目录查找来帮助读者记忆....问题就在这里,我们不是学文科,,,不需要去死记硬背,,,我们需要的就是能看到在眼里面的 真实东西.....我们都喜欢聚集索引,因为它能够把无序的堆表记录变成有序,还玩起了B树...这样就把复杂度从N降低到了LogMN... 这样的话逻辑读,物理读就下来了. 一:现象 1:无索引的情况 还是老规矩,看个例子感受下,首先我有一个Pro

Javascript之旅——第三站:几个需要注意的运算符

平时写惯了C#,所以会觉得什么样的运算符就应该做什么样的运算,但是有一天你的习惯被其他语言颠覆了,不知道是不是有一股强大的好奇 心,刚好在js中,我的这种习惯就被颠覆了,下面就看看哪些运算符颠覆了我的三观. 一:==运算符 ==运算符之所以可以颠覆,可以从下面几个例子中看出来. <1> "10"==10 ? 如果这要是放在C#里面,编译器会毫不客气的告诉你,王八羔子,类型都不同,你比个毛线啊...但是在JS里面又会是怎样呢? 从上图中,你可以看到,不管你好奇不好奇,答案就在

Web之旅第三站——ASP.NET

一.看宏观导图: 二.细节拓展: 静态网页:早期的网页都是使用静态网页的.所谓的静态网页就是在网页中不包含有需要在服务器端执行的代码.比如一个含有 JavaScript 特效的 HTML 网页或一个含有 flash 的 HTML 网页,它们虽然在网页呈现的效果会"动",甚至还有运行代码,但是都是在客户端执行的代码,因而算不上动态页面. 好处:是服务器只需要简单地将网页 HTML 创建并发送给浏览器就行了. 缺点:是维护起来困难,不能使用数据库带来的好处. 动态网页:是网页中包含有需要在

CSS之旅——第二站 如何更深入的理解各种选择器

上篇我们说了为什么要使用css,这篇我们就从选择器说起,大家都知道浏览器会把远端过来的html解析成dom模型,有了dom模型,html就变成 了xml格式,否则的话就是一堆“杂乱无章”的string,这样的话没人知道是什么鸟东西,js也无法什么各种getElementById,所以当浏览器解析成dom 结构后,浏览器才会很方便的根据css各种规则的选择器在dom结构中找到相应的位置,那下一个问题自然就严重了,那就是必须深入的理解dom模型. 一:理解Dom模型 首先我们看下面的代码. 1 <!

webpack入坑之旅(三)webpack.config入门

这是一系列文章,此系列所有的练习都存在了我的github仓库中vue-webpack,在本人有了新的理解与认识之后,会对文章有不定时的更正与更新.下面是目前完成的列表: webpack入坑之旅(一)不是开始的开始 webpack入坑之旅(二)loader入门 webpack入坑之旅(三)webpack.config入门 webpack入坑之旅(四)扬帆起航 webpack入坑之旅(五)加载vue单文件组件 webpack入坑之旅(六)配合vue-router实现SPA 在上面我们已经尝试过了两种

友点企业网站管理系统集电脑网站、手机网站、微信三站合一

友点企业网站管理系统集电脑网站.手机网站.微信三站合一,只要录入一次数据,三站数据自动同步,降低人力维护工作量:只要一个虚拟主机,有效节约空间投资.系统采用PHP进行开发,它具有操作简单.功能强大.稳定性好.易扩展.安全性强.后期维护方便等特点,可以帮您迅速.轻松地构建起一个强大专业的企业网站.系统支持多语言.自定义模型.SEO优化.静态页生成.评论留言.订购.会员.广告.招聘.统计.自助表单等常见企业网站基本功能.运行环境:PHP5.2 + MYSQL5.0以上 + Zend Optimize

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socket; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; publ

穿上华丽的外衣——CSS之旅(码神学习第二十三天)

穿上华丽的外衣--CSS之旅 码神学习第二十三天 学习过程记录: 1.CSS(Cascading Style Sheets,层叠样式表),为了解决内容与表现分离.样式通常存储在样式表中.外部样式表可以提高工作效率. 2.三种不同类型的CSS样式: 答:①内联样式:直接在html标签上定义该标签的CSS样式 ②内部样式:写在html文件中,且包含在<style></style>代码块中 ③外部样式:通过在html中引用外部css文件来控制样式 元素的优先级,就近原则,离元素最近的规则