初识CSS及选择器

什么是CSS?

  • CSS全称为层叠样式表(Cascading Style Sheet),通常又称为风格样式表(Style Sheet),它是用来进行网页风格设计的。使用层叠样式表,还可以精确地定位网页元素位置,美化网页外观。

CSS发展史

  1. 1996年12月推出了CSS规范的第一版,即CSS1.0版本。
  2. 1998年5月W3C发布了CSS的第二版,即CSS2.0版本。(DIV块 + CSS,HTML与CSS结构分离的思想,网页变得简单,SEO)
  3. 2004年W3C升级了CSS2.0版本,变为CSS2.1版本。(浮动,定位)
  4. 2010年W3C推出了CSS3版本,它包括CSS2.1的所以功能,是目前最新版。(圆角,阴影,动画…… 浏览器兼容性~)

练习格式在这里插入图片描述

CSS3的基本语法结构

1.CSS规则由两部分组成,选择器和声明。

2.声明必须放在大括号中,声明可以是多条。

3.每条声明由一个属性和值组成,属性和值用冒号分开,每条语句以英文分号结尾。

注意:在CSS一条声明中,基于W3C标准规范考虑,建议都以";"结束。

选择器{
    声明1;
    声明2;
    声明3;
}

style标签

  • style标签建议写在head标签内
  • 在style标签里面可以写css的样式
  • 这是没有和html代码分离的写法(不建议,练习的时候代码少可以这样写)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--<style> 可以编写css代码
    语法:
        选择器{
            声明1;
            声明2;
            声明3;
        }
    -->
    <style>
        h1{
     
     
            <!--设置字体颜色-->
            color: crimson;
        }
    </style>
</head>
<body>
    <h1>我是标题</h1>
</body>
</html>

CSS的优势:

  1. 内容和表现分离
  2. 网页结构表现统一,可以实现复用
  3. 样式十分丰富
  4. 建议使用独立于html的css文件
  5. 利用SEO,容易被搜索引擎收录!

CSS的3种导入方式

优先级:行内样式>内部样式>外部样式

  1. 行内样式

    • 行内样式就是在HTML标签中直接使用style属性设置CSS样式。
    <h1 style="color:red;">style属性的应用<h1>
    <p style="font-size:14px;color:green;">直接在HTML标签中设置样式</p>
    
  2. 内部样式

  • 把CSS代码写在< head >的< style >标签中,与HTML内容位于同一个HTML文件中。
  1. 外部样式

    • 链接外部样式表
    <!--
    rel="stylesheet"是指页面中使用这个外部样式表
    type="text/css"是指文件的类型是样式表文本
    -->
    <head>
    	……
    	<link href="样式表地址" rel="stylesheet" type="text/css"/>
    	……
    </head>
    
    • 导入外部样式表
    <!--@import表示导入文件,前面必须有一个@符号-->
    <head>
    		<style>
    			@import url("样式表位置")
    		</style>
    </head>
    
链接式和导入式的区别
  • 它们的本质都是将一个独立的CSS样式表引用到HTML页面中,但是两者还是有一些
  1. 标签属于XHTML范畴。而@import是CSS2.1中特有
  2. 使用时先将外部CSS文件加载到网页中再进行显示,即使网速再慢也是一样的效果。

  3. 使用@import导入的CSS文件,浏览页面时先将HTML结构呈现出来,再把外部CSS文件加载到网页当中,最终的效果与使用效果一样,网速较慢时会先显示没有CSS布局的HTML网页。

CSS选择器

基本选择器

作用:选择页面上的某一个或一些元素

1. 标签选择器

<!--
一个HTML网页由很多的标签组成,如<h1>~<h6>、<p>、<img/>等,CSS标签选择器就是用来声明这些标签的。	
每个HTML标签的名称都可以作为相应的标签选择器名称。
-->
标签名{
	font-size:字体大小;
	color:字体颜色;
}

缺点:选中一个标签,页面中所有的相同与它相同的标签都跟随改变

2. 类选择器

  • 定义好类名,去给标签加上class属性,值为类名称
  • 优点:可以多个标签归类,同一个class,可以复用
.cgz{
	<!--设置字体大小-->
	font-size:16px;
}
.cgz2{
	font-size:20px;
}

<!--使用样式-->
<!--<标签名 calss="类名称">标签内容</标签名>-->
<P class="cgz">搜嘎</P>
<p class="cgz2">呦西</p>

CSS选择器命名规范:

  • 使用英文字母小写
  • 不要和ID选择器同名
  • 使用具有语义化的单词命名
  • 长名称或词组可以使用驼峰命名方式选择器命名。

3. id选择器

  • id选择器在页面中只能使用一次,也就是说在同一个页面中同一个id属性只能设置一次;
  • id名用的是 # 号,class名用的是 .
#cgz{
	<!--设置字体大小-->
	font-size:16px;
}
#cgz2{
	font-size:20px;
}

<!--<标签名 id="id名称">标签内容</标签名>-->
<P id="cgz">搜嘎</P>
<p id="cgz2">呦西</p>

三种基本选择器的优先级:ID选择器>class类选择器>标签选择器

高级选择器

1.层次选择器

