CSS样式-程序员宅基地

技术标签: Web开发  css  前端  html  

目录

1.基础选择器

1.1.标签选择器

1.2.类选择器

1.3.id选择器

1.4.通配符选择器

2.字体和文本样式

2.1.字体样式

2.1.1.字体大小

2.1.2.字体粗细

2.1.3.字体样式(是否倾斜)

2.1.4.常见字体系列(了解)

2.1.5.字体系列font-family

2.1.6.字体font相关属性的连写

2.2.文本样式

2.2.1.文本缩进

2.2.2.文本水平对齐方式

2.2.3.文本修饰

2.3.line-height行高

3.选择器进阶

3.1.复合选择器

3.1.1.后代选择器:空格

3.1.2.子代选择器:>

3.2.并集选择器

3.3.交集选择器

3.4.hover伪类选择器

3.5.Emmet语法

4.背景相关属性

4.1.背景颜色

4.2.背景图片

4.3.背景平铺

4.4.背景位置

4.5.背景相关属性连写

4.6.(拓展)img标签和背景图片的区别

5.元素显示模式

5.1.块级元素

5.2.行内元素

5.3.行块内元素

5.4.元素显示模式转换

5.5.拓展

6.CSS特性

6.1.继承性

6.2.层叠性

6.3.优先级

7.盒子模型

7.1.内容区域的宽度和高度

7.2.边框(border) 

7.2.1.边框(border)- 单个属性

7.2.2.边框(border)- 连写形式

7.2.3.边框(border)- 单方向设置

7.2.4.盒子实际大小初级计算公式

7.2.5盒子实际大小初级计算公式:

7.3.内边距(padding)

7.3.1.内边距(padding)- 取值

7.3.2.内边距(padding)- 单方向设置

7.3.3.盒子实际大小终极计算公式

7.3.4.CSS3盒子模型(自动内减)

7.4.外边距(margin)

7.4.1.外边距(margin)- 取值

7.4.2.外边距(margin)- 单方向设置

7.4.3.清除默认内外边距

7.4.4.外边距折叠现象- ① 合并现象

7.4.5.外边距折叠现象-② 塌陷现象

7.4.6.行内元素的margin和padding无效情况

8.CSS布局

8.1.结构伪类选择器

8.2.伪元素

8.3.标准流

8.4.浮动

8.4.1.浮动的代码

8.4.2.浮动的特点

8.4.3.清除浮动

8.5.定位

8.5.1.定位的基本使用步骤

8.5.2.静态定位

8.5.3.相对定位

8.5.4.绝对定位

8.5.5.子绝父相

8.5.6.固定定位

8.5.7.元素的层级关系

8.6.装饰

8.6.1.垂直对齐方式

8.6.2.光标类型

8.6.3.边框圆角

8.6.4.overflow溢出部分显示

8.6.5.元素本身隐藏

8.6.6.(拓展)元素整体透明度

8.6.7.(拓展)边框合并

8.6.8.(拓展)用CSS画三角形技巧(面试题)

8.7.选择器拓展

8.7.1.链接伪类选择器

8.7.2.焦点伪类选择器

8.7.3.属性选择器

9.网页制作流程

9.1.根目录

9.2.布局流程


 

  • CSS:层叠样式表(Cascading style sheets)
  • 给页面中的HTML标签设置样式

1.基础选择器

1.1.标签选择器

结构:标签名 { css属性名:属性值; } 

作用:通过标签名,找到页面中所有这类标签,设置样式

注意点: 

  1. 标签选择器选择的是一类标签,而不是单独某一个
  2. 标签选择器无论嵌套关系有多深,都能找到对应的标签

1.2.类选择器

结构:.类名 { css属性名:属性值; } 

作用:通过类名,找到页面中所有带有这个类名的标签,设置样式

注意点: 

  1. 所有标签上都有class属性,class属性的属性值称为类名(类似于名字)
  2. 类名可以由数字、字母、下划线、中划线组成,但不能以数字或者中划线开头
  3. 一个标签可以同时有多个类名,类名之间以空格隔开
  4. 类名可以重复,一个类选择器可以同时选中多个标签

1.3.id选择器

结构:#id属性值 { css属性名:属性值; } 

作用:通过id属性值,找到页面中带有这个id属性值的标签,设置样式

注意点:

  1. 所有标签上都有id属性
  2. id属性值类似于身份证号码,在一个页面中是唯一的,不可重复的!
  3. 一个标签上只能有一个id属性值 
  4. 一个id选择器只能选中一个标签

补充:类与id的区别

class类名与id属性值的区别 

  • class类名相当于姓名,可以重复,一个标签可以同时有多个class类名
  • id属性值相当于身份证号码,不可重复,一个标签只能有一个id属性值

类选择器与id选择器的区别 

  • 选择器以 . 开头
  • id选择器以 # 开头

实际开发的情况 

  • 类选择器用的最多
  • id一般配合js使用,除非特殊情况,否则不要使用id设置样式
  • 实际开发中会遇到冗余代码的抽取 (可以将一些公共的代码抽取到一个公共的类中去)

1.4.通配符选择器

结构:* { css属性名:属性值; } 

作用:找到页面中所有的标签,设置样式

