前端基础(二):CSS

目录

6. CSS

6.1 三种样式

6.1.1 第一种: 行内样式,内联样式        

6.1.2 第二种:内部样式

6.1.3 第三种:外部样式表

6.2 CSS语法

6.2.1 注释         

6.2.2 基本语法: 选择器{声明块}

6.3 CSS 选择器

6.3.1 常用选择器

6.3.2 复合选择器

6.3.3 关系选择器

6.3.4 属性选择器

6.3.5 伪类选择器

6.3.6 伪元素选择器

6.4 样式的继承       

6.5 选择器的权重

6.6 一些简单的样式(单位,颜色,字体,布局)

6.7 盒模型


【写在前面】

前文链接:前端基础(一):HTML

6. CSS

(1)CSS, 层叠样式表

(2)用来为网页创建样式表,通过样式表可以对网页进行装饰

(3)所谓层叠,可以将整个网页想象成一层一层的结构,层次高的将会覆盖层次低的

(4)CSS可以分别为网页的各个层次设置样式

6.1 三种样式

6.1.1 第一种: 行内样式,内联样式        

 在html标签内部,通过style属性来设置元素的样式

<p style=“color: red; font-size: 16px”>今天天气很好</p>

优点:不用填写选择器,直接编写声明即可。

缺点:只对单个标签生效。当要处理(修改)多个元素是,需要逐个修改,效率低。

6.1.2 第二种:内部样式

通常将样式编写到<head>里的<style>标签中,通过css选择器来选中元素,并为其设置具体样式。

<style>

        p{color: red; font-size: 30px;}

</style>

优点:内部样式表的方式是css独立于html代码,可以同时为多个元素设置样式,可以复用。

缺点:但是只对当前网页起作用,不能跨页面。
        

6.1.3 第三种:外部样式表

将样式编写到外部的css文件中,通过<link>标签引入

一个.css样式表中的内容,比如:选择器{ }    (无<style>)

引用格式:<link rel=“stylesheet” type="text/css" href=“./style/style.css”>

优缺点:可以在不同的页面中进行样式的复用。可以利用浏览器的缓存机制,不需要每次都下载css文件,加快网页的加载。

6.2 CSS语法

6.2.1 注释         

格式:/*注释内容*/

6.2.2 基本语法: 选择器{声明块}

格式:选择器 {样式名:样式值; 样式名:样式值;}

选择器:通过选择器,选中html页面中指定的元素。

声明块:用来为指定元素设置样式。是键值对,一个样式名对应一个样式值,名和值之间用冒号和空格连接,分号结尾。


6.3 CSS 选择器

6.3.1 常用选择器

(1)元素选择器

 比如p标签选择器: p{ } 

(2)id选择器

作用:根据元素的id属性选中一个元素

语法:#id值

说明:

id名称不能以数字开头,区分大小写。

如果需要改某个元素的某一项,则给这项设置一个id属性,然后 #id值{ }。

id唯一。

不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。

(3)class类选择器

作用:根据元素的class属性选中对应元素

语法:.class属性值{ }

说明:

类名不能以数字开头,区分大小写。

id不能重复,class可以重复。

并且可以为同一个元素设置多个class属性值(空格分隔)。

类选择器可以结合使用(多个类选择器交集使用)


(4)通用选择器

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

语法:*{ } 

6.3.2 复合选择器

(1)交集选择器

作用:选中同时符合多个条件的元素

语法:选择器1选择器2选择器n{ }  

选择器之间没有空格分割

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


(2)并集选择器

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

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

选择器之间逗号分割


注意:交集和并集一起使用时,通常先判断交集
        

6.3.3 关系选择器

(1)一些基本概念

父元素:直接包含子元素的元素

子元素:直接被父元素包含的元素

祖先元素:直接或间接包含后代元素,一个元素的父元素,也是它的祖先元素

子孙元素:直接或间接被祖先元素包含, 一个元素的子元素,也是它的后代元素

兄弟元素:拥有相同父元素的两个或多个元素,就是兄弟元素


(2)子元素选择器

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

语法: 父元素 > 子元素

子结合符两边可以有空白符,这是可选的


(3)后代元素选择器

作用: 选择祖先元素的指定的后代元素

语法: 祖先元素 后代元素

空格隔开

有关后代选择器有一个易被忽视的方面,即两个元素之间的层次间隔可以是无限的。
              

举例:结合后代选择器和子选择器
table.company td > p : 该选择器会选择作为 td 元素子元素的所有 p 元素,这个 td 元素本身从 table 元素继承,该 table 元素有一个包含 company 的 class 属性。


(4)兄弟选择器

作用:选择下一个兄弟/相邻兄弟(后面紧挨着的)

语法:前一个标签+下一个标签(离前一个最近的兄弟,代码结构上也要两个标签是接近的)

请记住,用一个结合符只能选择两个相邻兄弟中的第二个元素

比如:li + li {font-weight:bold;},只会把列表中第二个列表项变为粗体,第一个不受影响。         

