Lesson3:CSS

目录

一、css的定义

二、基本语法规范

三、引入方式

3.1 内部样式表

3.2 行内样式表(内联样式)

内联

3.3 外部样式

浏览器缓存

四、一些规范

4.1 大小写

4.2 空格规范

五、选择器

5.1 选择器的作用

5.2 选择器的种类

5.3 基础选择器

5.3.1 标签选择器

5.3.2 类选择器

5.3.3 id选择器

5.3.4 通配符选择器

5.3.5 基础选择器总结

5.4 复合选择器

5.4.1 后代选择器(包含选择器)

5.4.2 子选择器

5.4.3 并集选择器

5.4.4 伪类选择器

(1)链接伪类选择器

Q:如何让一个已经被访问的链接恢复成未被访问的状态?

Q:注意事项

(2):force伪类选择器

5.4.5 复合选择器总结

六、字体属性

6.1 设置字体font-family

6.2 大小font-size

6.3 粗细font-weight

6.4 文字样式font-style

七、文本属性

7.1 文本颜色color

7.2 文本装饰text-decoration

7.3 文本缩进text-indent

7.4 行高line-height

7.5 文本对齐text-align

 八、背景属性

8.1 背景颜色background-color

8.2 背景图片background-image

8.3 背景平铺background-repeat

8.4 背景位置background-position

8.5 背景尺寸background-size

九、圆角矩形border-radius

9.1 基础操作

9.2 生成圆形

9.3 补充

十、元素的显示模式

10.1 块级元素

10.2 行内元素

常见的坑:如尝试给一个a标签设置宽度高度 

10.3 行内块元素inline-block,比较少见

10.4 改变显示模式

10.5 盒模型

10.6 边框border

10.6.1 基础属性

10.6.2 边框会撑大盒子

10.6.3 内边距padding

10.6.4 外边距

10.6.5  块级元素水平居中

10.6.6 垂直居中

10.7 去除浏览器默认样式

 十一、弹性布局

11.1 布局的相关概念

11.2 flex布局基本概念

11.2.1 flex布局定义

11.2.2 基础概念

11.2.3 注意事项

11.3 display:flex 设置在父元素上,开启flex布局。

11.4 justify-content:控制元素在水平方向上如何排列(主轴方向)

11.5 align-items:控制元素在垂直方向如何排列(侧轴方向).

​11.6 felx布局经典案例-圣杯布局


一、css的定义

css:层叠样式表

意思是:在同一个元素上应用多种样式,这些样式之间会产生叠加。

css的作用:能够对网页中元素的位置的排版进行像素级精准控制,实现美化页面的作用。

二、基本语法规范

选择器+{一条/n条声明}

选择器存在的目的:针对哪个元素/哪些元素设置样式(找谁)

{}:声明决定修改啥(干啥),其中,声明的属性是键值对

三、引入方式

3.1 内部样式表

通过style标签,将css代码嵌入到HTML内部。

实际应用较少,但在初学阶段较为方便。如果样式多了,就会显得比较啰嗦。

优点:可以做到样式和页面结构分离

缺点:分离的还不够彻底,尤其是CSS内容多的时候。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <style>
        div {
            color:black;
            font-size: 30px;
        }
    </style>
    <div>hello</div>
</body>
</html>

先!+enter生产代码模板,再在body标签里面输入代码。后文将只展示body标签里面的代码。

3.2 行内样式表(内联样式)

直接把样式以style属性的方式,写到元素内部。只适合写简单样式,只针对某个标签生效。

缺点:不能写太复杂的样式。这种写法优先级较高,会覆盖其他的样式

内联

c++:在编译一个被inline修饰的函数时,直接把函数里面的二进制指令给复制粘贴到调用位置,从而节省程序运行时的函数调用开销(调用的时候涉及到栈空间的变化,包括传参、记录返回值,程序跳转)

Java:由编译器自动决定是否要内联

3.3 外部样式

css单独放到一个文件xxx.css里,再使用link标签将css文件引入进来。

优点:样式和结构彻底分离

缺点:受到浏览器缓存的影响,修改之后不一定生效。 

浏览器缓存

是计算机中一种常见的提升性能的手段。

当浏览器访问一个页面的时候,会从浏览器中下载很多内容,包括但不限制于html、css、js、图片、字体、图标等等。通过网络下载,这件事情开销是比较大的,打开一个页面的时候也会比较久,加快访问速度的做法是减少下载的量。由于css、js、图片、字体等很少会改变,浏览器就会把第一次下载好的资源直接保存到本地磁盘上,如果后续再需要用到这些内容,就可以直接从磁盘上读取数据。通常情况下,从磁盘读取会比从网络读取快很多。

