CSS 自学之路(一)

为文档添加样式有三种方式 :

  1. 行内样式

行内样式就是把样式写在 HTML 标签内,这种方式很少见人使用,因为这种方式下的 CSS 代码不仅不能复用,而且把 HTML 结构搞得乱七八糟。

  1. 嵌入样式

     
    

嵌入样式就是在 head 标签加上 style 标签,并在里面书写样式。这种方式的缺点是仅可以在当前文件复用样式,不可以在其它文件中使用。
3.链接样式

现在普遍使用链接样式为文档添加样式,因为这样就可以实现职责分离,HTML 负责结构,CSS 负责表现。

浏览器层叠各个样式来源的顺序为 链接 -> 嵌入 -> 行内, 这意味着什么呢?比如说我们在链接样式中将 p 标签的字体大小改为 24px, 而后又在使用行内的方式将 p 标签的字体大小改为 14px, 那么用户看到的将是 14px,因为在行内定义的样式后于链接样式被浏览器读取,所以链接引入的样式会被覆盖。有人要说了,我要让链接引入的样式是用户最终看到的样式,也就是让链接引入的样式权重超过行内引入的,可以借助 !important 实现这一功能。

color: #009966 !important;

除了以上三种,我们还可以在样式表中链接其它样式表,利用 @import 指令,如以下代码:

    @import url(foo.css);

不过值得注意的是, @import 指令必须出现在样式表中其他样式之前,否则利用 @import 引入的样式将不起作用。


接下来,将通过下面这段代码对一些选择器进行讲解。

Simple text

Simple text

Div text

Simple text

Simple text

  1. 子选择符
    article > p {
    color: #009966;
    }

    CSS 自学之路(一)_第1张图片
    demo01.png

    可见,只有 article 的直接子类加上了颜色,而 article 孙子级别的 p 标签并没有被渲染颜色。

  2. 紧邻同胞选择符
    div + p {
    color: #009966;
    }

    CSS 自学之路(一)_第2张图片

    可见,只有与 div 紧相邻 (而且在 div 的后面) 的 p 标签才会被应用上样式。这种选择符有一个妙用,如下所示
    nav ul li + li{
    border-left: 2px solid #00CC66;
    }
    demo04.png

    可以利用这种方式巧妙的为规避掉第一个 li 标签,也就是为第一个 li 标签之后的所有 li 加上一个左边框。

  3. 一般同胞选择符
    div ~ p {
    color: #009966;
    }

    CSS 自学之路(一)_第3张图片
    demo03.png

    可见,只要是在 div 后面的同胞 p 元素都会被选中并渲染样式。


还有一种选择器叫做伪类选择器,这种选择器又可细化为 UI伪类 和 结构化伪类,UI伪类比如 :hover, :focus, :active 等。结构化伪类比如 :first-child, :last-child 等。在选择符中,单冒号用于表示伪类,双冒号表示伪元素。 什么是伪元素呢?伪元素就是在文档中若有实无的元素,比如 ::first-letter, ::first-line, ::before, ::after 等。

对于 CSS2 之前就已经有的伪元素,比如 :before, 单冒号和双冒号的写法实现的功能是一样的。 双冒号是 CSS3 引入的,用于区分伪类和伪元素。 如果你的网页只需要兼容 webkit, firefox, opera 等浏览器,建议采用伪元素使用双冒号的写法。 如果你不得不兼容 IE浏览器,还是用 CSS2 的单冒号写法比较安全。

下面来看看这段代码

Simple text

Simple text

Simple text

Simple text

为其书写样式

    p {
        color: black;
    }

    p.special{
        color: green;
    }

    p#error{
        color: red;
    }
CSS 自学之路(一)_第4张图片
demo05.png

结果是带有类的覆盖了原有的样式,带有 id 的覆盖了带有类的样式,这种结果的产生涉及到 "特指度" 的计算,其实也就是优先级的意思。 特指度可以利用 ICE 公式来计算,值越大则特指度越高。

            I-C-E
p           0-0-1 特指度 = 1
p.special   0-1-1 特指度 = 11
p#error     1-0-1 特指度 = 101

下面讲一个关于垂直外边距的误区,比方说下面这段代码。

div{ width: 100px; height: 100px; border: 1px solid #386; margin-top: 50px; margin-bottom: 20px; }

很多人可能认为这两个 div 之间的距离应该是 (50+20)px, 但其实是 50px,也就是说垂直外边距会发生重叠, 从而表现出较大的那一个。不过对于水平外边距则不存在这个问题。

你可能感兴趣的:(CSS 自学之路(一))