注意点: 

  1. 开发中使用极少,只会在极特殊情况下才会用到
  2. 在基础班小页面中可能会用于去除标签默认的marginpadding

2.字体和文本样式

2.1.字体样式

2.1.1.字体大小

属性名:font-size

取值:数字+px

注意点:

  • 谷歌浏览器默认文字大小是16px
  • 单位需要设置,否则无效

2.1.2.字体粗细

属性名:font-weight

取值:

  • 关键字

正常 normal

加粗 bold

  • 纯数字:100~900的整百数

正常 400

加粗 700

注意点:

  • 不是所有字体都提供了九种粗细,因此部分取值页面中无变化
  • 实际开发中以:正常、加粗两种取值使用最多。

2.1.3.字体样式(是否倾斜)

属性名:font-style

取值:

正常(默认值):normal

倾斜:italic

2.1.4.常见字体系列(了解)

无衬线字体(sans-serif) 

  1. 特点:文字笔画粗细均匀,并且首尾无装饰
  2. 场景:网页中大多采用无衬线字体
  3. 常见该系列字体:黑体、Arial

衬线字体(serif) 

  1. 特点:文字笔画粗细不均,并且首尾有笔锋装饰
  2. 场景:报刊书籍中应用广泛
  3. 常见该系列字体:宋体、Times New Roman

等宽字体(monospace) 

  1. 特点:每个字母或文字的宽度相等
  2. 场景:一般用于程序代码编写,有利于代码的阅读和编写
  3. 常见该系列字体:Consolas、fira code

2.1.5.字体系列font-family

属性名:font-family 

常见取值:具体字体1,具体字体2,具体字体3,具体字体4,...,字体系列 

  • 具体字体:"Microsoft YaHei"、微软雅黑、黑体、宋体、楷体等……
  • 字体系列:sans-serif、serif、monospace等……

渲染规则: 

  1. 从左往右按照顺序查找,如果电脑中未安装该字体,则显示下一个字体
  2. 如果都不支持,此时会根据操作系统,显示最后字体系列的默认字体

注意点: 

  1. 如果字体名称中存在多个单词,推荐使用引号包裹
  2. 最后一项字体系列不需要引号包裹
  3. 网页开发时,尽量使用系统常见自带字体,保证不同用户浏览网页都可以正确显示

2.1.6.字体font相关属性的连写

属性名:font (复合属性) 

取值: 

  • font : style weight size family; 

省略要求: 

  • 只能省略前两个,如果省略了相当于设置了默认值

注意点:如果需要同时设置单独和连写形式

  • 要么把单独的样式写在连写的下面
  • 要么把单独的样式写在连写的里面

2.2.文本样式

2.2.1.文本缩进

属性名:text-indent 

取值: 

  • 数字+px 
  • 数字+em(推荐:1em = 当前标签的font-size的大小)

2.2.2.文本水平对齐方式

属性名:text-align

取值:

cea9596a15df49519460fb0bc33e76b6.png 

 

注意点:

  • 如果需要让文本水平居中,text-align属性给文本所在标签(文本的父元素)设置

2.2.3.文本修饰

属性名:text-decoration

取值:

31cb60f7bf314d81b0f43a313c090e3a.png 

 

注意点:

  • 开发中会使用text-decoration:none;清除a标签默认的下划线

2.3.line-height行高

作用:控制一行的上下行间距

属性名:line-height 

取值: • 数字+px • 倍数(当前标签font-size的倍数) 

应用: 

  1. 让单行文本垂直居中可以设置 line-height : 文字父元素高度 
  2. 网页精准布局时,会设置 line-height : 1 可以取消上下间距

行高与font连写的注意点: 

  • 如果同时设置了行高和font连写,注意覆盖问题
  • font : style weight size/line-height family ;

拓展 颜色常见取值(了解)

属性名: 

  • 如:文字颜色:color
  • 如:背景颜色:background-color

属性值:

de0c2baf0ee74a8f86ade6038843d8f7.png

 

标签水平居中方法总结 margin: 0 auto

如果需要让div、p、h(大盒子)水平居中,可通过margin: 0 auto;实现

注意点:

  • 如果需要让div、p、h水平居中,直接给当前元素本身设置即可
  • margin: 0 auto 一般针对于固定宽度的盒子,如果大盒子没有设置宽度,此时会默认占满父元素的宽度

3.选择器进阶

3.1.复合选择器

3.1.1.后代选择器:空格

作用:根据 HTML 标签的嵌套关系,选择父元素 后代中 满足条件的元素

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

结果: 

  • 在选择器1所找到标签的后代(儿子、孙子、重孙子…)中,找到满足选择器2的标签,设置样式

注意点: 

  1. 后代包括:儿子、孙子、重孙子……
  2. 后代选择器中,选择器与选择器之前通过 空格 隔开

3.1.2.子代选择器:>

作用:根据 HTML 标签的嵌套关系,选择父元素 子代中 满足条件的元素

选择器语法:选择器1 > 选择器2 { css } 

结果: 

  • 在选择器1所找到标签的子代(儿子)中,找到满足选择器2的标签,设置样式

注意点:

  1. 子代只包括:儿子
  2. 子代选择器中,选择器与选择器之前通过 > 隔开

3.2.并集选择器

并集选择器:,

作用:同时选择多组标签,设置相同的样式

