CSS生僻问题一网打尽

伪类和伪元素

伪类

何为伪类? 像类不是类,不是自己声明的类(不写样式也存在).

对伪元素的认识在早期网页上的超链接.链接(锚啊)用下划线标出来,点击后链接变紫色,鼠标悬上去变色.

链接伪类

css2.1 定义了两个只应用于超链接(拥有 href 属性的所有 a 元素)的伪类.

伪类名 描述
:link :visited
指示作为超链接(href)并指向一个*未访问*地址的所有的锚(注意不是所有的锚,是未访问过的,但是有的浏览器可能不是这么做的) 指示已访问过的所有的锚

动态伪类

伪类名 描述
:focus 当前拥有焦点(可用tab切换)的元素,能接受输入或能被激活的元素
:hover 鼠标正停留在上面的元素(不只限于超链接)
:active 指示被输入或激活的元素(不只限于超链接)

动态伪类可以应用到任何元素,对非链接的样式应用很有用.

选择第一个子元素

还有另外一个静态伪类 :first_chilid 来选择元素的第一个子元素.

<div> 
 <p></p> 
 <ul> 
 <li href=‘abc‘></li> 
 <li></li> 
 </ul> 
</div> 

所以

div:first_child 的第一个子元素是 <p></p>

ul:first_child 的第一个子元素是 <li href=‘abc‘></li>

结合伪类

在 CSS2.1 中,可以在同一个选择器中结合使用伪类.

a:link:hover { }
a:visited:hover { } 
a:hover:visited { } 

顺序是不重要的,效果是一样的.

伪元素

伪元素选择器

就像伪类为锚指定幻像类一样,伪元素能够在文档中输入假想的元素.从而得到某种效果.

CSS2.1 中弄了四个伪元素, 设置首字母样式的(:first-letter),设置第一行的(:first-line),设置之前(:before),设置之后(:after)的.

说到,:after,:before,在content属性"自是必不可少的".

而且,在CSS3中,伪元素由一个 : 升为 ::,意在与伪类进行区分,但是目前还在兼容单冒号,官方推荐用俩冒号.


属性选择器

h1[class] { color:red; } 
a[href][title] { font-weight:bold; } 

根据具体属性值进行选择

a[href="http:a.com"] 
planet[moons="1"] 

这货对这种简单的属性值进行匹配尚可.

诸如对

<p class="urgent warning "> </p> 

使用时要小心,它的属性匹配没有多类选择那样自然, 它实际上就是一个完全串匹配.所以,该有的空格还得有.

如果用的不不方便,可以用下面这个

根据部分属性值进行选择

对上面的例子就可这样用:

p[class~="warning"] 

相信你已经发现了,这货可以替代类选择器啊.

单类选择没必要这么矫情,对于多类选择是很有必要的,

你可知,在IE7之前的版本中,IE是不能正确处理多类选择器的.

<p class="urgent warning "> </p> 
p.warning.help {} 

通常可以认为,这个选择器只将匹配class包含warning和help的那些p元素.

可是在IE7之前的版本中,p.warning是可以用的,但是p.waring.help是会匹配class为help的所有p元素的,因为help在选择器中最后出现的,完全没有warning什么事.

所以,用属性选择器,可以绕开这问题.


选择器的特殊性

选择器的特殊性由选择器本身的组件确定. 特殊性值表述为4个部分,形如 0.0.0.0, 虽不是数,以数看待.

一个选择器的特殊性如下:

  1. 对于选择器中给定的各个 # ID属性值,加分 0,1,0,0;
  2. 对于选择器中给定的属性值(.class),属性选择(xxx [atr=’’])或者伪类,加分 0,0,1,0
  3. 对于选择器中给定的各个元素(htm body div span)和伪元素,加 0,0,0,1. 据文档显示,伪元素加分从CSS2.1开始
  4. 结合符(+,,>,且完全没有特熟悉) 和 通配符(\*,对特殊性的贡献值为0,0,0,0).

说多了浪费,上例子

选择器 特殊性获值
h1 { } 0,0,0,1
p em {} 0,0,0,2
.grap { } 0,0,1,0
*.grap { } 0,0,1,0
p.bright em.dark { } 0,0,2,2
#id { } 0,1,0,0
div#header *[attr] { } 0,1,1,1

看过了这些,这四位中的第一位还未曾谋面,有谁这么厉害? 内联样式,写在 html 行内的.