作用:选择所有兄弟

语法:前一个标签~下一个标签 (此时不一定紧挨着,但是只能是对前一个标签中的后面的符合条件的兄弟标签起作用)
        

6.3.4 属性选择器

(1)元素(标签)名[属性名]:选择含有指定属性的元素

(2)元素(标签)名[属性名=属性值]:选择含有指定属性名和属性值的元素

(3)元素(标签)名[属性名^=属性值] :选择属性值以指定值开头的元素,比如 title^=“q”, 以q开头
                    值不必是完整单词!

(4)元素(标签)名[属性名$=属性值] :选择属性值以指定值结尾的元素
                    值不必是完整单词!

(5)元素(标签)名[属性名*=属性值]:选择属性值包含指定值的元素
                    值不必是完整单词!

(6)元素(标签)名[属性名~=属性值]:用于选取属性值中包含指定词的元素。

                   这个指定词,是一个完整的独立的值!

(7)元素(标签)名[属性名|=属性值]:用于选取带有指定值开头的属性值的元素.

        会选择:属性等于 属性值 或 以属性值- 开头的所有元素

举例1:

[title~="flower"] { border: 5px solid yellow; } 会匹配以下属性的元素:title="flower"、title="summer flower" 以及 title="flower new",但不匹配:title="my-flower" 或 title="flowers"。 即必须就是一个属性的独立的值,而不是属性值单词中的一部分。

举例2:

比如 *[lang|="en"] {color: red;}, 上面这个规则会选择 lang 属性等于 en 或以 en- 开头的所有元素。因此,以下示例标记中的前三个元素将被选中,而不会选择后两个元素:

<p lang="en">Hello!</p>
<p lang="en-us">Greetings!</p>
<p lang="en-au">G'day!</p>
<p lang="fr">Bonjour!</p>
<p lang="cy-en">Jrooana!</p>

     

6.3.5 伪类选择器

(1)跟顺序相关的三种伪类

第一种:

:first-child 第一个子元素 (该元素是另一个元素的第一个子元素)

:last-child 最后一个子元素

:nth-child() 选中第n个子元素
    —括号里填数值,表示第几个子元素
    —n 表示0到正无穷,即所有的 (n从0开始, 指定从某位开始时,可以相应的2n+数值)
    —2n 或 even, 表示选中偶数位的元素    
    —2n+1 或 odd, 表示选中奇数位的元素

举例:ul > li: first-child{ },        ul > li: nth-child(3){ }

第二种:

:first-of-type 第一个这个类型的子元素

:last-of-type 最后一个这个类型的子元素

:nth-of-type() 选中第n个这个类型的子元素
    —括号里填数值,表示第几个子元素
    —n 表示0到正无穷,即所有的 (n从0开始, 指定从某位开始时,可以相应的2n+数值)
    —2n 或 even, 表示选中偶数位的元素    
    —2n+1 或 odd, 表示选中奇数位的元素                    

举例:ul > li: first-of-type{ },        ul > li: nth-of-type(3){ }

第三种:

not (selector):选择每个非 <selector> 元素的元素。

比如:Ul > li: not(:nth-of-type(3))


(2)a标签的伪类

作用:根据访问者与该链接的交互方式,将链接设置成四种不同的状态。    

四种状态:

a:link{} 用来表示没有访问过的链接

a:visited{}  用来表示访问过的链接(访问过的链接样式,不允许设置尺寸,为了保护隐私)

a:hover{} 表示鼠标悬停链接/表示鼠标移入的状态

a:active{} 表示已选择的链接/表示鼠标点击

不一定是a标签,也可用于其他标签,比如div. 把鼠标悬停到 <div> 元素以显示 <p> 元素(类似工具提示的效果)

注意:

a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后,才能生效!

a:active 必须在 CSS 定义中的 a:hover 之后才能生效!

伪类名称对大小写不敏感。
        

6.3.6 伪元素选择器

(1)p::first-letter{}:只适用于块级元素。

(2) p::first-line{}:只能应用于块级元素。

(3)p::before{}:可用于在元素内容之前插入一些内容。

(4)p::after{}:页面上,before和after的内容不能被选中。

(5)p::selection:选择用户选择的元素部分。


6.4 样式的继承       

我们为一个元素设置样式元素的同时,也会应用到它的后代元素上。

即,继承是发生在祖先和后代元素之间的,并不是只有子元素继承。

所以可以将一些通用的样式统一设置到共同的祖先元素上。

极个别属性不能被继承,比如背景相关的,布局相关的。


6.5 选择器的权重

(1)样式的冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的元素设置不同的样式时,这时候样式就发生了冲突。   

(2)发生样式冲突时,需要根据选择器的权重来决定如何显示

内联样式(标签里style=""):1000

id选择器:0100

类和伪类选择器:0010

元素选择器:0001

通配选择器:0000

继承的样式:没有优先级


(3)注意:

1)比较优先级时,需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示(分组选择器是单独计算的)