层次选择器.png
1.后代选择器

  • 后代选择器的作用就是可以选择某元素的后代元素。
  • 例如"E F",E为祖先元素,F为后代元素,那么F元素无论是E元素的子元素、孙辈元素,或者更深层次的关系,都将被选中。

2.子选择器

  • 子选择器(E>F),只能选择某元素的子元素,其中E为父元素。

3.相邻兄弟选择器

  • 相邻兄弟选择器(E+F)可以紧接着另一个元素后面的元素,它们有一个相同的父级元素,换句话说,E和F是同辈元素,F元素在E元素后面,并且相邻。

4.通用兄弟选择器

  • 通用兄弟选择器(E ~F )用于选择某元素后面的所有兄弟元素,它和相邻兄弟选择器类似,需要在同一个父元素之中。也就是说E和F都是同辈元素,并且F元素在E元素之后,E~F将选中E元素后面的所有F元素。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*后代选择器:选中body下的所有p标签(选中的这些p标签全是body的后代)*/
        body p{
     
     
            background: red;
        }
        /*子选择器:选中body的儿子p标签(选中的p标签只是body的儿子)*/
        body >p{
     
     
            background: lightcoral;
        }
        /*相邻兄弟选择器:选中p标签后面紧接着的同级p标签,它们是同一个爹*/
        .p1 +p{
     
     
            background: lightseagreen;
        }
        /*通用兄弟选择器:选中的是跟p标签所有同级的p标签*/
        .p1 ~p{
     
     
          background: yellow;
        }
    </style>
</head>
<body>
    <p class="p1">p1</p>
    <p class="p2">p2</p>
    <p class="p3">p3</p>
    <ul>
        <li><p class="p4">p4</p></li>
        <li><p class="p5">p5</p></li>
        <li><p class="p6">p6</p></li>
    </ul>
    <p class="p7">p7</p>
    <p class="p8">p8</p>
</body>
</html>

2.结构伪类选择器

不分类型
E:first-child 作为父元素的第一个子元素的元素E
E:last-child 作为父元素的最后一个子元素的元素E
E F:nth-child(n) 选择父级元素E的第n个子元素F,(n可以是1、2、3),关键字为even、odd
分类型
E:first-of-type 选择父元素内具有指定类型的第一个E元素
E:last-of-type 选择父元素内具有指定类型的最好一个E元素
E F:nth-of-type(n) 选择父元素内具有指定类型的第n个F元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*选中ul的第一个子元素*/
        ul li:first-child{
     
     
            background: lightblue;
        }
        /*ul的最后一个子元素*/
        ul li:last-child{
     
     
            background: lightcoral;
        }
        /*
        选中p1:定位到父元素,选择当前第一个元素(不分类型)
        */
        p:nth-child(2){
     
     
            background: lightsalmon;
        }


        /*选中父元素第一个类型为p的子元素*/
        p:first-of-type{
     
     
            background: lightgray;
        }

        /*选中父元素最后一个类型为p的子元素*/
        p:last-of-type{
     
     
            background: magenta;
        }

        /*选中父元素第二个类型为p的子元素、*/
        p:nth-of-type(3){
     
     
            background: yellow;
        }

    </style>
</head>
<body>
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <p>p4</p>
    <ul>
        <li>li1</li>
        <li>li2</li>
        <li>li3</li>
    </ul>
</body>
</html>

3.属性选择器

E[attr] 用来选择某个具有属性的元素,无论这个属性值是什么
E[attr=val] 元素E设置了属性attr,并且属性值是val才能被选中
E[attr*=val] 属性值中包含字符串val就能被选中
E[attr^=val] 属性attr的属性值是以val开头的
E[attr$=val] 属性attr的属性值是以val结尾的
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*这个是后面学的,不用认识*/
        .demo a{
     
     
            float: left;
            display: block;
            height: 50px;
            width: 50px;
            border-radius: 10px;
            background: lightcoral;
            text-align: center;
            color: darkgray;
            line-height: 50px;
            margin-right: 5px;
            font: bold 20px/50px Arial;
        }


        /*存在id属性的元素*/
        a[id]{
     
     
            background: lightblue;
        }
        /*存在href="abc"的元素*/
        a[href="abc"]{
     
     
            background: lemonchiffon;
        }

        /*选中存在href属性,并且值里有doc元素*/
        a[href*=doc]{
     
     
            background: lightgreen;
        }

        /*选中存在href属性并且值以ima开头的元素*/
        a[href^=ima]{
     
     
            background: maroon;
        }

        /*选中存在href属性并且值以pdf结尾的元素*/
        a[href$=pdf]{
     
     
            background: moccasin;
        }
    </style>
</head>
<body>
    <p class="demo">
        <a href="http://www.baidu.com" class="links item first" id="first">1</a>
        <a href="" class="links item active" target="_blank" title="test">2</a>
        <a href="images/123.html" class="link item">3</a>
        <a href="images/123.png" class="link item">4</a>
        <a href="images/123.jpg" class="link item">5</a>
        <a href="abc" class="link item">6</a>
        <a href="/a.pdf" class="link item">7</a>
        <a href="/abc.pdf" class="link item">8</a>
        <a href="abc.doc" class="link item">9</a>
        <a href="abcd.doc" class="link item">10</a>
    </p>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_45277249/article/details/111823311