算这些,是用在多个选择器争夺相同的元素时,看谁的能力强.

时间: 2024-08-12 05:39:31

CSS生僻问题一网打尽的相关文章

只会CSS还不够,LESS、SASS、BootStrap、Foundation一网打尽!

有些人想学CSS,不知如何下手:有些人已经学会CSS的各种属性,却不知如何运用:有些人会平面设计,不知道如何与网页设计结合:有些人会HTML,就是学不会CSS.试问自己,图中的技术你都会了吗? 别总是怨天尤人了,<CSS高效开发实战-CSS 3.LESS.SASS.Bootstrap.Foundation>书写作的目的是要确保CSS不会成为开发过程或网站性能的瓶颈,确保读者可以运用一些工具.框架.预处理来提升开发效率和节约人力成本,确保所讲解的内容读者都能活学活用. 曾就职于CSDN和淘宝的一

巧妙的实现 CSS 斜线(炫酷的小效果)

开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧. 不断更新,不断更新,不断更新,重要的事情说三遍. 所有题目汇总在我的 Github . 使用单个标签,如何实现下图所示的斜线效果.也就是如何使用 CSS 画斜线? 这种类似于表格的斜线效果,细细研究一下,还是有一些挺有趣的方法可以实现之. 我们假

CSS相关知识

CSS的优势: 1:样式表提供了远比HTML多得多的格式化选择. 2:在给网页添加背景的时候,你要确定他要如何平铺(重复等一系列的属性) 3:CSS占用的空间也远比HTML的格式化选项要少得多,加载速度更快 4:可以设置多种样式样式表,更具不同的需求提供不同的风格,样式更加独立 文档类型: 所有网页都是一个doctype(文档类型)开头的,表示网页用哪一种HTML来编写 HTML的工作原理 1:网站的第一行是DOCTYPE声明, 2:<html></html>如果把一个网页比作成一

改变CSS世界纵横规则的writing-mode属性

writing-mode这个CSS属性,我们是不是很少见到,很少用到!我们往往称不常见的东西为“生僻”,就像是不常见的文字我们叫“生僻字”,因此不常见的CSS属性,我们可以叫做“生僻属性”,writing-mode给我们的感觉就是一个“生僻属性”,很弱,可有可无. 但是,实际上,我们都错了,大错特错,writing-mode很弱?卧槽,别开玩笑了,writing-mode可以说是CSS世界里面最逆天的CSS属性了,直接颠覆CSS世界的众多规则. 而writing-mode之所以给人“生僻”的感觉

5.1 CSS文字样式

文字和图像是传达信息的基础,是网页设计永远不可缺少的元素,各种各样的文字和图像效果在整个互联网中无处不在.本章从基础的文字设置开始,详细讲解CSS设置各种文字效果的方法,然后再进一步讲解关于图像的几个重要的应用领域. 使用过任何文字处理软件的用户对文字排版都不会陌生.例如在Word软件中可以对文字的字体.大小和颜色等各种属性进行设置.CSS同样可以对HTML页面中的文字进行全面的设置. 一.准备网页 为了便于讲解和实践,首先准备一个非常简单的页面,HTML代码如下. <!DOCTYPE html

10条影响CSS渲染速度的写法与建议(摘抄HTML5中国)

1.尽量避免 *{} 由于不同浏览器对HTML标签的解释有差异,所以最终的网页效果在不同的浏览器中可能是不一样的,为了消除这方面的风险,设计者通常会在CSS的一开始就把所有的默认属性全部去除,以达到所有标签属性值都统一的效果.所以就有了*通配符.* 会遍历所有的标签: *{ margin:0;padding:0} 建议的解决方法: (1)不要去使用生僻的标签,因为这些标签在不同浏览器中解释出来的效果不一样:所以要尽可能的去使用那些常用的标签: (2)不要使用*:而是把常用到的这些标签进行处理:例

谈谈一些有趣的CSS题目(七)-- 消失的边界线问题

开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧. 不断更新,不断更新,不断更新,重要的事情说三遍. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少 谈谈一些有趣

谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案

开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧. 不断更新,不断更新,不断更新,重要的事情说三遍. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少 谈谈一些有趣

谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略

开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉到生僻的 CSS 属性,赶紧去补习一下吧. 不断更新,不断更新,不断更新,重要的事情说三遍. 谈谈一些有趣的CSS题目(一)-- 左边竖条的实现方法 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少 谈谈一些有趣的CSS题