当前位置 博文首页 > 大曾blog:DaZeng:CSS的选择器、选择符、伪类

    大曾blog:DaZeng:CSS的选择器、选择符、伪类

    作者:[db:作者] 时间:2021-08-03 15:46

    10.28-11.3 WEB(二)

    上周作业复习WEB(一),整理资料
    居中写三遍,JS原生轮播图背着能写出。
    1、手风琴 这个是点了才动你可以写hover,hover之后滑动但是移出就还原,点击才像视频里这样,不还原,你可以用div背景色,或者自己找图这里面是有动画效果的,不是直接就变了。
    2、css单位,px、em、rem、vmin、vmax
    3、媒体查询
    4、帧动画
    5、3d盒子
    6、还有个正方体,我找找这个有扩展,换图
    7、百叶窗
    8、再写一个JQ轮播图

    上一章:CSS的媒体查询 @media——响应式页面

    本来想做逐帧动画的任务,但是突然看到这几个知识点觉得很有必要掌握以下,感觉掌握了之后就不用再定义那么多class和id去写样式了。


    一、CSS的组合选择符

    在 CSS3 中包含了四种组合方式:

    • 后代选择器(以空格分隔):

    后代选择器用于选取某元素的后代元素。

    以下实例选取所有<p>元素插入到<div>元素中:

    div p
    {
      background-color:yellow;
    }
    
    • 子元素选择器(以大于号分隔):

    与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。

    以下实例选择了<div>元素中所有直接子元素<p>

    div>p
    {
      background-color:yellow;
    }
    
    • 相邻兄弟选择器(以加号分隔)

    相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。

    如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。

    以下实例选取了所有位于<div>元素后的第一个<p>元素:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8"> 
    <title>菜鸟教程(runoob.com)</title> 
    <style>
    div+p
    {
    	background-color:yellow;
    }
    </style>
    </head>
    <body>
    
    <h1>文章标题</h1>
    
    <div>
    <h2>DIV 内部标题</h2>
    <p>DIV 内部段落。</p>
    </div>
    
    <p>DIV 之后的第一个 P 元素。</p>
    
    <p>DIV 之后的第二个 P 元素。</p>
    
    </body>
    </html>
    

    • 后续兄弟选择器(以破折号分隔)

    后续兄弟选择器选取所有指定元素之后的相邻兄弟元素。
    以下实例选取了所有<div>元素之后的所有相邻兄弟元素<p> :

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8"> 
    <title>菜鸟教程(runoob.com)</title> 
    <style>
    div~p
    {
    	background-color:yellow;
    }
    </style>
    </head>
    <body>
    	
    <p>之前段落,不会添加背景颜色。</p>
    <div>
    <p>段落 1。 在 div 中。</p>
    <p>段落 2。 在 div 中。</p>
    </div>
    
    <p>段落 3。不在 div 中。</p>
    <p>段落 4。不在 div 中。</p>
    
    </body>
    </html>
    

    二、CSS伪类及与伪元素的区别:

    • 举例几个最为常见的:
    a:link {color:#FF0000;} /* 未访问的链接 */
    a:visited {color:#00FF00;} /* 已访问的链接 */
    a:hover {color:#FF00FF;} /* 鼠标划过链接 */
    a:active {color:#0000FF;} /* 已选中的链接 */
    

    注意
    在CSS定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
    在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。
    伪类的名称不区分大小写。

    • 伪类可以与 CSS 类配合使用:
    a.red:visited {color:#FF0000;}
     
    <a class="red" href="css-syntax.html">CSS 语法</a>
    
    • CSS :first-child 伪类

    匹配第一个 <p>元素
    在下面的例子中,选择器匹配作为任何元素的第一个子元素的

    元素:

    p:first-child
    {
        color:blue;
    }
    

    在下面的例子中,选择相匹配的所有<p>元素的第一个<i>元素:

    p > i:first-child
    {
        color:blue;
    }
    

    在下面的例子中,选择器匹配所有作为元素的第一个子元素的<p>元素中的所有<i>元素:

    p:first-child i
    {
        color:blue;
    }
    

    CSS - :lang 伪类
    :lang 伪类使你有能力为不同的语言定义特殊的规则:

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8"> 
    <title>菜鸟教程(runoob.com)</title> 
    <style>
    q:lang(no)
    {
    	quotes: "~" "~";
    }
    </style>
    </head>
    
    <body>
    <p>Some text <q lang="no">A quote in a paragraph</q> Some text.</p>
    <p>在这个例子中,:lang定义了q元素的值为lang =“no”</p>
    <p><b>注意:</b> 仅当 !DOCTYPE 已经声明时 IE8 支持 :lang.</p>
    </body>
    </html>
    

    • ::after、::before伪元素,但是又像元素展示内容:
    #div1::before{
    	content:'我是before添加的内容'
    }
    #div1{
    	width:100px;
    	height:100px;
    	position:relative;
    }
    #div1::after{
    	//content必须要有可为''
    	content:'我是after添加的内容';
    	display:block;//转换为块级元素才可设置宽高,伪元素为内联。
    	width:100%;
    	height:100%;
    	position:absolute;
    	top:0;
    	left:0;
    	display:none;
    	//或者用opacity:1
    }
    #div1:hover::after{
    	display:block;
    	//opacity:0
    }
    
    • 做交互用:hover或者伪元素

    所有CSS伪类/元素

    选择器——空出来方便记忆,回答出对应功能,答案和具体应用可在菜鸟教程查看:
    :checked
    :disabled
    :empty
    :enabled
    :first-of-type
    :in-range
    :invalid
    :last-child
    :last-of-type
    :not(selector)
    :nth-child(n)
    :nth-last-child(n)
    :nth-last-of-type(n)
    :nth-of-type(n)
    :only-of-type
    :only-child
    :optional
    :out-of-range
    :read-only
    :read-write
    :required
    :root
    :target
    :valid
    :link
    :visited
    :active
    :hover
    :focus
    :first-letter
    :first-line
    :first-child
    :before
    :after
    :lang(language)

    注意伪类伪元素的区别
    伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,而不是元素的id、class、属性等静态的标志。由于状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。

    与伪类针对特殊状态的元素不同的是,伪元素是对元素中的特定内容进行操作,它所操作的层次比伪类更深了一层,也因此它的动态性比伪类要低得多。实际上,设计伪元素的目的就是去选取诸如元素内容第一个字(母)、第一行,选取某些内容前面或后面这种普通的选择器无法完成的工作。它控制的内容实际上和元素是相同的,但是它本身只是基于元素的抽象,并不存在于文档中,所以叫伪元素。

    三、CSS属性选择器:

    • 属性选择器
      下面的例子是把包含标题(title)的所有元素变为蓝色:
    [title]
    {
        color:blue;
    }
    
    • 属性和值选择器
      下面的实例改变了标题title='runoob’元素的边框样式:
    [title=runoob]
    {
        border:5px solid green;
    }
    
    • 属性和值的选择器 - 多值
      下面是包含指定值的title属性的元素样式的例子,使用(~)分隔属性和值:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8"> 
    <title>菜鸟教程(runoob.com)</title>  
    <style>
    [title~=hello]
    {
    	color:blue;
    } 
    </style>
    </head>
    
    <body>
    <h2>将适用:</h2>
    <h1 title="hello world">Hello world</h1>
    <p title="student hello">Hello CSS students!</p>
    <hr>
    <h2>将不适用:</h2>
    <p title="student">Hi CSS students!</p>
    </body>
    </html>
    

    • 下面是包含指定值的lang属性的元素样式的例子,使用(|)分隔属性和值:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8"> 
    <title>菜鸟教程(runoob.com)</title>  
    <style>
    [lang|=en]
    {
    	color:blue;
    }
    </style>
    </head>
    
    <body>
    <h2>将适用:</h2>
    <p lang="en">Hello!</p>
    <p lang="en-us">Hi!</p>
    <p lang="en-gb">Ello!</p>
    <hr>
    <h2>将不适用:</h2>
    <p lang="us">Hi!</p>
    <p lang="no">Hei!</p>
    </body