2)选择器的累加不会超过其最大的数量级,比如,类选择器再高也不会超过id选择器。

3)如果优先级计算后相同,此时则优先使用靠下的样式。

4)如果样式中加了 !important, 那这个就是最高的,超过内联样式。

举例:

一个元素,11个类,数值上看时超过了id的值,但它停到了它这个阶段,不管数值加起来是多少,都不能超过id选择器

样式的冲突和覆盖,只是覆盖重复的那一项,比如颜色而已,宽高没有冲突的话,宽高是按照一些存在的设置去实现


6.6 一些简单的样式(单位,颜色,字体,布局)

(1)单位

 像素 10px
屏幕(显示器)上的一个个像素点。
不同屏幕的像素大小是不一样的。单个像素越小,屏幕越清晰(同样的面积里,像素点越多,越清晰)
所以同样的200px下不同设备显示的效果是不一样
工具: FastStone Capture (还可以取色)/ QQ截图, 可查看以像素为单位的尺寸信息
            

百分比 50%
设置为父元素属性的百分比
可以根据父元素的变化情况,跟着自动调节
通常是用在子元素上的,不要加在父元素上,不然它就根据body来实现了

em  10em
em相对于当前元素字体的大小来计算的
比如 font-size是16px, 我们设置了10em, 那这里10em的效果,就相当于16*10px=160px

rem
rem相对于根元素(html标签中的font-size尺寸)的字体大小来计算的       

(2)颜色

英文名称: red, green…

RGB(可小写)
通过三种颜色不同的浓度,来调配处不同的颜色(red, green, blue)。每种颜色的值在0-255之间。语法:RGB(红色,绿色, 蓝色)。比如RGB(255,0,0). //如果都是0, 则是黑色。如果都是255,其实就是个白色

RGBA
在RGB的基础上增加了一个属性,表示不透明度。比如rgba(255, 123, 33, .15). 0代表完全透明,1代表都不透明, 0.5代表半透明

十六进制的RGB
语法: #红色绿色蓝色
颜色浓度通过00-ff设置
例如#ff0000, #00FF00.
如果颜色两位两位重复,可以进行简写。 比如#00ff00,则可以写成#0f0. 

 

我们经常用的颜色 #bfa, 表示豆沙绿

取色工具:FastStone Capture,PPT,QQ截图

(3)字体

字体相关的样式:

color, font-size, font-family字体族, line-height行高, border字体框

text-align文本的水平对齐

vertical-align元素垂直对齐的方式

背景相关的样式:

background-color:背景颜色

backgroup-image:背景图片,

background-repeat:背景的重复方式

background-position:背景图片的位置


(4)布局


6.7 盒模型

(1)盒模型从内到外有四个区:

内容区(content):盒子的内容,显示文本和图像。

内边距(padding):清除内容周围的区域,内边距是透明的。

边框(border):围绕在内边距和内容外的边框。

外边距(margin):清除边框外的区域,外边距是透明的。       

(2)内容区(content)

元素中所有的子元素和文本内容都是在内容区中排列的。

内容区的大小是由width和height两个元素来设定的。
        

(3)内边距(padding)
样式里: 

padding-top

padding-right

padding-bottom

paddig-left

举例:

padding: 50px 60px 70px 80px;   //可设1-4个值,类似下方

和border-with类似,也可以通过border-xxx-color来分别设置四个内边距。

背景颜色会延伸到内边距上。
        

(4)边框(border

边框属于盒子的边缘,边框里面属于盒子内部。出了边框,就是盒子外部。

最常用的形式: border: 10px red solid; //顺序可换

要设置边框,至少需要设置三个样式属性
border-width
Border-width:  默认是3个像素(每一条),可以指定上下左右四个方向的边框宽度。

四个值:上 右 下 左
三个值:上 左右 下
两个值:上下 左右

或者以下四个方式,分别设置四个边框的宽度:
border-top-width: 
border-bottom-width: 
border-left-width: 
border-right-width:              

border-color
如果设置了border-color,则用设置的。如果没有设置,就用前景色的颜色。
和border-with类似,也可以通过border-xxx-color来分别设置四个边框的颜色。

border-style
和border-with类似,也可以通过border-xxx-style来分别设置四个边框的类型。
类型有: solid, dotted…

(5)外边距(margin)

样式里:

常用写法: margin: 30px;

Margin-top: 30px; //移动的是自己

Margin-left: 30px;  //移动的是自己

Margin-bottom: 30px; //移动的是旁边的其他元素。 如果上下有几个元素,都设置了上下外边距,它们的值不会增加,即存在外边距的折叠(以大的为主)。

Margin-right: 30px; //移动的是旁边的其他元素。 一般不写,浏览器会根据实际总宽度和已占用宽度的情况,去调整


(6)最后,整个盒子模型到底占了多少空间,计算方法如下:

Margin-left + border-left + padding-left+ width + padding-right + border-right+margin-right

—> 相加起来,也等于父元素的宽度

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值