CSS学习笔记01


title: CSS01
date: 2022-01-19 20:48:40
tags: CSS Introduction


CSS简介

网页分成三部分:结构、表现、行为

结构:HTML 表现:CSS 行为: js

CSS:层叠样式表(图层)-> 网页实际上是一个多层结构,通过CSS可以为网页的每一层来设计样式,最终能看到的只是网页的最上面一层。总之,CSS可以用来设置网页中元素的样式。

CSS编写的位置

内联样式

内联样式(不推荐使用,因为样式只能对一个标签生效,如果希望影响到多个元素,必须在每一个元素中都复制一遍,当样式发生变化的时候还需要一个一个修改,不方便维护。开发时绝对不要使用内联样式)

<p style ="color:brown; font-size:20;">少小离家老大回</p>

效果如下:

少小离家老大回

内部样式表

选择器:p(…)表示给所有的p标签设置样式

将样式编写到head中的style标签里,然后通过CSS的选择器来选中元素为其设置各种样式,可以同时为多个标签设置样式,并且修改的时候只需要修改一处即可

问题:内部样式表只能对一个网页起作用,样式不能跨页面进行复用。

<head>
<style>
    p{
    color:red;font-size:20;
    }
</style>
</head>

<body>

    <p>
        少小离家老大回
    </p>

</body>

外部样式表(最佳实践)

将CSS样式编写到一个外部的CSS文件中,用link标签来引入外部的CSS文件

在head中创建

<link rel="stylesheet" href="./style.css">

外部样式表需要通过link标签进行引入,这样意味着只要想使用这些样式的网页都可以进行引用,使得我们的样式在不同的页面之间进行复用

将我们的样式编写到外部的CSS文件中,可以使用到浏览器的缓存机制,从而加快网页加载速度,提高用户体验。(3个html同时引用了一个CSS文件,如果A先加载过,浏览器会自动缓存,BC会从浏览器直接加载,加快速度。)

CSS的基本语法简介

style标签内部不属于html,style内部需要遵守CSS的编写规范,不能出现html标签。

  • 注释

/*注释*/

ctrl+/

CSS的基本语法分成两部分

选择器+声明块

  • 选择器

通过选择器可以选中页面的指定元素,比如p{},即选中页面中所有的p元素。

  • 声明块

通过声明指定要为元素设置的样式。

声明由一个一个声明组织,名值对结构,一个样式名对应一个样式值,**:连接,;**结尾。

选择器

常用选择器

元素选择器

作用:根据标签名来选择指定的元素

语法:标签名{}

eg:p{} div{} h1{}

缺点:不能只给一两个地方设置样式

id选择器

作用:根据id属性值选定一个元素

语法:#id属性值{}

eg: #id{}

缺点:id不能重复,如果同时将两个地方设置就不太行

class选择器(主要使用)

与id类似,不同的是class可以重复

作用:根据元素的class属性值选中一组元素

语法:.class{}

eg:.class属性值{}

特点:可以同时为一个元素指定多个class名,用空格隔开

通配选择器

作用:选中页面中所有元素

语法:*

复合选择器

交集选择器

作用:选中同时复合多个条件的选择器

语法:选择器1选择器2选择器3

eg. 将class为red的div来设置 div.red{}

注意:交集选择器中如果有元素选择器,必须使用元素选择器开头。

一般不会有div#id因为id一般可以直接确定是哪个

选择器分组(并集选择器)

作用:同时选择多个选择器对应的元素

语法:选择器1,选择器2

eg. h1,.blue{color:blue;} #h1{},.p1{},span{},div.red{}.

关系(父子)选择器

网页中不同元素的关系:

  • 父元素:直接包含子元素的元素叫做父元素
  • 子元素:直接被父元素包含的元素叫做子元素
  • 祖先元素:直接或间接包含子元素的元素叫做祖先元素,父元素也算祖先元素
  • 后代元素:直接或间接被祖先元素包含的元素叫做后代,子元素也算后代元素
  • 兄弟元素:同一个父元素

子元素选择器

作用:选中指定父元素的指定子元素

语法:父元素>子元素

后代元素选择器

作用:选中指定元素内的所有后代

样式:祖先 后代

可以连用 比如父元素>子元素>子元素 祖先 后代 后代

兄弟选择器

作用:选择下一个兄弟

样式:前+后

作用:选择下面所有兄弟

样式:前~后

属性选择器

作用:根据元素属性选择

[属性名]选择含有指定属性的元素

​ [title]{

​ color:chocolate;

​ }

​ [属性名=属性值]选择含有指定属性值的元素

​ [title=abc]{

​ color:blue;

​ }

​ [属性名^=属性值]选择属性值开头为某一值的元素

​ [title^=a]{

​ color:green;

​ }

​ [属性名$=属性值]选择属性值结尾为某一值的元素

​ [title$=f]{

​ color:brown;

​ }

[属性值*=属性名]选择属性值任一位置含有某一值的元素

[title*=b]{

color: purple_heart;

}

伪类(pseudo-classes)选择器

<ul>
        <li>first</li>
        <li>second</li>
        <li>third</li>
        <li>fourth</li>
        <li>fifth</li>
    </ul>

如果我们想让第一个li设置成红色

​ - 如果设置class会出现问题,非动态,当第一个li被另外一个li替换到后面变成第二个,第二个就会变红