解决方案:

  

这些名字后面带的后缀就是为了解决这个问题。

这些后缀是16进制数据,都是程序自动生成的。如果代码不变,这些后缀也不变。如果改了代码,重新打包部署的时候就会生成新的后缀。
这个是有专门的打包工具的,例如webpack。后缀会自动生成,不太需要程序员干预

四、一些规范

4.1 大小写

css中不区分大小写,属性名都是纯小写。如果一个属性由多个单词构成,使用-来作为分割。

4.2 空格规范

冒号后面带空格,选择器和 { 直接也有一个空格

五、选择器

5.1 选择器的作用

选中页面中的标签元素。先选中元素,才能设置元素的属性。

5.2 选择器的种类

5.3 基础选择器

5.3.1 标签选择器

能快速将同一类型的标签都选择出来,但是不能差异化选择。

5.3.2 类选择器

既可以选中一类元素,也可以差异化设置。使用最多的一种。

语法细节:

被水印盖住的字是:没有任何关系

5.3.3 id选择器

5.3.4 通配符选择器

5.3.5 基础选择器总结

作用缺点
标签选择器能选中所有相同标签不能差异化选择
类选择器能选中一个或多个标签根据需求选择,最灵活常用
id选择器能选中一个标签同一个id在一个html中只能出现一次
通配符选择器选择所有标签特殊情况下使用

5.4 复合选择器

5.4.1 后代选择器(包含选择器)

选中父元素中的某个子元素

语法:元素1 元素2 {样式说明}

元素1和元素2要使用空格分割;

元素1是父级,元素2是子级,只选择元素2,不影响元素1.

 

5.4.2 子选择器

和后代选择器类似,但是只能选择子标签。

语法:元素1>元素2 {样式说明}

注意:使用>进行分割,只能选亲儿子,不选孙子元素

5.4.3 并集选择器

用于选择多组标签(集体声明)

语法:元素1,元素2 {样式说明}

注意:通过逗号分割多个元素、表示同时选中元素1和元素2、任何基础选择器都可以使用并集选择器、并集选择器建议竖着写,每个选择器占一行,最后一个选择器不能加逗号

 5.4.4 伪类选择器

(1)链接伪类选择器

a:link:选择未被访问过的链接

a:visited:选择已经被访问过的链接

a:hover:选择鼠标指针悬停上的链接

a:active:选择活动链接(鼠标按下了但是未弹起)

Q:如何让一个已经被访问的链接恢复成未被访问的状态?

清除历史记录即可。ctrl+shift+delete

Q:注意事项

按照LVHA的顺序书写,例如把active拿到前面去,就会导致active失效。

浏览器的a标签都有默认样式,一般实际开发中都需要单独制定样式。

实际开发中主要给链接做一个样式,然后给hover做一个样式。link、visited、active用的不多。

(2):force伪类选择器

选取获取焦点的input表单元素

 被选中表单的字体是红色的。

5.4.5 复合选择器总结

作用注意事项
后代选择器选中后代元素可以是孙子元素
子选择器选择子元素只能选亲儿子,不能选孙子
并集选择器选中相同样式的元素更好的做到代码重用
链接伪类选择器选中不同状态的链接重点掌握a:hover的用法
:focuse伪类选择器选择被选中的元素重点掌握input:focus的用法

六、字体属性

6.1 设置字体font-family

字体名称可以用中文, 但是不建议

多个字体之间使用逗号分隔. (从左到右查找字体, 如果都找不到, 会使用默认字体. )

如果字体名有空格, 使用引号包裹.

建议使用常见字体, 否则兼容性不好.

6.2 大小font-size

不同的浏览器默认字号不一样, 最好给一个明确值. (chrome 默认是 16px)

可以给 body 标签使用 font-size

注意单位 px 不要忘记.

标题标签需要单独指定大小

实际上设置的是字体中字符框的高度,实际的字符字形可能比这些框高或矮 

6.3 粗细font-weight

可以使用数字表示粗细,700==bold,400是不变粗,即400==normal,

字体的取值范围是100-900

6.4 文字样式font-style

设置倾斜:italic

取消倾斜:normal

在实际中,很少把某个文字变倾斜,但是经常要把em改成不倾斜

七、文本属性

7.1 文本颜色color

color属性的取值:

①预定义的颜色值(直接是单词)。

②十六进制形式(有一种简化表示方法,如#AABBCC-》ABC,三个部分必须同时满足叠字情况,才可以省略)。

③RGB方式。

7.2 文本装饰text-decoration

常用取值:

underline:下划线,常用

none:啥都没有,可以给a标签去掉下划线。

overline:上划线,不常用

line-through:删除线,不常用

7.3 文本缩进text-indent

控制段落首行的缩进,其他行不受影响。

单位可以用px或者em。

使用px作为单位,因为不知道一个字是由多少像素确定的,所以无法将缩进调整为多少px。可以使用font-size确定字体的大小,再设置缩进。

更推荐使用em。em是一种相对单位。1em表示和当前字体一样大,假设1em=7px,2em=14px。

7.4 行高line-height

行高指的是上下文本行之间的基线距离。

行高=上边距+下边距+字体大小=文字大小+行间距

行高也可以取normal等值。具体取值与浏览器有关。

行高和元素高度相同,可以实现文字居中对齐。

7.5 文本对齐text-align

center:居中对齐

left:左对齐

right:右对齐

 八、背景属性

8.1 背景颜色background-color

默认是transparent透明的,可以通过设置颜色的方式修改。

8.2 背景图片background-image

background-image:url(·····)

url:不要漏写 ,可以是绝对路径也可以是相对路径,url可以加上引号也可以不加

8.3 背景平铺background-repeat

取值:

repeat:平铺(默认)

no-repeat:不平铺

repeat-x:水平平铺

repeat-y:垂直平铺

背景颜色和背景照片可以同时存在。背景图片在背景颜色的上方。

8.4 背景位置background-position

参数有三种风格:

1. 方位名词: (top, left, right, bottom)

2. 精确单位: 坐标或者百分比(以左上角为原点)

3. 混合单位: 同时包含方位名词和精确单位

如果参数的两个值都是方位名词, 则前后顺序无关. (top left 和 left top 等效)

如果只指定了一个方位名词, 则第二个默认居中. (left 则意味着水平居中, top 意味着垂直居中. )

如果参数是精确值, 则的的第一个肯定是 x , 第二个肯定是 y. (100 200 意味着 x 为 100, y 为 200

如果参数是精确值, 且只给了一个数值, 则该数值一定是 x 坐标, 另一个默认垂直居中.

如果参数是混合单位, 则第一个值一定为 x, 第二个值为 y 坐标. (100 center 表示横坐标为 100, 垂
直居中)

8.5 背景尺寸background-size

可以填具体的数值: 如 40px 60px 表示宽度为 40px, 高度为 60px

也可以填百分比: 按照父元素的尺寸设置.

cover: 把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无
法显示在背景定位区域中。

contain:把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域.

九、圆角矩形border-radius

9.1 基础操作

border-radius:length,length是内切圆的半径。

9.2 生成圆形

让 border-radius的值为正方形宽度的一半即可。

9.3 补充

border-radius是一个复合写法,实际上可以针对四个角分别设置。

border-top-left-radius、border-top-right-radius、border-bottom-right-radius、border-bottom-left-radius(顺时针排列)

十、元素的显示模式

10.1 块级元素

常见的元素:h1-h6、p、div、ul、ol、li······

特点:

注意:文字类的元素内不能使用块级元素,如p标签主要用于存放文字,内部不能存放块级元素,尤其是div

10.2 行内元素

常见元素:a、strong、b、em、i、del、s、ins、u、span····

特点:

常见的坑:如尝试给一个a标签设置宽度高度 

注意:a标签中不能再放a标签,虽然chrome不报错,但是最好不要这样做

a标签里面可以放块级元素,但是更建议先把a转换为块级元素

10.3 行内块元素inline-block,比较少见

典型的就是img标签,不独占一行、可以设置尺寸

10.4 改变显示模式

使用display把行内元素和行内块元素转为块级。但是很少将块级元素转为行内元素。

10.5 盒模型

html元素,都是一个个矩形盒子。

这个规则主要针对块级元素,对于行内元素不考虑。

10.6 边框border

10.6.1 基础属性

10.6.2 边框会撑大盒子

设置的width和height是不包含边框的部分。如果没有标签,此时的尺寸就和设置的是一样的。如果有了边框,整个元素就会被撑大了。这种设定是非常不方便的,在进行页面布局时计算起来是非常麻烦的。更希望在设置尺寸时能够包含边框

box-sizing:默认值是content-box,尺寸不包含边框。将其设置为border-box,就可以解决该问题。

10.6.3 内边距padding

默认内容是顶着边框来放置的,可以使用padding设置内容和边框之间的距离。

给四个方向都加上内边距:

padding-top、padding-bottom、padding-left、padding-right

内边距也会撑大盒子,采用box-sizing:border-box可以使内边距不再撑大盒子

10.6.4 外边距

10.6.5  块级元素水平居中

居中的前提:

指定宽度(如果不指定宽度,默认和父元素一致)、把水平margin设置为auto

margin:0 auto 是块级元素居中

text-align:center,是让行内或者行内块元素居中的

10.6.6 垂直居中

不能使用上下margin为auto的方式。

在css里面,将子元素设置为垂直居中是个比较复杂的事情,暂时不做介绍。

10.7 去除浏览器默认样式

浏览器会给元素加上一些默认的样式,尤其是内外边距。不同的浏览器的默认样式存在差别。为了保证代码在不同的浏览器上都能按照统一的样式显示,往往会去除浏览器的默认样式。

 十一、弹性布局

11.1 布局的相关概念

布局:是指在一个界面内,把元素放在哪个位置。布局不仅仅是页面要布局,桌面程序的开发、移动端APP的开发都涉及到布局问题。

在早期,布局就是单纯的计算位置的坐标,非常不便,容易算错,一旦窗口大小发生了变化,页面就变了。1991年,出现了两个黑马,一个是QT一个是MFC。

常用的布局:表格、float(一种线性布局,坑比较多)、flex(功能更强大的线性布局,很多网页都在使用)、grid(网格布局,属于二维的布局方式,当前还没有普及)

弹性布局是页面布局的一种比较现代化的方式,在老的浏览器上是不支持的,如IE6、IE7

11.2 flex布局基本概念

11.2.1 flex布局定义

flex是flexible box的缩写,意思是弹性盒子。任何一个HTML元素,都可以指定为display:flex弹性布局。

flex布局的本质是给父盒子添加display:flex属性,来控制子盒子的位置和排列方式

11.2.2 基础概念

被设置为display:flex属性的元素,称为flex container。

他的所有子元素称为该容器的成员,称为flex item;孙子元素不行,可以给子元素再写一个flex。

flex item可以纵向排列,也可以横向排列,称为flex direction(主轴)

11.2.3 注意事项

当给父元素设置这个属性,此时父元素里面的元素都要遵守弹性布局规则,子元素的float、clear、vertical-align都会失效。里面的子元素就不再按照块级元素、行内元素的规则来排列了。

11.3 display:flex 设置在父元素上,开启flex布局。

display:flex

11.4 justify-content:控制元素在水平方向上如何排列(主轴方向)

描述
flex-start默认值。项目位于容器的开头
flex-end项目位于容器的结尾
center项目位于容器的中央
space-between项目在行与行之间留有间隔
space-around项目在行之前、行之间和行之后留有空间

11.5 align-items:控制元素在垂直方向如何排列(侧轴方向).

描述
stretch默认值。行拉伸以占据剩余空间
center在弹性容器的中央对行打包
flex-start在弹性容器的开头对行打包
flex-end在弹性容器的结尾对行打包
space-between行均匀分布在弹性容器里
space-around行均匀分布在弹性容器里,两端各占一半

 11.6 felx布局经典案例-圣杯布局

很多很多页面,都是按照这种圣杯的方式来布局的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css1.css">
</head>
<body>
    <style>
        * {
            margin: none;
            padding: none;
            box-sizing: border-box;
        }
        .header,
        .footer {
            width: 100%;
            height: 30px;
            background-color: pink;
        }
        .body {
            width: 100%;
            height: 240px;
            display: flex;
            justify-content: space-between;
        }
        .body .left{
            width: 30px;
            background-color: gray;
        }
        .body .right{
            width: 30px;
            background-color: green;
        }
        .body .center{
            width: calc(100% - 60px);
            background-color: rgb(208, 100, 100);
        }
    </style>
    <div class="header">顶部</div>
    <div class="body">
        <div class="left">左边</div>
        <div class="center">中间</div>
        <div class="right">右边</div>
    </div>
    <div class="footer">底部</div>
</body>
</html>

 calc:处理比例和固定值混合运算的情况。如果直接按比例,不需要是由calc。但是在实际开发中,大部分情况下左右导航都是要固定宽度的。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘减减

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值