zoukankan      html  css  js  c++  java
  • CSS3学习笔记(1)-CSS3选择器

    CSS3与CSS2相比发生了很大的变化,CSS3的亮点功能包括实现圆角、阴影、新的flex伸缩布局模型、多列布局模型、填充色的渐变、2D变形(位移、缩放、旋转、倾斜)、3D变形、动画(transition过渡动画、animation关键帧动画)等。看到这些字眼,你实际上已经可以深深感受到CSS3的野心,通过这些东西基本上都可以做出很棒的多媒体演示了,flash、Powerpoint制作演示也无外乎这些东西而已!

    确实如此,CSS从CSS3开始,已经从单纯的实现静态页面元素布局美化之中超脱出来,向静态页面元素的互动进军,我们可以不使用Javascript即可实现很多有意思的动画效果。接下来我将这一段时间以来所学CSS3的内容按模块整理出来,首先整理的部分是CSS3的选择器。

    之所以首先整理选择器,是因为在CSS3中写入样式代码时,首先需要确定的就是选择什么标签进行格式设置。CSS的选择器非常丰富,它不仅可以被用在CSS中,还可以被应用到很多场合,比如JQuery、D3、Html Canvas绘图中。因而,使用好CSS的选择器,包括CSS3新增的选择器非常重要。CSS3的选择器可以大致分内五大类别:基本选择器、层次选择器、伪类选择器、伪元素以及属性选择器。

    基本选择器

    基本选择器是使用最频繁的选择器,早在CSS1版本就已经被定义。

    选择器类型描述实例
    * 通配选择器 选择文档中所有的HTML元素  *{margin:0;padding:0;}
    div、p、span等标签名 元素选择器 选择指定标签对应的HTML元素 div{float:left;} 
    #id ID选择器 选择ID属性为"id"的任意HTML元素  #firstDiv{background:gray;}
    .classname 类别选择器 选择class属性为"classname"的任意HTML元素 .demo{border:1px solid #ccc;} 
    selector1,selector2 群组选择器 选择由selector1和selector2选择器选择元素的组合后的集合  

    多类选择器:该选择器是类选择器使用的一个特殊方法,我们可以为我们的页面元素设置一个多类class属性,其属性间用空格分割,代码参考如下:

     1 <style>
     2     .important{...}
     3     .title{...}
     4     .item{...}
     5     .important.item.title{...}
     6 </style>
     7 
     8 <ul class="clearfix demo">
     9     <li class="important item title">important</li>
    10     <li class="important itemeven">important</li>
    11     <li class="important itemodd">important</li>
    12 </ul>

    以上代码中多个类选择器内部的设置我省略掉了,只是通过代码来说明多类选择器的应用场合及使用方法。

    层次选择器

    层次选择器通过HTMl的DOM元素间的层次关系获取定位页面元素,其层次关系分为后代、父子、兄弟关系,其中兄弟关系又分相邻兄弟、通用兄弟关系。

    选择器类型描述实例
    A B 后代选择器 选择包含在A元素中所有的B元素,A元素是B元素的祖宗 div p{text-indent:2em;}
    A>B 子选择器 选择A元素下一层中所有的B元素,A元素是B元素的父亲 div>p{text-indent:2em;}
    A+B 相邻兄弟选择器 选择紧接在A元素后,与A元素同层次的一个B元素  
    A~B 通用兄弟选择器 选择在A元素后,与A元素同层次的所有B元素  

    伪类选择器

    伪类选择器又分为六种:动态伪类选择器、目标伪类选择器、语言伪类选择器、状态伪类选择器、结构伪类选择器和否定伪类选择器

    选择器类型描述实例
    A:link 动态伪类选择器 选择所有A元素,且这些元素定义了超链接并且还未被访问 a:link{}
    A:visited 同上 选择所有A元素,且这些元素被定义了超链接并且已被访问  
    A:active 同上 选择所有A元素,且这些元素被激活  
    A:hover 同上 选择所有A元素,且鼠标停留在当前A元素上  
    A:focus 同上 选择所有A元素,且这些A元素当前获取了焦点  
    A:target 目标伪类选择器 选择所有A元素,且A元素被相关的URL所指向  
    A:lang(language) 语言伪类选择器 选择所有A元素,且A元素被指定了lang属性,其属性值为"language"  
    A:checked 状态伪类选择器 选择复选或单选按钮,且其处于被选中状态  
    A:enabled 同上 选择所有被启用的表单元素   
    A:disabled 同上 选择所有被禁用的表单元素   
    A:not(B) 否定伪类选择器 找到不是B的所有A元素   

    结构伪类选择器比较多,以下我再用一个表格单独来显示:

    选择器描述实例
    A:first-child 选择一个A元素,且A元素是其父元素中的第一个子元素  
    A:last-child 选择一个A元素,且A元素是其父元素中的最后一个子元素  
    A:root 选择A元素所在文档的根元素,一般是<html>标签  
    A B:nth-child(n) 选择A元素中的第n个子元素,且这个子元素是B元素   
    A B:nth-last-child(n) 选择A元素中的倒数第n个子元素,且这个元素是B元素  
    A:nth-of-type(n) 选择一个A元素,且A元素是父元素中所有A元素的第n个  
    A:nth-last-of-type(n) 选择一个A元素,且A元素是父元素中所有A元素的倒数第n个   
    A:first-of-type 选择一个A元素,且A元素是父元素中所有A元素的第1个  
    A:last-of-type 选择一个A元素,且A元素是父元素中所有A元素的倒数第1个  
    A:only-child 选择一个A元素,且A元素在父元素中是唯一的一个元素  
    A:only-of-type 选择一个A元素,且A元素在父元素中是唯一的一个A元素  
    A:empty 选择A元素,且A元素不包含任何子元素  

    伪元素

    伪元素都带有2个冒号,其与伪类选择器存在差异,需要特别注意。

    选择器描述实例
    A::first-letter 选择A元素文字内容中第一个字母或文字  
    A::first-line 选择A元素中第一行文字  
    A::before 选择A元素的开始位置,使用时需要指定content属性  
    A::after 选择A元素的结束位置,使用时需要指定content属性  
    A::selection 选择A元素当前选择文字内容,只能指定background、color属性  

    属性选择器

    属性选择器基于元素的属性进行查找。

    选择器描述实例
    A[attr] 选择具有属性"attr"的所有A元素  
    A[attr=val] 选择"attr"属性值等于"val"的所有A元素  
    A[attr|=val] 选择"attr"属性值含有"val"或者以"val-"开头的所有A元素  
    A[attr~=val] 选择"attr"属性值含有"val"这个单词(单词与单词间以空格分开)的所有A元素  
    A[attr*=val] 选择"attr"属性值任意位置含有"val"的所有A元素  
    A[attr^=val] 选择"attr"属性值以"val"开头的所有A元素  
    A[attr$=val] 选择"attr"属性值以"val"结尾的所有A元素  
  • 相关阅读:
    算法很美(一)
    pytest学习(四)
    pytest学习(三)
    pytest学习(二)
    pytest学习(一)
    HTTP协议详细介绍,面试详全强助攻!
    Docker实战总结
    微信小程序测试整理
    这些用例设计题,你在面试时遇到过吗?
    测试面试题集-Dubbo常见面试题(12)
  • 原文地址:https://www.cnblogs.com/alexywt/p/4732519.html
Copyright © 2011-2022 走看看