选择器语法:选择器1 , 选择器2 { css } 

结果: 

  • 找到 选择器1 和 选择器2 选中的标签,设置样式

注意点: 

  1. 并集选择器中的每组选择器之间通过 , 分隔
  2. 并集选择器中的每组选择器可以是基础选择器或者复合选择器
  3. 并集选择器中的每组选择器通常一行写一个,提高代码的可读

3.3.交集选择器

交集选择器:紧挨着

作用:选中页面中 同时满足 多个选择器的标签

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

结果: 

  • (既又原则)找到页面中  能被选择器1选中, 能被选择器2选中的标签,设置样式

注意点: 

  1. 交集选择器中的选择器之间是紧挨着的,没有东西分隔
  2. 交集选择器中如果有标签选择器,标签选择器必须写在最前面

3.4.hover伪类选择器

作用:选中鼠标悬停在元素上的状态,设置样式

选择器语法:选择器:hover { css } 

注意点: 

  • 伪类选择器选中的元素的某种状态

3.5.Emmet语法

作用:通过简写语法,快速生成代码

语法: 

  • 类似于刚刚学习的选择器的写法

7eb07ff10d4147c993015b62ed79cedd.png

 

4.背景相关属性

4.1.背景颜色

属性名:background-color(bgc) 

属性值: 

  • 颜色取值:关键字、rgb表示法、rgba表示法、十六进制……

注意点: 

  • 背景颜色默认值是透明: rgba(0,0,0,0) 、transparent
  • 背景颜色不会影响盒子大小,并且还能看清盒子的大小和位置,一般在布局中会习惯先给盒子设置背景颜色

4.2.背景图片

属性名:background-image(bgi) 

属性值: background-image: url('图片的路径')

注意点: 

  • 背景图片中url中可以省略引号
  • 背景图片默认是在水平和垂直方向平铺的
  • 背景图片仅仅是指给盒子起到装饰效果,类似于背景颜色,是不能撑开盒子的

4.3.背景平铺

属性名:background-repeat(bgr)

属性值:

d54a486e549d4f12bf0d0cef1ec23b18.png 

 

4.4.背景位置

属性名:background-position(bgp)

属性值:background-position: 水平方向位置 垂直方向位置;

1839bf40428a4a35bb03686da6b02c20.png 

 

注意点:

  • 方位名词取值和坐标取值可以混使用,第一个取值表示水平,第二个取值表示垂直

4.5.背景相关属性连写

属性名:background(bg) 

属性值: 

  • 单个属性值的合写,取值之间以空格隔开

书写顺序: 

  • 推荐:background:color image repeat position 

省略问题: 

  • 可以按照需求省略
  • 特殊情况:在pc端,如果盒子大小和背景图片大小一样,此时可以直接写 background:url() 

注意点 

  • 如果需要设置单独的样式和连写
  • ① 要么把单独的样式写在连写的下面
  • ② 要么把单独的样式写在连写的里面

4.6.(拓展)img标签和背景图片的区别

需求:需要在网页中展示一张图片的效果?

方法一:直接写上img标签即可 

  • img标签是一个标签,不设置宽高默认会以原尺寸显示

方法二:div标签 + 背景图片 

  • 需要设置div的宽高,因为背景图片只是装饰的CSS样式,不能撑开div标签

5.元素显示模式

5.1.块级元素

显示特点: 

  1. 独占一行(一行只能显示一个)
  2. 宽度默认是父元素的宽度,高度默认由内容撑开
  3. 可以设置宽高

代表标签: 

  • div、p、h系列、ul、li、dl、dt、dd、form、header、nav、footer……

5.2.行内元素

显示特点: 

  1. 一行可以显示多个
  2. 宽度和高度默认由内容撑开
  3. 不可以设置宽高

代表标签: 

  • a、span 、b、u、i、s、strong、ins、em、del……

5.3.行内块元素

显示特点: 

  1. 一行可以显示多个
  2. 可以设置宽高

代表标签: 

  • input、textarea、button、select……
  • 特殊情况:img标签有行内块元素特点,但是Chrome调试工具中显示结果是inline

5.4.元素显示模式转换

目的:改变元素默认的显示特点,让元素符合布局要求

语法:

263f59a70ffe4540901ad0e7bd07fb6d.png

 

5.5.拓展

1.HTML嵌套规范注意点

  1. 块级元素一般作为大容器,可以嵌套:文本、块级元素、行内元素、行内块元素等等……

但是:p标签中不要嵌套div、p、h等块级元素 

  1. a标签内部可以嵌套任意元素 

但是:a标签不能嵌套a标签

2.居中方法总结

8fa4ad26763544f68b67d2d8524bfa98.png

 

6.CSS特性

6.1.继承性

