网安——CSS
一、CSS基础概念
CSS有两个重要的概念,分为样式和布局
CSS的样式分为两种,一种是文字的样式,一种是盒模型的样式
CSS的另一个重要的特质就是辅助页面布局,完成HTML不能完成的功能,比如并排显示或精确定位显示
从HTML4.0开始,结构层和样式层进行了分离
前端三层:
- 结构层:HTML作用是从语义的角度讲进行网页结构的搭建(相当于建房子主题)
- 样式层:CSS作用从美观的角度讲修饰页面样式(给房子装修)
- 交互层:JavaScript作用从交互的角度讲描述页面的行为(开灯)
二、CSS常用属性
CSS常用得文字属性有三个:color、font-size、font-famliy
CSS得属性样式发生了改变由HTML的k=’v’变为了k:v;
2.1文字颜色
属性名:color
基本使用:
<p style="color:red">你好哇</p>
属性值:主要分为两种:单词表示法和颜色值(十六进制和rgba)
以蓝色为准
2.2字号
属性:font-size
属性值:常用的是以px为单位的数字值
根据浏览器的不同,有默认不同的字号大小,比如Chrome和ie默认就是16px的文字
每个浏览器都有自己最小的显示像素,比如Chrome最小字号为8px;IE浏览器最小字号是1px
<p style="font-size: 18px;">你好哇</p>
2.3字体
属性:font-family
属性值:必须以双引号包裹,属性值可以有多个,使用逗号分隔开
中文字体的常用字体属性值:微软雅黑,宋体
英文常用字体属性值:Arial,consolas
实际的字体属性是根据设计图获取,大多数浏览器默认显示字体是微软雅黑
如果页面中有中文化混合的,需要同时设置对应的字体
如果设置多个字体,使用逗号隔开,如果浏览器不识别前面的字体,会自动向后识别,中英文会分别进行加载
<p style="font-family: '微软雅黑','Arial';">你好哇nico</p>
三、盒子三属性
盒子的三属性为:width、height、background-color
width:宽带;height:高度;二者常用的属性值都是以px为单位的数值
background-color:属于background系列属性的一种,属性值和color一样分为单词和颜色值表示法
<div style="width:100px;height:100px;background-color:red"></div>
四、CSS样式表
4.1行内样式表
基本语法:
<p style="color:aqua;font-size:18px;font-family:'宋体'">你好哇</p>
引入为止:在标签的style属性中,等号后面的引号内属性CSS样式,多个属性使用分号分隔
4.2内嵌式样式表
基本语法:
<!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><style>div{background-color: yellowgreen;height: 100px;width: 100px;}p{color:rebeccapurple;font-size: 12px;}</style> </head> <body><div><p>hello</p></div> </body> </html>
书写位置:head标签的内部,title标签的下面,一对style标签内部
4.3 外链样式表
基本语法:
<!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="1.css"> </head> <body><div><p>hello</p></div> </body> </html>
- 书写位置:head标签的内部,title标签的下面,一个link内部去进行css文件引入
- link标签的作用就是引入外部文件,通过href属性,属性值是文件地址
- rel属性值如果是stylesheet,代表的就是引入样式表
- 通过引入css文件到html文件中,从而实现样式的加载
- css文件的内部不需要写任何的标签,直接属性css选择器和代码,因为css文件内部是不允许属性HTML骨架的
4.4 导入样式表(了解)
基本语法:
<!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><style>@import url(1.css);</style> </head> <body><div><p>hello</p></div> </body> </html>
- 书写位置:head标签的内部title标签下面style标签内,通过@import进行导入
- 注意:导入式必须写在style标签的最顶部
- url内部是css文件的引入地址
4.5四种样式表的区别和优缺点
样式表的名称 | 权重 | 优点 | 缺点 |
行内式样式表 | 最高 | 权重高,样式设置更精确 | 第一、结构和样式没有进行分离。 第二、不能批量修改样式 |
内嵌式样式表 | 大于导入式,等于内外链式 | 能够将CSS样式和估计进行分离,可以进行批量属性的修改 | 样式和骨架没有进行完全分离,多个html文件不能使用同一套css代码。 |
外链式样式表 | 大于导入式,等于内嵌式 | 样式和骨架进行完全分离,一份css代码可以重复使用 | 如果我们写小的demo的时候,每次写外链式比较麻烦,并且看起起来不直观 |
导入式样式表 | 最低 | 样式和骨架进行完全分离,一份css代码可以重复使用 | 导入式有样式问题,引入导入式涉及到加载顺序,说白了,页面会白一下,体验不好 |
五、选择器
选择器分为两种,一种是基础选择器,一种高级选择器
基础选择器:标签选择前、id选择器、类名选择器
高级选择器:后代选择器、交集选择器、并集选择器
5.1 标签选择器
选择方法:通过标签名称去选择器
书写方法:标签名
选择范围:HTML文档中所有的同名标签
基本使用:
- 需要注意的是标签选择器无视嵌套规则,都能进行识别加载
- 用途:实现全选同名标签,可以设置公共样式
- 缺点:只能进行全选,不能进行单独的布局样式
5.2id选择器
- 通过标签上id属性进行选择
- 书写方法:#id属性值(自定义)
- 选择范围:只能选中一个标签
基本使用:
- id其实就是标签的身份证号,具有唯一性。规定一个页面中不允许有同名id属性
- 优点:id属性的权重高
- 缺点:只能实现单选
5.3类名选择器
- 通过标签上的clas属性进行选择
- 书写方法:. 匹配对应的class属性值
- 选择范围:选择所有同名clss属性标签
基本使用:
- 一个标签的class属性值可以有一个或者多个
- 多个class属性之间使用空格隔开
- 同一个对象多个属性,按照哪一个属性确定样式,根据style标签理属性样式的书写位置决定,因为程序从上到下执行
- id和class属性的命名规范:第一个字符必须是字母,后面的字符可以是字母、数字、下划线
5.4通配符选择器
- 书写方法:*
- 选择范围:选择包含html标签在内的所有标签
- 通配符*后面添加的样式,每一个标签都会加载一次
- 我们通常使用清除页面的默认样式
基本使用:
清除页面的默认内外边距
*{margin: 0;padding: 0;}
5.5 后代选择器
- 书写方法:使用空格连续链接多级选择器
- 作用:通过标签之间的后代关系去决定选择某个范围内的元素,具有精确匹配性
基本使用:
- 需要注意的是,后代关系不一定是父子关系,只要是所属关系即可、
.box li{color: red; }
5.6 交集选择器
- 作用:进行满足所有选择器条件的匹配
- 书写方法:将多个选择器连接书写,中间没有空格,不需要加任何符号
基本使用:
5.7 并集选择器
- 并集选择器有‘和’的意思,代表多个标签设置同样的属性
- 书写方法:将多个选择器使用逗号进行连接,最后一个不能加逗号
- 选择范围:多个选中标签的集合
我们看下面的结构,要将p标签和div标签里面的文字都设置成红色:
并集选择器非常灵活,可以结合多种选择器使用,就是利用逗号进行分割从而区分属性
<style>
.par li,p{
color: red;
}
</style>
上面的代码指:选择设置class为par里面的li标签和所有p标签的文字颜色为红色
六、CSS的继承性和层叠性
6.1继承性
只需要给祖先元素设置文字属性,后代元素就能加载这个属性,这个特性我们叫做继承性
- 注意,css可以继承的属性都是关于文字的,比如color,font-size,font-family
6.2层叠性
CSS样式表又叫做“层叠式样式表”,什么是层叠性
- 一个标签可以被多个选择器选中,并设置对应的属性
如果多个选择器,设置了同一个属性,怎么办?
我们看上图后两个选择器设置的内容被‘杠’掉了,我们叫做被层叠了,这个就是css的层叠性。
我们学习选择器的权重:
id选择器>class类名选择器>标签选择器
如果被多个选择器同时选中,首先看id的,如果没有id的,看class的,如果没有class的,看标签的
案例:
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box1 div.box2 #box3 p{color: red;} #box1 #box2 div.box3 p{color: blue;}#box1 div.box2 .box3 {color: pink;}</style> </head> <body><div id="box1" class="box1"><div id="box2" class="box2"><div id="box3" class="box3"><p>文字</p></div></div></div> </body>
如果遇到复杂的选择器,有两种比较方法
方法一:数选择器:首先将所有的选择器罗列出来,从id选择器比较,如果id选择能比出大小,则数量多的获胜。如果id选择器数量相同或者没有,则比较类名选择器,数量多的获胜。如果类名选择器数量相同或者没有,则比较标签选择器,数量多的获胜,如果所有选择器数量相同,后写的覆盖先写的。
即:例如上面案例的选择器数量分别为:1,2,2 | | 2,1,2 ||1,2,2,因为第二个选择器的id数量最多所以结果为蓝色
方法二:就近原则
上面的案例是所有选择器都选择同一个元素p,所以需要数权重数量
现在如果都没有选中,怎么办?
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#box1 #box2 {color: blue;}.box1 .box2 .box3 {color: purple;}</style> </head> <body><div id="box1" class="box1"><div id="box2" class="box2"><div id="box3" class="box3"><p>文字</p></div></div></div> </body>
如果都没有选择中对应标签,就看谁离得近,离得近的就是被选中的,如果选择的都是同一个元素中,再去数权重
总结:
遇到了复杂的选择器,首先看是否同时选中的一个元素,如果都选择的是同一个元素,则数权重,如果层级不同,比如有的是父亲级别,有的是爷爷级别,使用就近原则,谁离得近听谁的;如果所有的权重一样,选择位置也一样,后书写的覆盖先写的
例如:上面的案例,结果为紫色,因为第二个选择器选到了离文字最近的一层
七、css文字属性的深入
7.1、字体
7.1.1字体颜色
color作用是用来设置文字的颜色
属性值:颜色名、颜色值
颜色值:包含rgb和十六进制
- rgb:
rgb模式是三原色(red、green、blue),rgb(红色,绿色,蓝色)逗号分隔每个颜色的色值,每个颜色的取值范围是0-255,一共就组成了1670万种颜色
红色:rgb(255,0,0);绿色:rgb(0,255,0);蓝色:rgb(0,0,255);白色:rgb(255,255,255);黑色:rgb(0,0,0)
- 十六进制
十六进制:是将rgb颜色表示法进行了简化
将十进制的0-255颜色表示法替换成了十六进制颜色表示法
0即为00;255即为ff
十六进制就是0-9,a-f
十六进制颜色值的写法:使用#后面加红绿蓝三个颜色的十六进制的二位数写法
红色:#ff0000;绿色:#00ff00;蓝色: #0000ff;白色:#ffffff;黑色:#000000
部分特殊的十六进制是可以简化的,比如黑色#000000可以简化为#000,有些是不能简化的,比如#00ffab这种是不可以简化的
#ff00aa简化为#f0a
#aaffdd简化为#afd
7.1.2字体font-family
作用:设置文字使用哪种字体显示
属性值:必须要用引号包裹,值可以有多个,中间使用逗号隔开
- 中文字体:微软雅黑的英文表示法: Miscrosoft Yahei ;宋体英文表示法: SmiSum
- 英文字体:Arial; consolas
工作中关于文字我们是通过设计图获取的,如果设计师没有给你字体,可以自己去获取,通过FW获取
测量方法:使用FW软件,书写一个文字,然后使用文字工具,输入相同的2个或者以上数量的数字,调整大小,调整字体,直到文字完全重合
7.1.3字号font-size
作用是设置文字的大小
属性值:
px为单位:数值是几表示字号显示多少像素
百分比为单位:参考的是继承的字号的百分比
em为单位: 数值是几表示继承字号的几倍
7.1.4 行高line-height
定义:文字在一定的高度内垂直居中
属性值:
px为单位:数值是几表示行高就为几像素
百分比: 参考的是自身字号的百分比
利用行高的特点,可以设置文字在盒子内垂直居中
7.1.5字体加粗font-weight
作用:设置字体是否进行加粗显示
属性值:单词法,数值法
- 数值:100-700,以整百为单位表示
- 单词表示法:normal表示正常的,没有加粗的;bold表示加粗,和数值700是相等的
7.1.6字体样式font-style
作用:用来设置文字是否有倾斜或者斜体
属性值:
normal: 正规的,没有倾斜的
italic: 斜体的,指的是文字斜体
oblique: 倾斜的,与字体无关
工作中用的最多的是italic
font属性综合写法:包含五个单一属性,前两个必须是样式和字体加粗,属性值之间用空格隔开,字号和和行高使用斜杠分隔。字号、行高、字体必须连续书写,顺序不能颠倒,而且必须位于倒数后三个
font:italic bold 24px/48px "simsun"
7.2文本
7.2.1对齐text-align
作用:用来设置段落的整体水平方向对齐
属性值:left、center、right
7.2.2文本修饰text-decoration
作用: 设置文本整体是否有线条修饰
属性值:
none:没有修饰
over line :上划线
line-through:中划线
under line:下划线
通常使用text-decoration属性取消a的默认下划线
7.2.3缩进text-indent
作用:设置段落首行缩进
属性值:
- px单位数值表示: 数字是多少代表首行缩进多少像素
- 百分比表示法:参考标签的父级width属性值的百分比
- 以em为单位:数字是几表示首行缩进几个中文字符。最常用的设置
八、盒模型
叫框模型、是css的重要布局属性,包含了五个属性,width(宽度)、height(高度)、padding(内边距)、border(边框)、margin(外边距)
盒子的实际加载区域:width+height
盒子可实体化显示区域:width+height+padding+border
盒子实际占位区域:width+height+padding+border+margin
浏览器控制台可以看到盒模型的情况:
8.1宽度和高度、
作用:设置加载内容的区域
宽度:width
高度:height
属性值:
- px为单位的数字表示法:数值是多少表示宽度或者高度为多少像素
- 百分比表示法:参考标签的父级width属性值的百分比
注意的是:如果盒子不设置宽度,会默认撑满父盒子的宽度
如果盒子不设置高度,会默认被内容撑高
8.2内边距padding
作用:设置宽和高到边框的间距
特点:不能加载内容,但是可以加载背景
属性名:padding
属性值:px为单位的数值
padding属性是一个综合属性,可以根据不同方向进行单一属性设置
padding-top:20px; //上 padding-bottom:30px;//下 padding-left:40px;//左 padding-right:50px;//右
我们可以使用padding进行综合书写:
四值法:四个方向分别代表上、右、下、左即顺时针方向一圈:
三值法:三个值分别待变上、左右、下
二值法:两个值分别表示上下、左右
8.3边距
作用:设置盒子的显示边缘(边框)
属性名:border
border属性值有三个值,border是一个综合书写
按照border的属性类型划分三个属性值分别代表:边框宽度:border-width、线形:border-style、线的颜色:border-color
线宽border-width
属性值:类型padding,也有四值法
线型:border-style
属性值:也有四值法
- none: 无样式
- hidden: 除了同表格的边框发生冲突的时候,其它同none
- dotted: 点划线
- dashed: 虚线
- solid: 实线
- double: 双线,两条线加上中间的空白等于border-width的取值
- groove: 槽状
- ridge: 脊状,和groove相反
- inset: 凹陷
- outset:凸出,和inset相反
边框颜色border-color
属性值:类型padding,也有四值法
无论是线性还是线厚度还是线的颜色,都可以单一设置某一个方向
先是方向然后是类型
8.4外边距
作用: 设置盒子与其他盒子之间的间距
属性名:margin
属性值: 完全类似于padding,包括单一写法和复杂写法
8.5盒模型小练习
<style>*{margin:0;padding:0;}p{color:#78902C;font-size:14px ;font-family:"simsun";line-height: 28px;text-indent:2em;border:1px solid #78902C ;height: 71px;width:672px;padding: 28px;margin:21px 18px;}</style>
8.6盒模型拓展
8.6.1清除默认样式
很多标签都有自己的默认样式,这些默认样式是开发中不需要的,比如h1系列标签的字号加粗,比如p标签的默认边距,比如ul,li的默认小圆点
清除默认样式:
body,div,p,h1,h2,h3,h4,h5,h6,ul,ol,li,dl,dt,dd,th,td,input{margin: 0;padding: 0; } ul,ol{//清除列表前的项目符号list-style: none; } h1,h2,h3,h4,h5,h6 {font-weight: normal;font-size: 100%; }
网站除了需要清除默认样式外,还需要对部分标签或者整体文本进行初始设置
/* 设置网页初始默认样式 */ body {color: #333;font-size: 14px;font-family: '微软雅黑','宋体', 'Arial'; } a {text-decoration: none;color: #333; }
8.6.2 height属性扩展
一个盒子必须有高度,否则看不到内容样式,高度可以有多个配置内容,比如超出部分,如何显示
如果盒子没有设置高度,则被内容撑高,如果设置了高度,内部高度大于盒子本身的高度,不会被隐藏,会自动超出盒子内容显示
关于高度超出部分,是有属性可配置的
overflow,其作用指的是超出盒子部分怎么显示
- 属性值:visible可见的,默认的
- 属性值hidden作用是超出高度部分,隐藏
- 属性值scroll,作用是给盒子添加滚动条样式,无论文字内容是否超出了盒子,都加滚动条样式
- 属性值auto,作用是盒子内容超出部分滚动条显示
- 关于height属性,如果希望盒子自动被内容撑高,可以设置值为auto
8.6.3居中
关于居中,主要有两种,一种是关于盒子的,一种是关于文字的
- 单行文字:
水平居中:使用text-align:center
垂直居中,设置line-height的高度和盒子一样高
总结:如果需要单行文本水平垂直都居中,设置text-align:center,line-height:盒子高度
- 多行文字
水平居中:还是使用text-align:center
垂直居中:盒子不设置高度,上下的padding设置相同的属性
- 盒子的居中:
水平居中:给目标元素设置margin值为auto,即margin:auto
垂直居中:和文字类型一样,父盒子不设置高度,设置上下的padding值相同
总结:如果设置盒子上下左右都居中的状态,首先子盒子设置margin:0 auto;父盒子不设置高度,而设置上下padding
工作中真正设置垂直居中使用的定位,很少使用padding去挤高度
8.6.4margin塌陷
同方向的margin会有塌陷,margin塌陷通常指的是上下塌陷
在垂直方向上,如果有相遇的margin,两个盒子之间不是属性值的和,而是比较两个盒子谁的margin更大,使用的就是margin值更大的高度
- 同级盒子margin塌陷
取得是二者margin中较大的值,非二者margin之和
- 父子元素的margin塌陷现象
父子盒子,如果子盒子设置margin-top,父盒子没有设置或者margin-top的值小于了子盒子,此时会存在margin塌陷的现象
如何解决margin塌陷的现象,如果是兄弟关系,统一都设置一个方向的margin,比如都设置margin-bottom
如果是父子盒子,可以给父盒子加border或者padding,其实这两种方法都不合理,正常情况下都不会使用子盒子去向上踹父盒子,而是使用父盒子加padding
九、标准文档流
开发网页更像写word,因为我们开发网页有自己的书写规律,从上往下,从左往右,前面内容的变化会影响后面内容的位置
以上也是标准文档流的特性
HTML文件就是一种标准文档流文件,也有自己的一些特性
9.1元素类型
从HTML的角度讲元素分为连个级别:容器级和文本级
从CSS的角度的讲将元素分为三种类型:块级元素,行内元素,行内块元素
块级元素
特点:可以设置宽度、高度,元素独占一行
常用的块级元素:div、p、h1-h6,ul,ol,dl等等
行内元素:
特点:文字并排显示,不能设置盒子的宽度和高度
常见的行内元素:span、a、b、u、i等等。
行内块元素:
特点:可以设置宽度和高度,并且盒子也可以并排显示
常见的行内块元素:input、img、table
9.2display显示模式
大部分标签默认的时候都会以各自的显示状态(类型)进行加载,标签的显示状态并不是固定不变的,可以通过css属性display进行切换
display属性值:
- block: 砖、块的意思,表示标签要以块级元素加载
- inline: 行内,表示将标签以行内元素进行加载
- inline-block: 行内块,表示将标签以行内块元素进行加载
如果一个网站只有标准文档流,很多效果是不能实现的,如果要实现非标准特点的页面就必须让标签去标准化
让标签脱离标准流的方法:浮动、定位
十、浮动
浮动属性是专门用于进行网页并排布局的
作用:脱离标准文档流,不在受元素等级的限制,又可以并排显示,又可以设置宽和高
float:属性就是设置元素浮动
属性值:left、right,分别为按照缩写顺序靠右浮动和靠左浮动
float: left;
浮动的特性:元素会按照书写的顺序进行依次贴边,同一个父盒子中,既可以设置左浮动,也可以设置右浮动
补充知识点:所有的兄弟元素,如果一个有浮动了,剩下的所有兄弟元素必须都设置浮动
如果浮动元素不设置宽度,不会撑满父盒子,而被内容撑宽
10.1浮动练习
<style>.out{width: 970px;}.top{height: 103px;margin-bottom: 10px;}.top .top1{width: 277px;height: 103px;background-color: red;float: left;}.top .top2{height: 103px;width: 679px;float: right;}.top .top2 .top21{width: 137px;height: 49px;float: right;margin-bottom: 8px;background-color: greenyellow;}.top .top2 .top22{width: 679px;height: 46px;background-color: greenyellow;float: right;}.middle{height: 435px;margin-bottom: 10px;}.middle .middle1{width: 310px;height: 435px;background-color: yellow;float: left;margin-right: 10px;}.middle .moddle2{width: 650px;height: 401px;background-color: antiquewhite;float: right;margin-bottom: 10px;}.middle .moddle2 .middle21{width: 190px;height: 401px;background-color: palevioletred;float: right;margin-left: 10px;}.middle .moddle2 .middle22{width: 450px;height: 401px;float: left;}.middle .moddle2 .middle22 .middle221{width: 450px;height: 240px;margin-bottom:10px;background-color: aqua;}.middle .moddle2 .middle22 .middle222{width: 450px;height: 110px;margin-bottom: 10px;background-color: aqua;}.middle .moddle2 .middle22 .middle223{width: 450px;height: 30px;margin-bottom: 10px;background-color: aqua;}.middle .moddle3{width: 650px;height: 25px;background-color: green;float: right;}.bottom{height: 35px;width: 970px;background-color: blue;}</style> </head> <body><div class="out"><div class="top"><div class="top1"></div><div class="top2"><div class="top21"></div><div class="top22"></div></div></div><div class="middle"><div class="middle1"></div><div class="moddle2"><div class="middle21"></div><div class="middle22"><div class="middle221"></div><div class="middle222"></div><div class="middle223"></div></div></div><div class="moddle3"></div></div><div class="bottom"></div></div> </body>
10.2浮动的性质
标准流元素是区分行、块的,浮动是脱离标准流的,那脱离标准流之后,浮动元素有哪些特性
浮动元素,脱离标准流后,既可以设置宽度和高度,也可以会实现并排显示,不区分元素状态即不区分块元素和行内元素
p标签和span标签都设置了宽度和高度,但是由于元素类型的限制,span标签没有宽度和高度、
需要注意的是,兄弟元素如果有一个浮动了,剩下必须都要浮动
如果此时p标签和span标签没有设置宽度和高度,元素的宽度会被内容撑满,不会自动撑满父盒子
10.3依次贴边
如果父盒子的宽度不足以存下所有的子盒子,存放不下的会自动向前寻找,知道空余位置能够存放,从而进行贴边显示
- 如果父盒子的跨度不够,子盒子会依次贴边,但是如果前面元素中有空隙当前需要贴边的元素不会钻空,不会出现钻空的现象,而之会查询剩余宽度实现依次贴边
4号元素由于贴近3号空隙不够,从而找2号,但是2号被3号挡住了,所以会去找1号进行贴边,不会向上钻空
- 如果某一个盒子的宽度大于父盒子,会有溢出状态
10.4依次贴边练习
<!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><style>.out{width: 940px;height: 440px;border:1px solid black;padding: 10px;}.out .no1{width: 300px;height: 260px;background-color: palevioletred;float: left;}.out .no2{width: 240px;height: 260px;background-color: aqua;float:left;}.out .no3{width: 200px;height: 130px;background-color: yellow;float: left;}.out .no4{width: 200px;height: 130px;background-color: yellowgreen;float: left;}.out .no5{width: 200px;height: 130px;background-color: yellowgreen;float: left;}.out .no6{width: 200px;height: 130px;background-color: yellow;float: left;}.out .no7{width: 300px;height: 180px;background-color: aqua;float: left;}.out .no8{width: 160px;height: 180px;background-color: plum;float: left;}.out .no9{width: 160px;height: 180px;background-color: greenyellow;float: left;}</style> </head> <body><div class="out"><div class="no1"></div><div class="no2"></div><div class="no3"></div><div class="no4"></div><div class="no5"></div><div class="no6"></div><div class="no7"></div><div class="no8"></div><div class="no9"></div><div class="no8"></div><div class="no9"></div></div> </body> </html>
10.5浮动的margin塌陷
标准流有margin塌陷的现象
标准流margin塌陷:
浮动流:
总结:浮动元素没有了标准流的margin塌陷现象,各自有各自的margin,不会相互塌陷;
10.6浮动元素让出标准流
标准流中的元素都有自己的一个标准流位置,后面的元素只能在前面元素的后面进行加载
浮动元素脱离了标准流,会让出后面的元素占有自己原来的位置,显示效果上来看,似乎是自己飘起来了,将其称之为脱标
标准流显示;
此时蓝色盒子浮动了,浮动元素需要先加载,否则无法为后面的元素让出位置
10.7字围现象
字围现象:同级元素中,前面元素如果浮动了,后面的标准流会占有前面元素的文字,后面盒子中如果有文字,不会和盒子一样占有前面盒子的位置,而是绕开浮动元素的位置,围绕着加载,实现字围现象。
十一、清除浮动
11.1浮动带来的影响
标准流的盒子,如果不设置高度,会被内容自动撑满,如果盒子内部的元素浮动,子盒子脱标后,不能撑高父盒子,父盒子的告诉就会变为0,导致一些问题。
(1)父盒子不设置高度不能被子盒子撑高
(2)如果父盒子后面还有其他的兄弟标签,并且该兄弟标签内部也有浮动元素,前面的浮动会影响后面的贴边
解决方案:
①清除浮动方案一:height属性
父盒子的高度不能被子盒子撑高,我们可以强制给父盒子设置一个高度,去管理内部的子元素
缺点:父盒子的高度不可以随着子元素变高而增高,如果子盒子是动态的,父盒子还会出现原来的问题,所以使用height属性清除浮动影响只适用于父子都是固定高度的
②清除浮动方案二:clear属性
css有个clear属性,专门清除浮动元素带来的影响
属性值:
left: 清除前面左浮动的影响
right: 清除前面右浮动的影响
both: 清除前面所有浮动的影响
clear属性可以解决当前盒子的浮动影响
缺点: 父盒子还是不能被内部元素撑高,父盒子之间的margin显示有问题
③清除浮动方法三:隔墙法
方法:利用clear属性和height属性,制作一堵墙,将两个有浮动的元素父亲隔离起来
墙
解决的问题:父元素位置稳定了,需要的上下间距也解决了
缺点: 子盒子还是不能撑满父盒子的高度
④清除浮动方法四:内墙法
方法:通过隔墙法演变而来,将墙放在了两个受影响父元素内部,所有的子元素最后,设置一堵内墙法,设置clear属性
可以解决之前遇到的所有问题(可以给div设置margin将两个标准流父盒子间隔开)
⑤清除浮动方法五:伪类
CSS选择器的一种
.clearfix::after {content: '';display: block;height: 0;clear:both;visibility: hidden; }
将上述代码即一个属性的style设置,将受到浮动影响的元素(此处就是两个父盒子div)都添加上这个clearfix属性即可,clearfix的属性名不是固定的,但是一般叫这个
⑥清除浮动方法六:overflow属性
overflow属性清除浮动影响是一个小偏方,值必须是hidden,可以解决浮动的所有问题
通过overflow属性解决浮动影响的原因:overflow属性有BFC特性,BFC特性有一个特点,设置是该属性的元素就拥有被内部元素撑高的特点
实际工作中,使用内墙法或者overflow属性去解决浮动的影响
十二、a标签的伪类
12.1概念
a标签可以根据用户的不同行为的触发,从而实现四种状态的样式,这四种状态是可以设置的,我们称这四种状态为伪类
a:link{color: #0f0; } a:visited{color:#f0f; } a:hover{color: #ff0; } a:active{color:#0ff; }
a:link 访问前的状态
a:visited 访问后的状态
a:hover 鼠标悬停状态
a:active 鼠标点击状态
普通元素,非超级链接,也可以设置伪类状态,此时只有两个 状态使用,分别是hover和active
伪类选择器:规定一定要先设置好需要的选择器,推荐使用class类名,不会引起冲突,或者使用后代选择器精确匹配,以防打乱页面的布局状态
伪类的权重和普通选择器权重是一样的
12.2书写顺序
a标签有时会有2-3个触发状态,一定按照书写顺序去执行
书写顺序:link、visited、hover、active
总结规律:方便记忆,理解为爱恨准则,love hate
所有的伪类中,最常用的是hover
12.3实际应用
一个实际的页面中,为了保持页面的统一状态,此时会将a标签的访问前和访问后的状态进行统一设置
a:link,a:visited{color: #666; } a:hover{color:#f00 } a:active{color: blue; }
实际应用:
<!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> <style>ul{width: 200px;height: 50px;background-color: aqua; }li{width: 40px;height: 40px;background-color: aquamarine;list-style: none;float: left;margin: 2px; }ul li:hover{background-color: bisque;} </style> <body><ul><li>新闻</li><li>游戏</li><li>学习</li><li>音乐</li></ul> </body> </html>
十三、背景
在前面的课程中我们学习background-color,作用是给盒子设置背景颜色。其实background是个综合属性
13.1背景颜色background-color
作用:给盒子添加背景颜色
background-color:green;
背景颜色的覆盖范围:width、height、padding、border
属性值;颜色名、颜色值
颜色值:rgb模式、十六进制模式、rgba模式
rgba模式是rgb模式的一种拓展,拓展的是透明度,a(alpha)就代表的是透明度,取值(0-1)之间,0表示完全透明,1表示纯色
13.2背景图片background-image
作用:给标签的盒子显示区域添加背景图片
渲染范围和背景颜色一样width、height、padding、border
图片默认是有重复平铺状态的
属性值:url(图片地址)
url是统一资源资源定位符,后面必须要跟一对小括号,括号内部是图片的引入地址,可以是相对路径和绝对路径
如果此时背景图片和背景颜色同时设置了,会怎么显示
都会进行加载,只是背景图会覆盖背景颜色
13.3背景重复background-repeat
如果不需要背景图进行重复渲染
作用:设置背景图渲染状态
根据属性值的不同,背景会显示三种状态
repeat:背景重复渲染,为默认值
background-repeat: repeat;
background-repeat: no-repeat;
background-repeat: repeat-x;
background-repeat: repeat-y;
实际应用场景
使用上下左右都对称的图片进行页面的背景设置
相关文章:
网安——CSS
一、CSS基础概念 CSS有两个重要的概念,分为样式和布局 CSS的样式分为两种,一种是文字的样式,一种是盒模型的样式 CSS的另一个重要的特质就是辅助页面布局,完成HTML不能完成的功能,比如并排显示或精确定位显示 从HT…...
知识图谱常见的主流图数据库
在知识图谱中,主流使用的图数据库包括以下几种: Neo4j:这是目前全球部署最广泛的图数据库之一,具有强大的查询性能和灵活的数据模型,适用于复杂关系数据的存储和查询。 JanusGraph:JanusGraph是一个开源的…...
阀井可燃气体监测仪,开启地下管网安全新篇章-旭华智能
在城市的脉络中,地下管网犹如隐秘的动脉,支撑着现代生活的运转。而在这庞大网络的关键节点上,阀井扮演着不可或缺的角色。然而,由于其密闭性和复杂性,阀井内部一旦发生可燃气体泄漏,将对公共安全构成严重威…...
【6】Word:海名公司文秘❗
目录 题目 List.docx Word.docx List.docx和Word.docx 题目 List.docx 选中1/4全角空格复制→选中全部文本→开始→替换:粘贴将1/4全角空格 替换成 空格选中全部文本→插入→表格→将文本转化成表格→勾选和布局→自动调整→勾选 选中第一列,单机右键…...
微信原生小程序自定义封装组件(以导航navbar为例)
封装 topnav.js const App getApp(); Component({// 组件的属性列表properties: {pageName: String, //中间的titleshowNav: { //判断是否显示左上角的按钮 type: Boolean,value: true},showHome: { //判断是否显示左上角的home按钮type: Boolean,value: true},showLocat…...
<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加
更新日志: Created on 14Jan.2025 by Dave , added openssh-server, tailescape Updated on 15Jan.2025, added "tailescape - tailscape ssh" 前期准备: 1. 更新可用软件包的数据库 2. 升级系统中所有已安装的软件包到最新版本 3. 安装 cur…...
HQL(JPQL)和原生SQL实现查询自定义返回类
维修申请实例RepairApplyInstance: package com.byx.scaffold.common.entity.jpa;import com.byx.scaffold.common.entity.jpaEnum.RepairStatusConstant; import lombok.Data;import javax.persistence.Convert; import javax.persistence.Entity; import javax.persistence…...
微信小程序 实现拼图功能
微信小程序 实现拼图 效果示例功能描述代码示例 效果示例 微信小程序 碎片拼图 功能描述 在微信小程序中,实现一个简单的拼图小游戏。用户需要将四张碎片图片拖动到目标图片的正确位置,具体功能如下: 拖动功能: 用户可以通过手指…...
《C++11》并发库:简介与应用
在C11之前,C并没有提供原生的并发支持。开发者通常需要依赖于操作系统的API(如Windows的CreateThread或POSIX的pthread_create)或者第三方库(如Boost.Thread)来创建和管理线程。这些方式存在以下几个问题: …...
【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍
从帝国理工的PPT学习。 什么是RDMA Remote Direct Memory Access,也就是Remote的DMA,是一种硬件机制,能直接访问远端结点的内存,而不需要处理器介入。 其中: Remote:跨node进行数据传输Directÿ…...
Autodl转发端口,在本地机器上运行Autodl服务器中的ipynb文件
通过 SSH 隧道将远程端口转发到本地机器 输入服务器示例的SSH指令和密码,将远程的6006端口代理到本地 在服务器终端,激活conda虚拟环境 conda activate posecnnexport PYOPENGL_PLATFORMegljupyter notebook --no-browser --port6006 --allow-root从…...
【Linux】常见指令(一)
Linux常见指令 01.whoami02.pwd03.ls04.mkdir05.cd 本文LInux环境为,使用XShell远程登陆到Linux。 具体如何环境搭建,大家可以查看其他博客。 01.whoami whoami 指令用来查看当前账户是谁。 如上图所示,使用whoami指令,查看到现在…...
AI学习之自然语言处理(NLP)
自然语言处理(Natural Language Processing,NLP)是计算机科学、人工智能和语言学领域的交叉学科,旨在让计算机能够理解、处理和生成人类语言。以下为你详细介绍: 自然语言处理的关键技术 词法分析:将文本…...
全面解析锁服务设计:内存锁、数据库锁与分布式锁的选择与实现
在构建分布式系统时,锁服务通常用于控制多个线程或进程对共享资源的访问。为了灵活适配不同的锁实现方式,我们可以设计一个基础的锁服务接口,然后根据需求提供不同的实现。例如,内存锁、数据库锁和分布式锁。 1. 锁服务基础接口设…...
jenkins-系统配置概述
一. 引文: Jenkins除了强大的功能插件实现的持续交付集成外, 本身也是有一些比较重要的可配项。 接下来我们来看一看。 配置入口: 系统管理-->系统设置 二. 基础配置: 1.主目录(home directory): Jenkins所有的数据文件存放路径(可通过…...
《数据思维》之数据可视化_读书笔记
文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 数据之道,路漫漫其修远兮,吾将上下而求索。 一、数据可视化 最基础的数据可视化方法就是统计图。一个好的统计图应该满足四个标准:准确、有…...
kafka消费堆积问题探索
背景 我们的商城项目用PHP写的,原本写日志方案用的是PHP的方案,但是,这个方案导致资源消耗一直降不下来,使用了20个CPU。后面考虑使用通过kafka的方案写日志,商城中把产生的日志丢到kafka中,在以go写的项目…...
一文掌握Docker
目录 1.快速入门 1.1.部署MySQL 1.2.命令解读 2.Docker基础 2.1.常见命令 2.1.1.命令介绍 2.1.2.演示 2.1.3.命令别名 2.2.数据卷 2.2.1.什么是数据卷 2.2.2.数据卷命令 2.2.3.挂载本地目录或文件 2.3.镜像 2.3.1.镜像结构 2.3.2.Dockerfile构建镜像 2.3.3.构建…...
慧集通(DataLinkX)iPaaS集成平台-系统管理之UI库管理、流程模板
UI库管理 UI库管理分为平台级和自建两种,其中平台级就是慧集通平台自己内置的一些ui库所有客户均可调用,自建则是平台支持使用者自己根据规则自己新增对应的UI库。具体界面如下: 自建UI库新增界面: 注:平台级UI库不支…...
【学习笔记】Macbook管理多个不同的Python版本
在MacBook上管理不同项目的不同Python版本,可以使用多种方法。以下是一些常见的方法: 1. 使用 pyenv pyenv 是一个非常流行的工具,可以让你轻松安装和切换多个Python版本。以下是安装和使用 pyenv 的步骤: 安装 pyenv 安装依赖…...
前端如何设计一个回溯用户操作的方案
同一个项目,为什么我本地无法复现,只有客户的设备才复现? 如何获取用户的操作路径呢? 两种方案:埋点和rrweb 埋点就很简单了,将所有可能操作的节点都进行预埋数据;但埋点简单并不省心ÿ…...
WPF、控件模板(ControlTemplate)和数据模板(DataTemplate)
前言 在 WPF 中,控件种类丰富且功能非常完善。一个显著的优点是 WPF 提供了强大的自定义能力和灵活的用户界面表现,能够满足各种复杂的应用需求。其中,ControlTemplate 和 DataTemplate 是两个非常重要的概念,分别用于自定义控件…...
MAC上安装Octave
1. 当前最新版Octave是9.3版本,需要把mac os系统升级到14版本(本人之前的版本是10版本) https://wiki.octave.org/Octave_for_macOS octave的历史版本参考此文档:Octave for macOS (outdated) - Octavehttps://wiki.octave.org/Oc…...
RabbitMQ(三)
RabbitMQ中的各模式及其用法 工作队列模式一、生产者代码1、封装工具类2、编写代码3、发送消息效果 二、消费者代码1、编写代码2、运行效果 发布订阅模式一、生产者代码二、消费者代码1、消费者1号2、消费者2号 三、运行效果四、小结 路由模式一、生产者代码二、消费者代码1、消…...
一体机cell服务器更换内存步骤
一体机cell服务器更换内存步骤: #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…...
年后找工作需要注意的事项
大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...
【网络 MAC 学习专栏 -- 如何理解 PHY 的 Link Up】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewClause 22/Clause 45Clause 22Clause 45 PHY Link 状态的软件实现 转自: 开心果 Need Car 2022年10月20日 09:50 上海 Overview PHY…...
鸿蒙UI开发——文本级联选择器
1、概 述 ArkUI提供了一个文本选择器(showTextPickerDialog),可以方便的实现文本级联选择,例如:省->市->区,示意如下: 下面针对文本选择器做简单介绍。 2、接口介绍 定义文本滑动选择器…...
后盾人JS -- JS运算符与流程控制
嘻嘻 赋值运算符与算术运算符 没什么好说的,等号谁都会用 比较运算符注意事项 如果一个是字符一个是数字也是可以比较的() 是判断值和类型是否相等 <!DOCTYPE html> <html lang"en"><head><meta charset…...
Hive SQL必刷练习题:留存率问题
首次登录算作当天新增,第二天也登录了算作一日留存。可以理解为,在10月1号登陆了。在10月2号也登陆了,那这个人就可以算是在1号留存 今日留存率 (今日登录且明天也登录的用户数) / 今日登录的总用户数 * 100% 解决思…...
笔记本电脑 选购 回收 特权模式使用 指南
笔记本电脑 factor 无线网卡:有些笔记本无法检测到特定频段的信息,会导致连不上校园网 sudo iwlist wlp2s0 scan | grep Frequency > net.txt cat net.txt>表示用终端输出覆盖后续文件,>>表示添加到后续文件的末尾 一种更简…...
基于PyQt - 6的医疗多模态大模型医疗研究系统中的创新构建与应用(上 .文章部分)
一、引言 1.1 研究背景与意义 在当今数智化时代,医疗行业正经历着深刻的变革,对智能化、高效化的需求日益迫切。传统的医疗模式在面对海量的医疗数据、复杂的诊断流程以及个性化的治疗需求时,逐渐显露出局限性。随着人工智能技术的飞速发展,多模态大模型作为一种前沿技术…...
下载文件,浏览器阻止不安全下载
背景: 在项目开发中,遇到需要下载文件的情况,文件类型可能是图片、excell表、pdf、zip等文件类型,但浏览器会阻止不安全的下载链接。 效果展示: 下载文件的两种方式: 一、根据接口的相对url,拼…...
1.15学习
web ctfhub-网站源码 打开环境,查看源代码无任何作用,但是其提醒就在表面暗示我们用dirsearch进行目录扫描,登录kali的root端,利用终端输入dirsearch -u 网址的命令扫描该网址目录,扫描成功后获得信息,在…...
shell练习2
需求:判断192.168.1.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。 #!/bin/bashnmap -sn 192.168.1.0/24 | grep Nmap scan report for | awk {print $5} 注意:当运行 bash ip.sh 时出现 nmap: command not found 的错误…...
MySQL学习笔记5【SQL优化/视图/存储过程/触发器】
MySQL学习笔记 SQL优化 1. 插入数据优化 普通插入: 采用批量插入: 每次插入不建议超过1000条记录,这样可以减少事务开销,提高性能。示例: INSERT INTO tb_user (name, age) VALUES (Alice, 25), (Bob, 30), ...;手动提…...
C++单例模式的设计
单例模式(Singleton Pattern)是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。在C中,单例模式通常用于管理全局资源或共享状态。 以下是C中实现单例模式的几种常见方式: 懒…...
【Linux系统编程】—— 自动化构建工具Makefile指南
文章目录 背景基本使用推导过程适度扩展语法 背景 Makefile 是衡量开发者是否具备完成大型工程能力的一个重要标志。在一个工程中,源文件的数量可能极多,这些文件会按照类型、功能或模块分布在多个目录中。Makefile 通过定义一系列规则,指定…...
【SpringBoot应用篇】SpringBoot+MDC+自定义Filter操作traceId实现日志链路追踪
【SpringBoot应用篇】SpringBootMDC自定义Filter操作traceId实现日志链路追踪 解决的问题解决方案MDC具体逻辑ymllogback-spring.xmlTraceIdUtil操作工具类TraceIdFilter自定义过滤器GlobalExceptionHandler全局异常处理类TraceIdAspect切面UserController测试验证 多线程处理M…...
少一点If/Else - 状态模式(State Pattern)
状态模式(State Pattern) 状态模式(State Pattern)状态模式(State Pattern)概述状态模式(State Pattern)结构图状态模式(State Pattern)涉及的角色 talk is c…...
【SVN】版本发布快捷操作
摘要:因为每次发版都需要制作一份相同的文件夹,而大部分的包都不需要变更,但是文件又非常大,记录自己的操作经验。 首先在SVN Repository Browser 界面把上一次的版本复制一份,复制的时候重命名为新的版本号 右击要复…...
nacos环境搭建以及SpringCloudAlibaba脚手架启动环境映射开发程序
1:下载nacos 地址:https://github.com/alibaba/nacos/tags 2:选择server的zip包下载 3:启动mysql服务,新建数据库:nacos_yh 4:解压下载的nacos_server 进入conf目录 5:mysql运行sql脚本变得到下面的表 6&a…...
【笔记整理】记录参加骁龙AIPC开发者技术沙龙的笔记
AIoT 首先了解了一个概念叫AIoT,我的理解就是AI IoT 5G,通过AI的发展使得边缘计算、数据整合和处理变得快捷方便,不仅限于传统的云端数据处理,在边缘的IoT设备上也可以进行智能化打造,通过5G的通信能力扩展可以实现…...
Kotlin 协程基础十 —— 协作、互斥锁与共享变量
Kotlin 协程基础系列: Kotlin 协程基础一 —— 总体知识概述 Kotlin 协程基础二 —— 结构化并发(一) Kotlin 协程基础三 —— 结构化并发(二) Kotlin 协程基础四 —— CoroutineScope 与 CoroutineContext Kotlin 协程…...
DAMA CDGA 备考笔记(二)
1. 考点分布 2. 第二章 数据处理伦理知识点总结 伦理是建立在是非观念上的行为准则。伦理准则通常侧重于公平、尊重、责任、诚信、质量、可靠性、透明度和信任等方面。数据伦理是一项社会责任问题不是法律问题。 度量指标:培训员工人数、合规/不合规事件、企业高管…...
【Lua学习之旅】之单行/多行注释
Lua的注释 单行注释多行注释 单行注释 lua中的单行注释采用两个短横线"--" --这是lua单行注释多行注释 写法一: --[[ 这个lua的多行注释, 很多资料说多行注释不可以嵌套, 根据我的测试,这种写法的多行注释在lua54版…...
【线性代数】行列式的概念
d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1,i2,⋯,in∑(−1)σ(i1,⋯,in)a1…...
react中hooks之useEffect 用法总结
1. 什么是函数的副作用(Side Effects) 副作用是指在组件渲染过程中,除了返回 JSX 之外的其他操作,例如: 数据获取(API 调用)订阅数据源手动修改 DOM设置定时器存储数据日志记录 纯函数是特定的…...
小型、中型无人机执照学习和考试区别详解
小型、中型无人机执照的学习和考试在多个方面存在区别。以下是对两者的详细对比: 一、定义与适用范围 1. 小型无人机: 通常指起飞重量在7kg至25kg之间的无人机。 适用于多种应用场景,包括商业飞行、航拍、农业植保等。 必须持有民航局无人…...
【Go】Go Gin框架初识(一)
1. 什么是Gin框架 Gin框架:是一个由 Golang 语言开发的 web 框架,能够极大提高开发 web 应用的效率! 1.1 什么是web框架 web框架体系图(前后端不分离)如下图所示: 从上图中我们可以发现一个Web框架最重要…...