​ - 伪类用来描述一个元素的特殊状态->比如第一个元素,鼠标点击的元素,鼠标移入的元素

  • 伪类:一个冒号开头

所有子元素排序

是所有子元素,不只是<li>标签,如果<li>前面还有别的标签比如span,那第一个<li>将不能算作是第一个子元素。

: first-child(第一个子元素)

ul>li:first-child{}

:last-child(最后一个子元素)

ul>li:last-child{}

:nth-child(n){}

ul>li:nth-child(3){}
/*特殊值:n 第n个 n的范围0到正无穷
		2n或even 表示选中偶数位元素
		2n+1 或 odd 表示选中奇数位元素*/

同类型元素进行排序

只算同类型元素的排序,只是<li>标签,如果<li>前面还有别的标签比如span,那第一个<li>将还算是第一个子元素。

:first-of-type{}第一个子元素

ul>li:first-of-type{}

:last-of-type{}最后一个子元素

ul>li:last-of-type{}

:nth-of-type(){}任意一个子元素

ul>li:nth-of-type(){}

否定伪类

:not 将符合条件的元素从选择器中驱逐。

除了第三个,剩下的都是红色

ul>li:not(:nth-child(3)){
	color:red;
}

只有一个子元素(所有元素都算)

:only-child

选择的是父元素中只有一个子元素,而且只有唯一的子元素。

比如:以下只会改变第一个div里的元素样式,因为第一个div只有一个子元素

div p:only-child{
    color:green;
}
<div>
	<p>
		123
	</p>
</div>
<div>
	<p>
		123456
	</p>
	<p>
		456789
	</p>
</div>
<div>
	<a pref="http://www.baidu.com">
	</a>
<div>

只有一个子元素(只算一种类型中的)

:only-of-type

Selects the only element of its type within another。

比如:以下第一个div和第二个div都会改变,因为它只算p是否有一个。

div p:only-of-type{
    color:green
}
<div>
	<a pref="http://www.baidu.com">
	<p>lala</p>
</div>
<div>
	<p>lala</p>
</div>

空元素

:empty{}

比如,会选中第一个div

div:empty{}

<div></div>
<div>
	<p>lala</p>
</div>

超链接的伪类

a:link 没访问过的链接(正常的链接)

a:visited 访问过的链接

visited表示访问过的网站,由于隐私的原因,只能修改颜色,大小之类的都不能修改。

a:visited{
color:red;
}
a:link{
color:purple;
}

:hover 用来表示鼠标移入的状态

a:hover{
color:red;
}

:active 用来表示鼠标点击的状态

a:active{
color:purple;
}

伪元素

表示页面中一些特殊的并不真实存在的元素,也就是特殊的位置

::

::first-letter第一个字母

p::first-letter{
color:red;
}

::first-line第一行

p::first-line{
background-color:yellow;
}

::selection

p::selection{
background-color:greenyellow;
}

::before起始位置 很重要,比如quote自动加上的引号这些都是通过before,after实现的。

结合content属性来使用

div::before{

​ content:"《";

​ color:red;

}

::after结束位置

div::after{

​ content:"》"

​ color:red;

}

 h1::before{
            content:"《";
            color:violet;
        }
        h1::after{
            content:"》";
            color:violet;
        }

餐厅选择器练习

网址:http://flukeout.github.io/

1 plate{} 元素选择器
2 bento{} 元素选择器
3 #fancy{} id选择器
4 plate apple{} 后代选择器
5 #fancy pickle{}复合选择器
6 .small{} 类选择器
7 orange.small{} 交集选择器
8 bento orange.small{} 复合选择器
9 plate,bento{} 并集选择器,选择器分组
10 *{} 选择所有,通配选择器
11 plate *{} 选择盘子里的所有 通配选择器
12 plate+apple{} 兄弟选择器,选择下一个
13 plate~blento{} 兄弟选择器,选择下面的全部
14 plate>child{} 子元素选择器
15 plate orange:first-child{} 伪类选择器,第一个元素
16 plate :only-child {} 伪类选择器,只有一个子元素,在所有里面计数
17 plate .small:last-child,pickle:last-child{} 伪类选择器,last-child
18 plate:nth-child(3){} 伪类选择器,第几个
19 bento:nth-last-child(3){} 伪类选择器,选择倒着数的第几个
20 apple:first-of-type{} 伪类选择器,只选择apple这种类型的第一个
21 plate:nth-child(even){} 伪类选择器,选择第偶数个
22 plate:nth-child(2n+3){} 伪类选择器,选择第2n+3个
23 plate apple:only-of-type{} 伪类选择器,选择只有一个子元素,在apple里去计数
24 orange:last-of-type,apple:last-child{} 伪类选择器,选择最后一个元素,last-of-type是该类型最后一个,last-child是所有类型中最后一个
25 bento:empty{}伪类选择器,空元素
26 apple:not(.small){} 伪类选择器,not排除
27 [for]{} 属性选择器,选择属性
28 plate[for]{} 属性选择器,选择有属性for的某一元素
29 [for=Vitaly]{} 属性选择器,属性+属性值
30 [for^=Sa]{} 属性选择器,选择前几个字母相同元素
31 [for$=ato]{}属性选择器,选择后几个字母相同元素
32 [for*=obb]{} 属性选择器,选择任意位置几个字母相同元素
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值