特性:子元素有默认继承父元素样式的特点(子承父业

可以继承的常见属性(文字控制属性都可以继承) 

  1. color 
  2. font-style、font-weight、font-size、font-family 
  3. text-indent、text-align 
  4. line-height 
  5. …… 

注意点: 

  • 可以通过调试工具判断样式是否可以继承

(拓展)继承的应用

好处:可以在一定程度上减少代码

常见应用场景: 

  1. 可以直接给ul设置 list-style:none 属性,从而去除列表默认的小圆点样式
  2. 直接给body标签设置统一的font-size,从而统一不同浏览器默认文字大小

(拓展)继承失效的特殊情况

如果元素有浏览器默认样式,此时继承性依然存在,但是优先显示浏览器的默认样式 

  1. a标签的color会继承失效
    • 其实color属性继承下来了,但是被浏览器默认设置的样式给覆盖掉了
  2. h系列标签的font-size会继承失效
    • 其实font-size属性继承下来了,但是被浏览器默认设置的样式给覆盖掉了

6.2.层叠性

特性: 

  • 给同一个标签设置不同的样式 → 此时样式会层叠叠加 → 会共同作用在标签上
  • 给同一个标签设置相同的样式 → 此时样式会层叠覆盖 → 最终写在最后的样式会生效

注意点: 

  • 当样式冲突时,只有当选择器优先级相同时,才能通过层叠性判断结果

多行内容同时编辑:alt+shift

6.3.优先级

特性:不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低选择器样式

优先级公式: 

继承 < 通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important 

注意点: 

  1. !important写在属性值的后面,分号的前面!
  2. !important不能提升继承的优先级,只要是继承优先级最低!
  3. 实际开发中不建议使用 !important 。

权重叠加计算

场景:如果是复合选择器,此时需要通过权重叠加计算方法,判断最终哪个选择器优先级最高会生效

权重叠加计算公式:(每一级之间不存在进位) 

4af6d9f80b1c41bbbd185eff4aed07ed.png

 

比较规则: 

  1. 先比较第一级数字,如果比较出来了,之后的统统不看 2
  2. 如果第一级数字相同,此时再去比较第二级数字,如果比较出来了,之后的统统不看
  3. ……
  4. 如果最终所有数字都相同,表示优先级相同,则比较层叠性(谁写在下面,谁说了算!)

注意点:

  • !important如果不是继承,则权重最高,天下第一!

(拓展)查错流程(遇到样式出不来,要学会通过调试工具找错)

68a907c48ff441cb918bd66f3a885728.png

 

7.盒子模型

7.1.内容区域的宽度和高度

作用:利用 width 和 height 属性默认设置是盒子 内容区域 的大小

属性:width / height 

常见取值:数字+px

6dbeb5b6f188434e82781664d7b2df55.png

 

7.2.边框(border) 

7.2.1.边框(border)- 单个属性

作用:给设置边框粗细、边框样式、边框颜色效果

单个属性:

6761634b8ad54aff940fd7465648a61a.png

 

7.2.2.边框(border)- 连写形式

属性名:border

属性值:单个取值的连写,取值之间以空格隔开

  • 如:border : 10px solid red;

快捷键:bd + tab

7.2.3.边框(border)- 单方向设置

场景:只给盒子的某个方向单独设置边框

属性名:border - 方位名词

属性值:连写的取值

7.2.4.盒子实际大小初级计算公式

需求:盒子尺寸 400*400,背景绿色,边框10px 实线 黑色,如何完成?

  • 注意点: ① 设置width和height是内容的宽高!② 设置border会撑大盒子!

7.2.5盒子实际大小初级计算公式:

  • 盒子宽度 = 左边框 + 内容宽度 + 右边框
  • 盒子高度 = 上边框 + 内容高度 + 下边框

解决:当盒子被border撑大后,如何满足需求?

  • 解决:计算多余大小,手动在内容中减去(手动内减)

49921c5b0e4742df9442122455ecd79a.png 

 

7.3.内边距(padding)

7.3.1.内边距(padding)- 取值

作用:设置 边框 与 内容区域 之间的距离

属性名:padding 

常见取值:

6ef3239e0f1a43cb8f126b46ccaa3016.png

 

记忆规则:从上开始赋值,然后顺时针赋值,如果设置赋值的,看对面的!!

7.3.2.内边距(padding)- 单方向设置

场景:只给盒子的某个方向单独设置内边距

属性名:padding - 方位名词 

属性值:数字 + px

7.3.3.盒子实际大小终极计算公式

需求:盒子尺寸300*300,背景粉色,边框10px实线黑色,上下左右20px的内边距,如何完成?

  • 注意点:① 设置width和height是内容的宽高!② 设置border会撑大盒子 ③ 设置padding会撑大盒子

盒子实际大小终极计算公式: 

  • 盒子宽度 = 左边框 + 左padding + 内容宽度 + 右padding + 右边框
  • 盒子高度 = 上边框 + 上padding + 内容宽度 + 下padding + 下边框

解决:当盒子被border和padding撑大后,如何满足需求?

  • 自己计算多余大小,手动在内容中减去(手动内减)

7.3.4.CSS3盒子模型(自动内减)

需求:盒子尺寸300*300,背景粉色,边框10px实线黑色,上下左右20px的内边距,如何完成?

  • 给盒子设置borderpadding时,盒子会被撑大,如果不想盒子被撑大?

解决方法  :手动内减 

  • 操作:自己计算多余大小,手动在内容中减去
  • 缺点:项目中计算量太大,很麻烦

解决方法  :自动内减 

  • 操作:给盒子设置属性 box-sizing : border-box ; 即可
  • 优点:浏览器会自动计算多余大小,自动在内容中减去

7.4.外边距(margin)

7.4.1.外边距(margin)- 取值

作用:设置边框以外,盒子与盒子之间的距离

属性名:margin 

常见取值:

554115b9abca456ea9c75d101fd9ca05.png 

 

记忆规则:从上开始赋值,然后顺时针赋值,如果设置赋值的,看对面的!!

7.4.2.外边距(margin)- 单方向设置

场景:只给盒子的某个方向单独设置外边距

属性名:margin - 方位名词 

属性值:数字 + px

应用:

121673897935447f8a649562d31da6f4.png

 

7.4.3.清除默认内外边距

场景:浏览器会默认给部分标签设置默认的marginpadding,但一般在项目开始前需要先清除这些标签默认的 marginpadding,后续自己设置

  • 比如:body标签默认有margin:8px 
  • 比如:p标签默认有上下的margin 
  • 比如:ul标签默认由上下的marginpadding-left 
  • ……

解决方法:

21c1987644e44ee7bef008a3b91818ee.png

 

7.4.4.外边距折叠现象-  合并现象

场景:垂直布局 的 块级元素,上下的margin会合并

结果:最终两者距离为margin的最大值

解决方法:避免就好

  • 只给其中一个盒子设置margin即可

7.4.5.外边距折叠现象- 塌陷现象

场景: 互相嵌套 的 块级元素,子元素的 margin-top 会作用在父元素上

结果:导致父元素一起往下移动

解决方法: 

  1. 给父元素设置border-top 或者 padding-top(分隔父子元素的margin-top
  2. 给父元素设置overflow:hidden 
  3. 转换成行内块元素
  4. 设置浮动

7.4.6.行内元素的margin和padding无效情况

场景:给行内元素设置marginpadding

结果: 

  1. 水平方向的marginpadding布局中有效!
  2. 垂直方向的marginpadding布局中无效!

8.CSS布局

8.1.结构伪类选择器

目标:能够使用 结构伪类选择器 在HTML中定位元素

作用与优势: 

  1. 作用:根据元素在HTML中的结构关系查找元素
  2. 优势:减少对于HTML中类的依赖,有利于保持代码整洁
  3. 场景:常用于查找某父级选择器中的子元素

选择器:

bd0ddf6d41f442309955d2af01333972.png

 

注意点:

00b0fc1f694f4feab2201c9170c4147f.png

 

n的注意点: 

  1. n为:0、1、2、3、4、5、6、……
  2. 通过n可以组成常见公式

3e4489a67bb945a195b18717bf1c2c2a.png 

 

(了解)nth-of-type结构伪类选择器

选择器: 

db791d6c297442278018bd94f0ebd7f5.png

 

区别: 

:nth-child  直接在所有孩子中数个数

:nth-of-type  先通过该 类型 找到符合的一堆子元素,然后在这一堆子元素中数个数

8.2.伪元素

目标:能够使用 伪元素 在网页中创建内容

伪元素:一般页面中的非主体内容可以使用伪元素

区别: 

  1. 元素:HTML 设置的标签
  2. 伪元素:由 CSS 模拟出的标签效果

种类:

d8c0ab24842147e8bfaa10b8f9f5ab6c.png

 

注意点: 

  1. 必须设置content属性才能生效
  2. 伪元素默认是行内元素

8.3.标准流

目标:能够认识 标准流 的默认排布方式及其特点

标准流:又称文档流,是浏览器在渲染显示网页内容时默认采用的一套排版规则,规定了应该以何种方式排列元素

常见标准流排版规则: 

  1. 块级元素:从上往下,垂直布局,独占一行
  2. 行内元素 或 行内块元素:从左往右,水平布局,空间不够自动折行

8.4.浮动

8.4.1.浮动的代码

属性名:float

属性值:

6da7f6f6470345f39f35aa9f24f03c14.png 

 

8.4.2.浮动的特点

  1. 浮动元素会脱离标准流(简称:脱标),在标准流中不占位置
    • 相当于从地面飘到了空中
  2. 浮动元素比标准流高半个级别,可以覆盖标准流中的元素
  3. 浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动
  4. 浮动元素有特殊的显示效果
    • 一行可以显示多个
    • 可以设置宽高

注意点: 

  • 浮动的元素不能通过text-align:center或者margin:0 auto

书写网页导航步骤:

  1. 清除默认的marginpadding 
  2. 找到ul,去除小圆点
  3. 找到li标签,设置浮动让li一行中显示
  4. 找到a标签,设置宽高 → a标签默认是行内元素,默认不能设置宽高??
    • 方法一:给a标签设置 display : inline-block 
    • 方法二:给a标签设置 display : block 
    • 方法三:给a设置 float : left

8.4.3.清除浮动

目标:能够认识 清除浮动的目的,并且能够使用 清除浮动的方法

8.4.3.1.清除浮动的方法一 直接设置父元素高度

特点: 

  • 优点:简单粗暴,方便
  • 缺点:有些布局中不能固定父元素高度。如:新闻列表、京东推荐模块

8.4.3.2.清除浮动的方法 —  额外标签法

操作:

  1. 在父元素内容的最后添加一个块级元素
  2. 给添加的块级元素设置 clear:both 

特点:

  • 缺点:会在页面中添加额外的标签,会让页面的HTML结构变得复杂

8.4.3.3.清除浮动的方法 —  单伪元素清除法

操作:用伪元素替代了额外标签

  •  基本写法                                                                         补充写法

 

3538df185bab49ef84262a13d50a1ec5.png

特点: 

  • 优点:项目中使用,直接给标签加类即可清除浮动

8.4.3.4.清除浮动的方法 —  双伪元素清除法

操作: 

25f61e44753346d6b70a890e3efe3d12.png 

 

特点: 

  • 优点:项目中使用,直接给标签加类即可清除浮动

8.4.3.5.清除浮动的方法 —  给父元素设置overflow : hidden

操作: 

  • 直接给父元素设置 overflow : hidden

特点: 

  • 优点:方便

(拓展补充)BFC的介绍

块格式化上下文(Block Formatting Context):BFC 

  • 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

创建BFC方法: 

  1. html标签是BFC盒子
  2. 浮动元素是BFC盒子
  3. 行内块元素是BFC盒子
  4. overflow属性取值不为visible。如:auto、hidden… 
  5. ……

BFC盒子常见特点: 

  1. BFC盒子会默认包裹住内部子元素(标准流、浮动)→ 应用:清除浮动
  2. BFC盒子本身与子元素之间不存在margin的塌陷现象 → 应用:解决margin的塌陷
  3. ……

8.5.定位

8.5.1.定位的基本使用步骤

设置定位方式 

  • 属性名:position 
  • 常见属性值:

cb6dd8c5e2bb4a0fa0684306e06ea675.png 

 

设置偏移值

偏移值设置分为两个方向,水平和垂直方向各选一个使用即可 

选取的原则一般是就近原则 (离哪边近用哪个)

93e2bd63d3944de4b689b977d0ca6958.png

 

8.5.2.静态定位

介绍:静态定位是默认值,就是之前认识的标准流。

代码: position : static

注意点: 

  1. 静态定位就是之前标准流,不能通过方位属性进行移动
  2. 之后说的定位不包括静态定位,一般特指后几种:相对、绝对、固定

8.5.3.相对定位

介绍:自恋型定位,相对于自己之前的位置进行移动

代码: position : relative;

特点: 

  1. 需要配合方位属性实现移动
  2. 相对于自己原来位置进行移动
  3. 在页面中占位置 → 没有脱标

应用场景: 

  1. 配合绝对定位组CP(子绝父相) 
  2. 用于小范围的移动

8.5.4.绝对定位

介绍:拼爹型定位,相对于非静态定位的父元素进行定位移动

代码: position : absolute

特点: 

  1. 需要配合方位属性实现移动
  2. 默认相对于浏览器可视区域进行移动
  3. 在页面中不占位置 → 已经脱标

应用场景: 

  • 配合绝对定位组CP(子绝父相)

8.5.5.子绝父相

场景:让子元素相对于父元素进行自由移动

含义: 

  • 子元素:绝对定位
  • 父元素:相对定位

子绝父相好处: 

  • 父元素是相对定位,则对网页布局影响最小

8.5.6.固定定位

介绍:死心眼型定位,相对于浏览器进行定位移动

代码:position : fixed; 

特点: 

  1. 需要配合方位属性实现移动
  2. 相对于浏览器可视区域进行移动
  3. 在页面中不占位置 → 已经脱标

应用场景: 

  • 让盒子固定在屏幕中的某个位置

8.5.7.元素的层级关系

元素层级问题

不同布局方式元素的层级关系: 

  • 标准流 < 浮动 < 定位

不同定位之间的层级关系: 

  • 相对、绝对、固定默认层级相同
  • 此时HTML中写在下面的元素层级更高,会覆盖上面的元素

更改定位元素的层级

场景:改变定位元素的层级

属性名:z-index 

属性值:数字 

  • 数字越大,层级越高

8.6.装饰

8.6.1.垂直对齐方式

属性名:vertical-align 

属性值:

d91f2accbb2e4e34a1b1d64320f7483e.png 

 

(拓展)项目中 vertical-align 可以解决的问题

  1. 文本框和表单按钮无法对齐问题
  2. inputimg无法对齐问题
  3. div中的文本框,文本框无法贴顶问题
  4. div不设高度由img标签撑开,此时img标签下面会存在额外间隙问题
  5. 使用line-heightimg标签垂直居中问题

注意点: 

  • 学习浮动之后,不推荐使用行内块元素让div一行中显示,因为可能会出现垂直对齐问题
  • 推荐优先使用浮动完成效果

8.6.2.光标类型

场景:设置鼠标光标在元素上时显示的样式

属性名:cursor 

常见属性值:

764011087c504842b8201aac53683d31.png

 

8.6.3.边框圆角

场景:让盒子四个角变得圆润,增加页面细节,提升用户体验

属性名:border-radius 

常见取值:数字+px 、百分比 

原理:

ca5e6673db2642e7bd8ecd80783eecef.png 

 

赋值规则:从左上角开始赋值,然后顺时针赋值,没有赋值的看对角!

8.6.4.overflow溢出部分显示

溢出部分:指的是盒子 内容部分 所超出盒子范围的区域

场景:控制内容溢出部分的显示效果,如:显示、隐藏、滚动条……

属性名:overflow 

常见属性值:

85d6f03fdf19455a9680f3d00d4c87f4.png

 

8.6.5.元素本身隐藏

场景:让某元素本身在屏幕中不可见。如:鼠标:hover之后元素隐藏

常见属性: 1. visibility:hidden 2. display:none

区别: 

  1. visibility:hidden 隐藏元素本身,并且在网页中 占位置
  2. display:none 隐藏元素本身,并且在网页中 不占位置

注意点: 

  • 开发中经常会通过 display属性完成元素的显示隐藏切换
  • display:none;(隐藏)、 display:block;(显示)

8.6.6.(拓展)元素整体透明度

场景:让某元素整体(包括内容)一起变透明

属性名:opacity 

属性值:0~1之间的数字 

  • 1:表示完全不透明
  • 0:表示完全透明

注意点: 

  • opacity会让元素整体透明,包括里面的内容,如:文字、子元素等……

8.6.7.(拓展)边框合并

场景:让相邻表格边框进行合并,得到细线边框效果

代码:border-collapse:collapse;

8.6.8.(拓展)用CSS画三角形技巧(面试题)

场景:在网页中展示出小三角形时,除了可以使用图片外,还可以使用代码完成。

实现原理: 

  • 利用盒子边框完成

实现步骤: 

  1. 设置一个盒子
  2. 设置四周不同颜色的边框
  3. 将盒子宽高设置为0,仅保留边框
  4. 得到四个三角形,选择其中一个后,其他三角形(边框)设置颜色为透明

8.7.选择器拓展

目标:能够使用 伪类选择器 选择元素的不同状态

8.7.1.链接伪类选择器

场景:常用于选中超链接的不同状态

选择器语法:

e2dc37aaef65481b8cf2835b7a42ea7d.png

 

注意点: 

  • 如果需要同时实现以上四种伪类状态效果,需要按照 LVHA 顺序书写 记忆口诀:男盆友送了你一个 LV 包包,你开心的 HA 哈笑
  • 其中 :hover伪类选择器 使用更为频繁,常用于选择各类元素的悬停状态

8.7.2.焦点伪类选择器

场景:用于选中元素获取焦点时状态,常用于表单控件

选择器语法:

506fa7b2eec04373a1e33444c3c346f0.png 

 

效果: 

  • 表单控件获取焦点时默认会显示外部轮廓线

8.7.3.属性选择器

场景:通过元素上的HTML属性来选择元素,常用于选择 input 标签

选择器语法:

2797ae116e7f40c2b9101b0f2e9cbefa.png

 

9.网页制作流程

9.1.根目录

目标:能根据项目需求创建根目录

根目录:网站的第一级文件夹

  1. 图片文件夹: images 
  2. 样式文件夹: CSS 
  3. 首页 : index.html

a22c2174865f4de2b7ddc12bfb6ee77b.png

 

9.2.布局流程

目标: 掌握网页布局基本步骤

  1. 从外到内, 从上到下 
  2. CSS美化 
    • 宽度,高度,背景色 → 调整位置
    • 放内容 → 调整内容位置 → 调整细节(文字样式等等)

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_47574956/article/details/130012647

智能推荐

python实现批量替换目录下多个后缀为docx文档内容_python中paragraph.text.replace()-程序员宅基地

文章浏览阅读474次,点赞10次,收藏12次。然后,我们使用python-docx库中的Document类打开每个Word文档,并遍历其中的段落和表格内容,将文本中的“old_text”替换为“new_text”。为了解决这个问题,我们可以使用Python编写一个程序来实现批量替换目录下多个后缀为docx文档内容的功能。通过使用Python的os和glob模块,我们可以轻松地遍历目录下的所有文件,并对每个文件进行操作。接下来,我们可以编写Python程序来实现批量替换目录下多个后缀为docx文档内容的功能。批量替换目录下多个后缀为docx文档内容。_python中paragraph.text.replace()

ProgressDlgUtil.class(ProgressDialog使用的工具类)_android progressdialog转菊花工具类-程序员宅基地

文章浏览阅读165次。import android.app.ProgressDialog;import android.content.Context;public class ProgressDlgUtil {private static ProgressDialog progressDlg = null;/** * 启动进度条 * @param ctx 当前的activity * @param con..._android progressdialog转菊花工具类

股票加杠杆有什么要求?资金、策略与心态的三重考验-程序员宅基地

文章浏览阅读262次。投资者在决定加杠杆之前,应该充分了解自己的资金实力和风险承受能力,制定详细的投资策略和风险控制机制,并保持冷静和理性的心态。同时,投资者还应该不断学习和积累经验,提高自己的投资水平和应对风险的能力,以应对市场的不断变化和挑战。因此,投资者在决定加杠杆之前,应该对自己的资金状况进行充分的评估,确保自己有足够的资金实力和风险承受能力。其次,策略是股票加杠杆的关键。在股票市场中,加杠杆是一种常见的投资策略,它允许投资者通过借入资金来扩大自己的交易规模,以期获得更高的收益。文章来源:配查信-杠杠炒股平台实盘查询。

中国元宵节的习俗至少有12种,你知道多少?_秧歌队拜帖-程序员宅基地

文章浏览阅读849次。十五元宵闹人圆古人云:“千门开锁万灯明,正月中旬动地京”。众所周知,正月十五是元宵节,又称上元节、元夜、春灯节等,是中国民间传统节日。元宵节俗的形成有一个较长的过程,汉武帝正月上辛夜在甘泉宫祭祀“太一”的活动,被后人视作正月十五祭祀天神的先声。不过,正月十五真正作为民俗节日是在汉魏之后。东汉佛教文化的传入,对于形成元宵节俗有着重要的推动意义。关于元宵节的来..._秧歌队拜帖

优秀课件笔记之设备管理-程序员宅基地

文章浏览阅读99次。1、本文所以内容来自 著名高校课件和学生笔记(校园里面经常见到有人高价买笔记)2、任课教师不会提供参考文献,所以只能对作者表示感谢,如果引用了您的作品,可以用回复方式补充参考文献。3、我不对文章无关问题进行解答,文章内容也比较难,我也很难解答您遇到的问题,如果发现BUG可以用回复方式帮我修正。4、本课 计算机操作系统,适用于计算机操作系统课、考研本课其他部分的导航条见页面底部设备管理是操作..._get_buf(type,number)beginp(rs(type));p(s(type));pointer of buffer(number

2020电子设计竞赛G题 - 非接触物体尺寸形态测量_2020ti杯电赛g非接触物体尺寸形态测量接口如何连接-程序员宅基地

文章浏览阅读4.3k次,点赞14次,收藏116次。思路​ 题目上有三种颜色三种形状的物体, 可以先判断物体的颜色二值化后判断物体形状, 这样可以有效降低误差, 但是后来测试的时候经常会发现有误判的现象, 想到可能是因为背景嘈杂并且二值化后的图像信息会有损耗, 我开始思考为什么人类识别这些物体的成功率如此之高, 自我认为是因为我们会聚焦到一个物体并且不断找出这个物体的特征然后根据经验判断出物体是什么, 因此我设计了一个几率模型,或者说是一种擂台法则, 把在一段时间内检测到的数据进行整合得到一个几率表, 根据擂台法则得出物体的准确信息_2020ti杯电赛g非接触物体尺寸形态测量接口如何连接

随便推点

解释什么是啸叫,为什么会发生啸叫,啸叫的为何和如何防止啸叫_话筒防啸叫原理-程序员宅基地

文章浏览阅读8.7k次,点赞5次,收藏11次。声源与扩音设备之间因距离过近等问题导致能量发生自激,产生啸叫。啸叫是一种回授音。一、简单来说,啸叫产生的原因为以下三点:1、话筒与音箱同时使用。2、音响系统重放的声音能够通过空间传到话筒。3、音箱发出的声音能量足够大,话筒的拾音灵敏度足够高。二、啸叫的危害很大,主要表现在以下几个方面:1.自激时功率放大器会产生很大的功率输出,可能超出扩声设备的承受范围,烧坏功率放大器和发声设备。2.在反馈系数接近于1时,由于产生梳状滤波效应,延时声场与直达声之间的叠加,会使扩音声场比原声场在音感上变得狭窄。_话筒防啸叫原理

Xtu 1150 Assembly Line-程序员宅基地

文章浏览阅读127次。http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1150题意:任意多个ABC三个数,问最少交换多少个任意位置的两个数,能使字符窜有序分析:记录ABC的个数,one two three,循环字符窜one的个数,若one中有B,则先从two中找是否含有A 若含有则交换,若没有则找three中..._xtu.1150

理解套间(涉及进程、线程、COM线程模型)(转载)_一个进程有几个套间-程序员宅基地

文章浏览阅读1.6k次。 简序大学毕业前的最后一学期,在一家公司实习,当时的工作需要用到一些操作系统提供的组件。那时候只知道COM这个名词,并不知道到底是怎么回事,只知道上网到处找别人的源码解决自己的问题;那段日子到现在回忆起来都是灰色的,每天呆坐在电脑前,一个网站一个网站的查找自己需要的源码。但并不清楚自己到底在做什么;那时候对自己能不能成为一个程序员充满了怀疑。在实习结束返校的火车上,一夜间,我把一本《COM本质_一个进程有几个套间

Ceph集群搭建系列(二):Ceph 集群扩容_ceph集群动态扩容-程序员宅基地

文章浏览阅读3.3k次。本文是基于Ceph集群搭建系列(一):Ceph 集群搭建 来做扩容,集群拓扑结构如下:1. 添加OSD在 node1 上添加一个 osd.2。1) 创建目录$ ssh node1$ sudo mkdir /var/local/osd2$ sudo chmod 777 /var/local/osd2/$ exit2) 准备OSD$ ceph-deploy osd..._ceph集群动态扩容

WCF在https类型的网站中,web.config文件的配置方法。_web.config 配置wcf-程序员宅基地

文章浏览阅读8.6k次。关键是加粗的两行。 contract="IBOAutoApprovalWCF">_web.config 配置wcf

负载测试和压力测试有何区别?资深测试老鸟总结,一篇搞定..._负载测试和压力测试的区别-程序员宅基地

文章浏览阅读4.4k次,点赞6次,收藏40次。负载与压力测试1、负载测试:是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试;2、压力测试:是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试。例子分析1:登录接口,我们先10个用户访问,然后100个用户访问,然后1000个用户访问,关注程序的响应时间,所耗资源,直到超时或关键资源耗尽。压力测试:是指程序长时间运行的稳定性。_负载测试和压力测试的区别