css
已经学完html了,继续学习前端三剑客html、css、js之一的css。😀
1、什么是css
css:用于网页结构的布局和修饰的一种样式脚本
层叠样式表:(英文全称:Cascading Style Sheets), 简称:样式表,
Cascading 是级联的意思,Style 是风格的意思,Sheets的格子或者窗体的意思
CSS 它是一种样式语言,主要是用来描述HTML或XML文档的呈现,以及如何在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问题。
2、css的历史
看下面这个博客吧😅
CSS发展史与CSS模块划分 | 前端开发
3、css两大特性
1、继承性
CSS的继承性,指的是子元素继承父元素的某些样式属性。 在CSS中,具有继承性的由3类。
-
字体文本相关属性:font-size(字体大小)、font-family(字体系列)、font-style(字体样式)、font-weight(字体粗细)、font、line-height(行高)、text-align(水平对齐方式)、text-indent(首行缩进)、word-spacing(字间距)。
-
列表相关属性:list-style-image(使用图像替换列表项标记)、list-style-position(规定列表项标记位置)、list-style-type(设置列表项标记类型)、list-style
-
颜色相关属性:color
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style type="text/css">#div1{font-size: 12px;color: hotpink;font-weight: bold;font-style: initial;text-align: center;}</style>
</head>
<body><div id="div1">Hello world<div id="div2">Hello world</div><!--子元素--></div><!--父元素--></body>
</html>
2、层叠性
当我们在CSS上重复定义多个相同的属性时,CSS会把先定义的属性覆盖掉。
对于同一个元素来说,如果我们定义多个相同的属性,并且定义的属性样式具有相同的权重时,CSS会以最后定义的属性值为准。
4、css基本语法
.remove-children-tip-ceVqLh {color: rgba(0,0,0,.8);color: var(--s-color-text-secondary,rgba(0,0,0,.8));font-family: PingFang SC;font-size: 14px;font-style: normal;font-weight: 500;line-height: 20px
}.confirm-delete-btn-oVPeeS {background: #ff3b30!important;background: var(--s-color-system-alert,#ff3b30)!important;color: #fff!important;color: var(--s-color-text-invert-intact-primary,#fff)!important
}.confirm-delete-btn-oVPeeS:hover {background: #cc2f26!important
}.backBtn-PA2u6q {background: #fff;background: var(--s-color-bg-primary,#fff);border: 1px solid rgba(0,0,0,.12);border: 1px solid var(--s-color-border-primary,rgba(0,0,0,.12))
}
选择器 {
样式属性:属性值;
样式属性:属性值;
样式属性:属性值;
样式属性:属性值;
......
}
语法的注意事项如下:
- 选择器是用于指定CSS样式的HTML标签,花括号内是对该对象设置的具体样式。
- 属性和属性值以“键值对”的形式出现。
- 属性是对指定的对象设置的样式属性,列入字体大小、文本颜色等。
<!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>css的基本语法</title><style>div {background: red;}</style></head><body><div>css的使用</div></body></html>
5、css注释
css的注释如下:
整体注释:
/*div {font-size: 12px;}*/
局部注释:
div {/*局部注释*//*font-size: 12px;*/background:red;}
快捷键:crtl + /
6、css层叠样式
1、行内样式
<span style="background-color: aqua;color: red;font-size: 50px;">css的层叠样式</span>
小结:
-
使用style属性设置CSS样式仅对当前的HTML标签起作为,并且是写在HTML标签中的
-
这种方式不能起到内容与表现相分离,本质上没有体现出CSS的优势,因此不推荐使用。
-
而且不通用,如果是别的页面也需要,必须重新编写一次,失去了通用性。
2、内部样式
样式写在头标签head里面,再加上<style></style>
<!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>css的基本语法</title><style>span {background: red;color:aqua;font-size: 25px;}</style></head><body><span>css的层叠样式</span></body></html>
小结:
-
优点:方便在同页面中修改样式
-
缺点:不利于在多页面间共享复用代码及维护,对内容与样式的分离也不够彻底
-
引出外部样式表
3、外部样式
在外部创建一个css文件夹,文件中创建.css文件,再html文件中使用link标签引入样式。
<!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>css的样式引入</title><!--引入外部样式--><link rel="stylesheet" href="css/style.css"><!--内部样式--><!-- <style>div {font-size: 39px;color: green;background: #000}</style> --></head><body><div>css的层叠样式</div></body></html>
链接式与导入式的区别
-
<link/>标签是属于XHTML范畴的,@import是属于CSS2.1中特有的。
-
使用<link/>链接的CSS是客户端浏览网页时先将外部CSS文件加载到网页当中,然后再进行编译显示,所以这种情况下显示出来的网页与用户预期的效果一样,即使网速再慢也一样的效果。
-
使用@import导入的CSS文件,客户端在浏览网页时是先将HTML结构呈现出来,再把外部CSS文件加载到网页当中,当然最终的效果也与使用<link/>链接文件效果一样,只是当网速较慢时会先显示没有CSS统一布局的HTML网页,这样就会给用户很不好的体验。这个也是现在目前大多少网站采用链接外部样式表的主要原因。
-
由于@import是属于CSS2.1中特有的,因此对于不兼容CSS2.1的浏览器来说就是无效的。
优先级:行内样式 > 内部样式 > 外部样式
就近原则:越接近标签的样式优先级越高
4、import导入样式
<style>@import url(css/style.css);</style>
7、像素单位
1、px
px是绝对单位,是网页的基本单位,px是Pixel的,简称像素,1px就是1像素点
<!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>06、CSS中的像素单位-px</title><!--内部样式的方式定义那么衡量我们网页布局的宽度和高度,字体大小,图片宽度高度,间距的单位是什么,没错就px 。w 1920 * h 1080 - 160px -- 1920px -160px = 1000x1920 * 1080--><style>div{/*网页布局的宽度和高度*/width: 160px;height: 160px;background: red;}p {/*字体大小*/font-size: 24px;}img {/*图片宽度高度*/width: 200px;}</style>
</head>
<body><div>你好,zyhzyhzyhzyhzyh,让我们一起度过美好的一天!</div><img src="D:\图片\wallhaven-28v8wm.jpg" alt="">
</body></html>
2、em
-
em是一种相对单位– px
-
1em:16px浏览器的默认值
-
1em = 基准值(16px)* number(1)= 16px
-
2em = 基准值(16px)* number(2)= 32px
em是一个固定常量,他的大小是根据父的font-size设定,若父的font-size未设定,则使用默认值16px。
<style>div{/*网页布局的宽度和高度*/width: 10em;height: 10em;background: red;}p {/*字体大小*/font-size: 5em;}img {/*图片宽度高度*/width: 10em;}</style>
3、rem
-
rem:相对值,基于根标签(html标签)
-
1rem = 基准值(16px)* number(1)= 16px
rem的大小只参考一个点,那就是html的font-size,与父辈无关
<style>html {font-size: 16px;}div {width: 10rem;height: 10rem;background: yellow;margin-top: 20px;}</style>
4、vh/vw
-
vh - height - 屏幕的百分比高
-
vw - width - 屏幕的百分比宽
<style>.parent1 {width: 100vw;background: red;height: 100vh;overflow: auto;margin: auto;}.parent2 {width: 100vw;background: blue;}</style>
parent1会充满整个屏幕,parent2充满整行。
5、calc
使用calc可以动态计算大小
<style>* {margin: 0;padding: 0;}#nav {height: 120px;background: red;}#banner {height: calc(100vh - 120px);background: blue;}</style>
上面红色,下面蓝色,会充满整个屏幕。
8、css中的颜色
css中颜色的分类
-
标准色
-
十六进制颜色
-
三原色RGB(Red,Green,Blue)
-
HSL(css3提出)
CSS 中提供了一些属性(例如 color、background)来设置 HTML 元素的颜色(例如元素的背景颜色或字体颜色),我们可以通过不同形式的值来指定颜色,如下表所示:
值 | 描述 | 实例 |
---|---|---|
颜色名称 | 使用颜色名称来设置具体的颜色,比如 red、blue、brown、lightseagreen 等,颜色名称不区分大小写 | color: red; |
十六进制码 | 使用十六进制码以 #RRGGBB 或 #RGB(比如 #ff0000)的形式设置具体颜色,"#" 后跟 6 位或 3 位十六进制字符(0-9, A-F) | color: #f03; |
RGB | 通过 rgb() 函数对 red、green、blue 三原色的强度进行控制,从而实现不同的颜色 | color: rgb(155,0,51); |
RGBA | RGBA 扩展了 RGB,在 RGB 的基础上增加了 alpha 通道来设置颜色的透明度,需要使用 rgba() 函数实现 | color: rgba(155,0,0,0.1); |
HSL | 通过 hsl() 函数对颜色的色调、饱和度、亮度进行调节,从而实现不同的颜色 | color: hsl(120,100%,25%); |
HSLA | HSLA 扩展了 HSL,在 HSL 的基础上增加了 alpha 通道来设置颜色的透明度,需要使用 hsla() 函数实现 | color: hsla(240,100%,50%,0.5); |
实际开发中使用取色器取色就ok,这么多颜色也记不住。
1. 颜色名称
使用颜色名称来设置颜色是最简单的方法。CSS 中定义了一些表示颜色的关键字,如下表中所示,使用这些关键字可以轻松的为元素设置颜色。
h1 { color: red;}
p { color: blue;}
2、十六进制颜色
十六进制码是指通过一个以#
开头的 6 位十六进制数(0 ~ 9,a ~ f)表示颜色的方式,这个六位数可以分为三组,每组两位,依次表示 red、green、blue 三种颜色的强度,若每组的两个十六进制数相等,则可以缩写为1个,例如:
body{background-color: #ff89d1;}
3、RGB
RGB 是 red、green、blue 的缩写,它是一种色彩模式,可以通过对 red、green、blue 三种颜色的控制来实现各式各样的颜色。CSS 中要使用 RGB 模式来设置颜色需要借助 rgb() 函数,函数的语法格式如下:
rgb(red, green, blue)
-
其中 red、green、blue 分别表示三原色红、绿、蓝的强度,
-
这三个参数的取值可以是 0~255 之间的整数,
-
也可以是 0%~100% 之间百分比数值。
如下例所示:
div{color:rgb(199,125,134,0.8)}
4、 RGBA
RGBA 是 RGB 的扩展,在 RGB 的基础上又增加了对 Alpha 通道的控制,Alpha 通道可以设置颜色的透明度。
您需要借助 rgba() 函数来使用 RGBA 模式,该函数需要接收四个参数,除了 red、green、blue 三种颜色的强度外,还需要一个 0~1 之间的小数来表示颜色的透明度,其中 0 表示完全透明,1 表示完全不透明。rgba() 函数的语法格式如下:
rgba(red, green, blue, alpha);
其中 red、green、blue 分别表示三原色红、绿、蓝的强度,alpha 表示颜色的透明度,例如:
h1 { color: rgba(255, 0, 0, 0.5);}
p { color: rgba(0, 255, 0, 1);}
小结
-
标准色在开放中一般不会使用。因为颜色太重页不精准。所以UI设计的时候几乎不会考虑标准色
-
常用的使用:十六进制和rgb来进行定义会比较多.
-
在使用十六进制码表示颜色时,如果每组的两个十六进制数是相同的 例如 #00ff00、#ffffff、#aabbcc,则可以将它们简写为 #0f0、#fff、#abb。
-
但是更加建议大家使用浏览器来进行学习和观察。因为浏览器的调试工具会清楚的把每一种颜色显示出来。
9、css的基本选择器
1、标签选择器
使用html标签作为选择器,不足以界定和区分模块。
只在一个场景下使用,就是剔除每个元素的默认样式。因为不同浏览器在实现标签时有不同的样式,为了保持一致性,所以剔除默认样式。
<style>div {background: red;}</style>
2、id选择器
id是唯一的,对于定义样式,最好不要使用id,没有复用性。(id适用于js)
<style>#span1,#span2,#span3,#span4{color:gold}
</style><body><span id="span1">1111</span><span id="span2">2222</span><span id="span3">3333</span><span id="span3">4444</span></body>
3、类选择器
class选择器,可以定义多个,多个之间用空格隔开
<style>.span1{color: gold;}.span2{color: silver;}
</style><body><span class="span1">1111</span><span class="span2">2222</span><span class="span1">1111</span><span class="span2">2222</span></body>
4、通配符选择器
/*一般条件不用,*表示全部 */*{margin: 0;padding: 0;}
10、css的高级选择器
css层叠样式表:
因为基本选择器存在一些问题,只能给单一的元素进行设定对应的css样式,没办法达到css复用,继承的理念。那么就失去了css样式列表的价值。如果要实现复杂的网页,肯定会定义很多class选择器或者,id选择器,而且都是全局的。也就是没有约束的概念呢。所以w3c在定义css1.0版本的时候就已经考虑这个问题了,分别从:
-
继承
-
复用
-
约束
来制定css的标准和规范。
1、层次选择器
选择器 | 说明 |
---|---|
M N | 后代选择器,选择M元素内部后代的N元素(所有N元素) |
M>N | 子代选择器,选择M元素内部子代的N元素(所有第1级N元素) |
M~N | 兄弟选择器,选择M元素后所有的统计N元素 |
M+N | 相邻选择器,选择M元素相邻的下一个N元素(M、N是同级元素) |
后代选择器
理解:
后代选择器 :理解一个M家里有N儿子,孙子,重孙等等。使用后代选择器就是快速把这些:“儿子”,“孙子”,“重孙”找出来,进行操作(就是增加样式啦)。
通过多个后代,我们可以建立多个约束,每约束一层,复用性就会降低一些,通过多层约束,可以将样式只赋予到一层之上。(建立适当的层级,以此确定合适的复用性)
语法:M N{}
.first .second{ background: red; }说明:
在后代选择器中,M元素与N元素用空格隔开,表示选中M元素内部后代的N元素。
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>后代选择器</title><style type="text/css">#first p {color: red}.box .box2{background-color: green;}</style>
</head><body><div id="first" class="box"><p>Children-子元素</p><p class="p1">Children-子元素</p><div id="second" class="box2"><p class="p2">Children-子元素的子元素</p><p class="p2">Children-子元素的子元素</p></div><p class="p1">Children-子元素</p><p>Children-子元素</p></div></body></html></html>
父子选择器
理解:
父子选择器:理解,家族里有儿子,孙子。但是现在只找儿子。后面的就不去查找了。
语法:M>N
body>p{background: pink; }说明:子代选择器用于选中元素内部的某一个子元素。
<style>.father > .son{color: red;background-color: green;border: 2px solid #111;margin: 10px 0;}</style><body><div class="father"><div class="son">first SON</div><div class="son"><div class="son">SON - son</div><div class="son">SON - son</div></div></div></body>
相邻选择器
理解: 在一个家族中,我们找到比自己小的第一个兄弟进行照顾。
语法:M+N{}
.active+p {background: green;}说明:在兄弟选择器中,表示M元素后面的的所有某一兄的元素
<style type="text/css">.bro + .brother{background-color: aqua;}</style><body><div class="brother">brother</div><div class="bro">bro</div><div class="brother">brother</div><div class="brother">brother</div><div class="brother">brother</div></body>
兄弟选择器
理解: 在,我们找到比自己小的兄弟进行照顾。
语法:M ~ N{}
.active~p{ background: yellow; }说明:在相邻选择器中,M元素和N元素之间使用~符号,表示选中M元素后面的兄弟元素
<style type="text/css">.bro ~ .brother{background-color: aqua;}</style><body><div class="brother">brother</div><div class="bro">bro</div><div class="brother">brother</div><div class="brother">brother</div><div class="brother">brother</div></body>
2、结构伪类选择器
属性 | 描述 |
---|---|
E:first-child | 选择父元素里边的第1个子元素 |
E:last-child | 选择父元素里边的最后1个子元素 |
E:nth-child(n) | 选择父元素里边第n个子元素 |
E:nth-last-child(N) | 选择父元素里边倒数第n个子元素 |
E:first-of-type(n) | 选择父元素具有指定的类型的第一个元素 |
E:last-of-type(n) | 选择父元素具有指定的类型的最后一个元素 |
E F:nth-of-type(n) | 选择父元素具有指定类型的第N个F元素 |
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/*找到第一个元素*/ul li:first-child {font-size: 40px;color: #ccc;}/*找到最后一个元素*/ul li:last-child {font-size: 40px;color: #ccc;}/* - nth-child() 选择父元素里边的第n个子元素,将所有的子元素进行排序,不分种类注:n是从0开始,0,1,2,3.......为啥0没有效果呢,因为没有第0个元素,所以书写的时候从1开始哦 */ul li:nth-child(2) {font-size: 24px;color: red;}/* 选择父元素里边倒数第n个子元素 */ul li:nth-last-child(3) {font-size: 40px;color: red;}/* 选择父元素里边偶数项的子元素 :nth-child(2n) 2n或者even */ul li:nth-child(2n) {font-size: 20px;color: blueviolet;}/* 选择父元素里边奇数项的子元素 :nth-child(2n+1) 2n+1或者2n-1或者odd */ul li:nth-child(2n+1) {font-size: 20px;color: red;}/* nth-child(-n+i) 选择父元素里前i项子元素 */ul li:nth-child(-n+4) {font-size: 24px;color: cadetblue;}/* nth-child(n+i) 从第i项开始到最后一项结束 */ul li:nth-child(n+7) {font-size: 40px;color: yellow;}/* 选择父元素里边4的倍数项的子元素 */ul li:nth-child(4n) {font-size: 35px;color: darksalmon;}</style>
</head><body><ul><li>我是第1个li标签</li><li>我是第2个li标签</li><li>我是第3个li标签</li><li>我是第4个li标签</li><li>我是第5个li标签</li><li>我是第6个li标签</li><li>我是第7个li标签</li><li>我是第8个li标签</li><li>我是第9个li标签</li></ul>
</body></html>
3、属性选择器
属性 | 描述 | 关系 |
---|---|---|
E[attr] | 选择匹配具有属性attr的E元素 | 匹配 |
E[attr=val] | 选择匹配具有属性attr的E元素,并且属性值为val(其中val区分大小写) | 相等 |
E[attr^=val] | 选择匹配具有属性attr以val开头的任意E元素 | 以属性值开头 |
E[attr$=val] | 选择匹配具有属性attr以val结尾的任意E元素 | 以属性值结尾 |
E[attr*=val] | 选择匹配具有属性attr包含val的任意E元素 | 包含 |
<!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>/*1: 标签名[属性] ----关系:匹配关系*//*2: 标签名[属性="属性值"] --关系:相等 *//*3: 标签名[属性^="属性值"] ---关系:以属性值开头*//*4: 标签名[属性$="属性值"]---关系:以属性值结尾 *//*5: 标签名[属性*="属性值"] ---关系:包含关系*/input[type$='t'] {background: red;
}</style>
</head><body><form action="" method="post"><p>姓名:<input type="text"></p><p>密码:<input type="text" name="" id=""></p><p>性别:<input type="text" name="sex" id=""></p><p><input type="submit" value="提交"></p></form></body></html>
E[attr]属性选择器
-
关系:匹配关系
input[type] {background: red;
}
E[attr=val]属性选择器
input[type='text'] {background: red;
}
E[attr*=val]属性选择器
input[type*='t'] {background: red;
}
E[attr^=val]属性选择器
input[type^='p'] {background: red;
}
E[attr$=val]属性选择器
input[type$='t'] {background: red;
}
4、组合选择器
组合选择器:其实就是一种复用和抽象的一种思想,这里选择器和层次选择器一样会使用的非常的多,它的作用就是把:一类相关的样式用逗号进行分离,然后享受相同的样式效果。
html,
body,
div,
span,
/*省略若干*/
video {margin: 0;padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline;
}
11、伪元素
css伪元素用户以设置元素指定部分的样式。
1、前伪元素
-
在盒子的最前边生成伪元素,伪元素相当于行内元素,可以转成块元素
-
content:'' 为必写项
.box::before {content: 'Hello World';width: 30px;height: 30px;background-color: red;
}
2、后伪元素
在盒子的最后边生成伪元素,伪元素相当于行内元素,content:'' 为必写项
.box::after {content: 'World Hello';background-color: yellow;
}
12、css样式优先级
Css优先级和优先顺序
!important
> 内联(行内)样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器 > 通配选择器*
各项示例:
-
内联(行内)样式:写在标签属性style的样式,如 <p style="color=red">
-
ID选择器,如#id{…}
-
类选择器,如 .class{…}
-
属性选择器,如 input[type="email"]{…}
-
伪类选择器,如a:hover{…}
-
伪元素选择器,如 p::before{…}
-
标签选择器,如 input{…}
-
通配选择器,如 *{…}
具体的讨论很多很多,我觉得最主要的是:行内样式 style > 内部样式 (head+style) > 外部样式 (link+cssFile)
优先级把握不住的话,直接浏览器打开查看就行了,从上至下就是优先级顺序。
小结
- 如果有!important,只用看他自己
- 如果有行内,就不用看内部和外部了
- 如果没有行内,那就要看内部和外部了,先分析完内部之后,再分析外部,分析完毕后,再看他们的优先级
13、盒子模型
盒模型概述
在css中,几乎所有的元素都被一个个“盒子box” 包裹着。理解box,是进行精准布局以及处理元素排列的关键。
-
最内层是:content也就是用来存放内容,图片的区域。也就说的内容的宽高
-
第二层:padding内填充区域。
-
第三层:border边框区域
-
最外层:margin外边距
padding
padding: 英文翻译过来是:填充,覆盖的含义。也称之为:内填充
<!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>padding的认识</title><style>/*padding: 英文翻译过来是:填充,覆盖的含义。所以从字面意义就已经明白,它是一个往元素内部挤压和填充的效果*/.box {width: 100px;height: 100px;background: red;float: left;/*基本定义*//* padding-top: 10px;padding-right: 10px;padding-bottom: 10px;padding-left: 10px; *//*padding组合定义*/padding: 10px;}.container {background: #eee;overflow: hidden;}.box:nth-child(1) {background: red;}.box:nth-child(2) {background: greenyellow;}.box:nth-child(3) {background: goldenrod;}.box:nth-child(4) {background: aquamarine;}.box:nth-child(5) {background: bisque;}</style>
</head><body><div class="container"><div class="box box1">天青色等烟雨</div><div class="box box2">天青色等烟雨</div><div class="box box3">天青色等烟雨</div><div class="box box4">天青色等烟雨</div><div class="box box5">天青色等烟雨</div></div>
</body></html>
margin
margin: 英文翻译过来是:边缘,边距的含义。所以从字面意义就已经明白,它是指给一个元素增加以后,别的元素靠近以后产生的间隔。
<!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>margin的认识</title><style>/*margin: 英文翻译过来是:边缘,边距的含义。所以从字面意义就已经明白,它是指给一个元素增加以后,别的元素靠近以后产生的间隔。**常规定义:**margin-top:10px;margin-right:10px;margin-bottom:10px;margin-left:10px;**组合定义padding的几种方式:**margin:上右下左margin:上下 左右margin:上 左右 下margin:上 右 下 左*/.box {width: 100px;height: 100px;background: red;float: left;/*基本定义*//* margin-top: 10px;margin-right: 10px;margin-bottom: 10px;margin-left: 10px; *//*margin组合定义*/margin: 10px;}.container {background: #eee;overflow: hidden;}.box:nth-child(1) {background: red;}.box:nth-child(2) {background: greenyellow;}.box:nth-child(3) {background: goldenrod;}.box:nth-child(4) {background: aquamarine;}.box:nth-child(5) {background: bisque;}</style>
</head><body><div class="container"><div class="box box1">天青色等烟雨</div><div class="box box2">天青色等烟雨</div><div class="box box3">天青色等烟雨</div><div class="box box4">天青色等烟雨</div><div class="box box5">天青色等烟雨</div></div>
</body></html>
盒模型
-
标准盒模型,
-
记住:真实宽度 = (内容宽度是内容宽度width,内边距是内边距padding,边框是边框border) + 外边距margin。三者是共同来维持
-
样式属性是: box-sizing: content-box;
-
-
怪异盒模型:
-
记住:真实宽度 = (内边距padding + 边框border +内容宽度(文字或者图片)宽度 ) + 外边距margin,宽度固定的,内边距和边框增加直接从宽度中去瓜分。从而内容内容的宽度在减少。也就是说:140px是固定值,是多少就多少。不会随着内边距和边框的增加而改变。
-
样式属性是: box-sizing: border-box;
-
<!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></title><style>.box1 {width: 200px;height: 300px;background: rgb(205, 68, 91);margin: auto;float: left;margin-left: 10px;padding: 10px;}.box2 {width: 100%;height: 100%;background: green;padding: 20px;border: 2px solid;/* 怪异盒模型,增加padding和border后,会自动减少content的宽度 *//* box-sizing: border-box; */}</style>
</head><body><div class="box1"><div class="box2">比如:一款名为“银杏叶”的药品,单支开票价25.28元,比底价(8.5元)高出1.97倍。调查发现,其中医生提成为4元;另有头孢唑肟钠,底价6.5元,开票价16.5元,医生每支可拿2.5元提成。根据测算,药品普遍提成都可以达到开票价和底价差额的20%以上!</div></div><div class="box1">比如:一款名为“银杏叶”的药品,单支开票价25.28元,比底价(8.5元)高出1.97倍。调查发现,其中医生提成为4元;另有头孢唑肟钠,底价6.5元,开票价16.5元,医生每支可拿2.5元提成。根据测算,药品普遍提成都可以达到开票价和底价差额的20%以上!</div>
</body></html>
标准盒模型:
想消除这种影响的话,可以增加外层盒子的宽度或减小内层盒子的宽度。
怪异盒模型:
14、可视区域
可视区域:就是用户在访问网站中你可以看到的内容区域。我们也可以称之为视口 viewport ,这种可视区域分为:平铺或者居中,前端更多使用内容居中,后台更多使用平铺。
学习可视区域的目的:为了视频不同的屏幕大小
<!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>* {margin: 0;padding: 0;}body {padding: 20px;}.container {/*当页面宽度大于max-width时,页面宽度为设定宽度,小于max-width时会变成100%*/max-width: 1480px;margin: 0 auto;background: red;padding: 10px;}/*小于1600px的时候,使用1180px布局,颜色绿色*/@media screen and (max-width: 1600px) {.container {max-width: 1180px;background: green;}}/*小于1200px的时候,使用960px布局,颜色粉红色*/@media screen and (max-width: 1200px) {.container {max-width: 960px;background: pink;}}</style>
</head><body><div class="container"></div>
</body></html>
15、文档流
概述
文档流:将一个块级元素(div)放入容器中,它会像水流一样,自动铺满容器,将内联元素(span)放入,它会依次排列下去,一行放不下了就换下一行。如果整体高度超过容器,就会溢出。
特点:
-
自上而下排列,
-
内容从左到右存放,放满整个浏览器才会换行
文档流的控制
-
块元素-display:block–有文档流,受宽度高度,受内外边距的影响
-
行内块元素—display:inline-block – 没有文档流,受宽度高度,受内外边距的影响
-
行内元素(内联元素) ——display:inline—-没有文档流,不受宽度高度,受左右内外边距的影响
16、破坏文档流
为什么要破坏文档流:
如果是文档流的元素都是自上而下的方式定义,破坏文档流可以让块元素从上下排列变成左右排列。即为了将块元素变成左右排列。
display降级
使当前元素脱离默认文档流,可以使用降级:把块元素的display:block—display:inline-block 。
float 浮动
使当前元素脱离默认文档流,相当于让元素浮动了起来。再按照代码的先后顺序依次从左至右(float:left;) / 从右至左(float:right)排开,直到其margin遇见父级元素padding或其他浮动元素的边缘。
而最早定义浮动的目的是:就是为了实现文字环绕效果
BFC
BFC(block formatting context),块级格式化上下文。
如果一个元素具有 BFC,内部子元素再怎么翻江倒海、翻云覆雨,都不会影响外部的元素。
使用方式给元素增加:overflow:hidden;
position: absolute/fixed
position: absolute跟float其实很像,都能破坏正常的文档流,都能BFC,都有包裹性,一个div设置了position: absolute后,宽度会缩到刚好包裹住内部所有元素为止。通常网页的组件都会使用position来完成。
一个绝对定位元素,没有任何 left/top/right/bottom 属性设置,并且其祖先元素全部都是非定位元素,其位置在哪里?
flexbox & grid
flexbox和grid全新的布局方式,很轻松的去实现排兵布阵,也不会出现浮动所谓的浮动塌陷问题,以及对齐问题。
总结
-
盒模型:告诉我们每个元素都有一个盒模型,对应的样式属性是:box-sizing:content-box,在未来进行布局定位的时候一定要明白,在标准盒模型下,padding,border的改变会改变元素自身的宽度,如果同时外边距的也设定了,都会增大外层盒子的宽度。而在怪异盒模型box-sizing:border-box下就不会。
-
可视区域:告诉我们,在设计网页的时候要去考虑不同电脑的兼容性,你的视口的定义就必须要找到一个合理的值,当然如果你配合@media查询样式属性,就可以兼容各种设备的现实方式。
-
文档流,告诉我们。每个元素的定义和他们的规则,增加间距padding和margin,以及宽度和高度,在块和行内块都有效,但是行内元素除了左右间距有效,其它都无效。
17、浮动布局
float概述
使用float设定的元素可以漂浮起来。使当前元素脱离文档流,再按照代码的先后顺序依次从左至右(float:left;) / 从右至左(float:right)排列,直到它的外边界碰到父元素的内边界或者另外一个浮动元素的外边界为止,是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><style>body{border:1px solid #000;}.box1{width: 100px;height: 100px;background: green;border: 5px #ff0000 solid;}.box2{width:200px;height: 200px;background: red;border: 5px #00eaff solid;}</style>
</head>
<body><div class="box1"></div><div class="box2"></div></body>
</html>
可以看到,每个div元素都有自己的文档流,自上而下排列。
.box1增加浮动布局后
<style>body{border:1px solid #000;}.box1{width: 100px;height: 100px;background: green;border: 5px #ff0000 solid;float: left;}.box2{width:200px;height: 200px;background: red;border: 5px #00eaff solid;}</style>
可以看到 ,两个盒子重叠在一起了。
- 因为.box1增加了浮动布局,失去了文档流,漂浮起来了,box2自然就向上了。也就是说绿色盒子的位置是高于红色盒子的。
- box2盒子具有文档流。
.box1 增加float:right后
<style>body{border:1px solid #000;}.box1{width: 100px;height: 100px;background: green;border: 5px #ff0000 solid;float: right;}.box2{width:200px;height: 200px;background: red;border: 5px #00eaff solid;}</style>
可以看到,.box1的绿色盒子就单独进行排列在最右侧 ,现在就属于.box1遇到了父元素的内边界了。直接这放在body的最右侧
两个盒子都增加float:left
<style>body{border:1px solid #000;}.box1{width: 100px;height: 100px;background: green;border: 5px #ff0000 solid;float: left;}.box2{width:200px;height: 200px;background: red;border: 5px #00eaff solid;float: left;}</style>
两个或者多个浮动与元素都会放在另外一个浮动元素的后面。
两个盒子都增加float:right
<style>body{border:1px solid #000;}.box1{width: 100px;height: 100px;background: green;border: 5px #ff0000 solid;float: right;}.box2{width:200px;height: 200px;background: red;border: 5px #00eaff solid;float: right;}</style>
无论是左浮动还是右浮动,一定是第一个元素先过去,然后后面的元素跟随,讲究个先来后到的原则
浮动塌陷
浮动布局存在的问题也很明显,如果所有的元素都浮动起来以后,可能会影响后面元素排列。
<!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>body{border:1px solid #000;margin: 20px;}.box1{width: 100px;height: 100px;background: green;float:left;}.box2{width:200px;height: 200px;background: red;float:left;}/* 使用clear清除浮动 *//* .box3{clear: both;} */</style>
</head>
<body><div class="box1">box1</div><div class="box2">box2</div><div class="box3">我是后面的元素</div></body>
</html>
box1和box2都浮动起来,就没有文档流了,box3因为没有浮动,自然就上位,直接占用原来.box2或者.box2的元素为止。
清除浮动
clear清除浮动
/* 使用clear清除浮动 */.box3{clear: both;}
我们进行元素浮动的时候,往左和往右都可以实现左右结构布局,所有有可能往左,有可能往右。所以一般清除浮动是把两边都清除,也就是定义:clear:both .
添加浮动清除空元素
<!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>.box1{width: 200px;border:1px solid #000;}.box2{width:100px;height: 100px;background: red;float:left;}.clearfix{clear: both;}</style>
</head>
<body><div class="box1 "><div class="box2"></div><!--空标签解决浮动清除的问题--><div class="clearfix"></div></div><div>我是下面元素</div></body>
</html>
使用伪类清除浮动塌陷
<!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>.box1{width: 200px;border:1px solid #000;}.box2{width:100px;height: 100px;background: red;float:left;}.clearfix::after{content:"";display: block;clear: both;}</style>
</head>
<body><div class="box1 clearfix"><div class="box2"></div></div><div>我是下面元素</div></body>
</html>
-
::after / ::before设定的时候,必须要指定content:"",同时要明白,定义的伪元素是行内元素
-
而浮动清除必须是块元素。就有了display:block 升级的过程。
18、定位Position
position的含义:定位,安置,位置的意思。也就是说设置position的属性,可以把该属性安放或者放置到页面的任何位置。
-
CSS中的position属性用于指定一个元素在文档中的定位方式,其中top,right,bottom和left属性决定了该元素的最终位置。
-
可以通过:z-index 来设置定位元素的层次
相对定位relative
特点:
-
注意改变它们位置的方式都是:top,left,right,bottom
-
相对定位的元素是:当前元素自身在文档中的正常位置偏移给定的值。
-
它的特点是:
-
也不会清除文档流。
-
不会改变别的元素的位置
-
相对于自身进行位移
-
<!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>相对定位relative</title><style>.box1 {width: 100px;height: 100px;background: red;}.box2 {width: 100px;height: 100px;background: pink;position: relative;top: 100px;left: 100px;}.box3 {width: 100px;height: 100px;background: rgb(204, 146, 71);}</style>
</head><body><div class="box1"></div><div class="box2"></div><div class="box3"></div>
</body></html>
正常情况下box2的位置应该位于box1的正下方,由于relative的关系距上,距左100px。
绝对定位absolute
特点:
-
注意改变它们位置的方式都是:top,left,right,bottom
-
绝对定位的元素是:相对于指定非static的祖先元素进行偏移定位,如果没有找到就相对于浏览器的可视区进行偏移定位。
-
它的特点是:
-
会让元素本身脱离文档流
-
绝对定位的元素也也不占据任何的空间
-
具备内联盒子的特征:元素的宽度由内容来决定。和float有点类似
-
具备块元素盒子的特征:支持所有的样式
-
absolute元素并会受到滚动条的影响
-
一般用于布局中的贴片或者组件比较多。
-
<!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>绝对定位absolute</title><style>.box1 {width: 400px;height: 400px;border:1px solid #000;position: relative;}.box2 {width:300px;height: 300px;word-wrap:break-word;background: pink;border: 1px solid #666;margin: 50px;/*以最近的祖先元素为准*/position: relative;}.box3 {width: 100px;height: 100px;background: antiquewhite;position: absolute;top:100px;left:100px;}.box4 {width: 100px;height: 100px;background: #000;}</style>
</head><body><div class="box1"><div class="box2"><div class="box3"></div><div class="box4"></div></div></div>
</body></html>
固定定位fixed
特点:
-
注意改变它们位置的方式都是:top,left,right,bottom
-
固定定位和绝对定位很类似,但是fixed会把元素固定在可视区中
-
会让元素本身脱离文档流
-
固定定位的元素也也不占据任何的空间
-
具备内联盒子的特征:元素的宽度由内容来决定。和float有点类似
-
具备块元素盒子的特征:支持所有的样式
-
固定元素不受祖先元素的影响
-
fixed元素并不会受到滚动条的影响
-
一般用于布局中广告,导航,置顶,弹窗,消息框等等。
<!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>相对定位relative</title><style>body{height: 1000px;}.box1 {width: 400px;height: 400px;border:1px solid #000;position: relative;}.box2 {width:300px;height: 300px;word-wrap:break-word;background: pink;border: 1px solid #666;margin: 50px;/*以最近的祖先元素为准*/position: relative;}.box3 {width: 100px;height: 100px;background: antiquewhite;position: fixed;top:0;left:0;}.box4 {width: 100px;height: 100px;background: #000;}</style>
</head><body><div class="box1"><div class="box2"><div class="box3"></div><div class="box4"></div></div></div>
</body></html>
粘性定位sticky
特点:
-
注意改变它们位置的方式都是:top,left,right,bottom
-
粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定的阈值前为相对定位relative,之后为fixed固定定位
<!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>粘性定位sticky</title><style>body{height: 2000px;}.box1 {height: 30px;border:1px solid #000;position: sticky;top:10px}</style>
</head><body><p>aaaaaaaaaaaaaaaaaaaaaa</p><p>aaaaaaaaaaaaaaaaaaaaaa</p><div class="box1">我是一个盒子</div><p>aaaaaaaaaaaaaaaaaaaaaa</p><p>aaaaaaaaaaaaaaaaaaaaaa</p><p>aaaaaaaaaaaaaaaaaaaaaa</p></body></html>
css还有一些内容,如弹性布局flex,网格布局grid,但我确实有点学不下去了,我学习前端的目的一开始就是为了对前端有所了解,能够大概看懂代码。但是css学起来实在太多了,对于一个没有艺术细胞,没有设计细胞的我来说设计起来确实很难受,剩下的我就不看了,如果以后有需要,那就边看遍查吧。或者等我啥时候心能静下来,再继续学习吧。目前是不想在学css了,接下来去看看js吧。
相关文章:
css
已经学完html了,继续学习前端三剑客html、css、js之一的css。😀 1、什么是css css:用于网页结构的布局和修饰的一种样式脚本 层叠样式表:(英文全称:Cascading Style Sheets), 简称:样式表&…...
探索 Bokeh:轻松创建交互式数据可视化的强大工具
探索 Bokeh:轻松创建交互式数据可视化的强大工具 在数据科学和数据分析领域,交互式数据可视化是一项不可或缺的技能。Bokeh 是一个强大的 Python 库,它可以帮助我们快速构建高质量的交互式图表和仪表盘,同时兼具高性能和灵活性。…...
光谱相机在农业的应用
一、作物生长监测1、营养状况评估 原理:不同的营养元素在植物体内的含量变化会导致植物叶片或其他组织的光谱反射率特性发生改变。例如,氮元素是植物叶绿素的重要组成部分,植物缺氮时,叶绿素含量下降,其在可见光波段&a…...
SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟
RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟 这里RTC做了两个定时器一个是12秒,一个是185秒: #define RTCEVT_NUM ((uint8_t) 0x02)//当前定时器事件数#define RTCEVT_12S ((uint32_t) 0x0000002)//定时器1s事件 /*整分钟定时器事件,因为其余的…...
【Java基础面试题026】Java中的String、StringBuffer和StringBuilder的区别是什么?
回答重点 他们都是Java中处理字符串的类,区别主要体现在可变性、线程安全和性能上 1)String 不可变:String是不可变类,字符串对象创建,存储在堆中,字符串内容存储在字符串常量池中,一旦创建内…...
Ajax中的axios
既然提到Ajax,那就先来说一说什么是Ajax吧 关于Ajax Ajax的定义 Asynchronous JavaScript And XML:异步的JavaScript和XML。 反正就是一句话总结: 使用XML HttpRequest 对象与服务器进行通讯。 AJAX 是一种在无需重新加载整个网页的情况下&…...
学习ASP.NET Core的身份认证(基于JwtBearer的身份认证3)
根据参考文献1中JWT Token的组成及计算方式,对照参考文献2中的界面,实现简单的JWT Token解析及验证程序,主要功能包括: 1)拆分Token字符串,将前两段使用Base64UrlEncoder类解码并转为UTF8字符串&#x…...
jmeter后端监视器
一、概述 JMeter 后端监听器(Backend Listener)是 JMeter 提供的一个功能强大的插件,用于将测试执行期间收集的性能数据发送到外部系统进行监控和分析。通过后端监听器,您可以实时地将 JMeter 测试执行期间收集的数据发送到外部系统,如图形化展示、数据库、数据分析工具等…...
vue CSS 自定义宽高 翻页 剥离 效果
新增需求,客户需要类似PPT的剥离效果用于WEB页面翻页,查找资料后,参考下方的掘金博主的文章,并将HTML修改成vue的页面进行使用。其中宽度、高度改成了变量,样式style中的属性与宽高的关系整理成了公式进行动态计算。 …...
函数:参数与返回值类型
本文我们将深入探讨 函数的参数和返回值类型,这是 TypeScript 中最常用的特性之一。了解如何为函数参数和返回值添加类型,不仅能帮助你避免常见的错误,还能提高代码的可读性和可维护性。 在 JavaScript 中,函数的参数和返回值是没…...
【学习总结|DAY022】Java网络编程
网络编程是Java开发中非常重要的一环,它允许程序与网络上的其他设备进行数据交互。本文将介绍Java网络编程的基础知识,包括网络编程三要素、UDP和TCP通信协议,以及BS架构的原理。 网络编程三要素 网络通信至少需要三个要素:IP地…...
帝国cms同一条信息使用不同的多个内容页模板伪静态实现教程
理论上可以实现一条信息使用无数个内容页模板,实现过程: 1、/e/action目录下新建bishun.php,内容如下: <?php require(../class/connect.php); require(../class/db_sql.php); require(../class/functions.php); require(..…...
解决Linux<云服务器>访问HuggingFace的问题(操作记录)
一、准备配置文件 cache.db clash config.yaml Country.mmdb(1)cache.db、clash的获取 链接:百度网盘 提取码:82t0 (2)config.yaml、Country.mmdb的获取 启动本地已安装的clash软件→找到“配置订阅”…...
selenium 报错 invalid argument: invalid locator
环境: Python3.12.2 selenium4.0 报错信息: invalid argument: invalid locator 错误分析: selenium语法错误,find_element方法少写By.XPATH参数 错误语法如下: driver.find_element(//div[id"myid"]) 解决办…...
springboot——登录认证(包括jwt技术、拦截器过滤器)
实现登录的原理 用户名和密码都输入正确,登录成功,否则,登录失败 登录功能的本质:查询,根据用户名和密码查询员工信息 实现登录的步骤 登录需要确定用户的id、username、name、token(用于 身份校验),对此要重新定义一个类LoginInfo public class LoginInfo {priva…...
【IN、NOT、AND、OR】在 MySql 中的使用方法,使用场景、注意事项
目录 IN NOT AND OR 注意事项: 使用场景: IN 用于指定某个字段的值在一个预定义的列表中。 SELECT * FROM users WHERE age IN (20, 25, 30);查询返回 age 字段 是20、25 、30 的用户记录。 NOT 用于对条件进行否定。 查询将返回与指定 条件相…...
html <a>设置发送邮件链接、打电话链接 <a href=“mailto:></a> <a href=“tel:></a>
1.代码 <ul><li>电话:<a href"tel:18888888888">188-8888-8888</a></li><li>邮箱:<a href"mailto:10000qq.com">10000qq.com</a></li><li>邮箱:<a hre…...
Mac上详细配置java开发环境和软件(更新中)
文章目录 概要JDK的配置JDK下载安装配置JDK环境变量文件 Idea的安装Mysql安装和配置Navicat Premium16.1安装安装Vscode安装和配置Maven配置本地仓库配置阿里云私服Idea集成Maven Cpolar快速入门 概要 这里使用的是M3型片 14.6版本的Mac 用到的资源放在网盘 链接: https://pan…...
游戏渠道假量解决方案
某推广公司在推广过程中被查出“短期内点击量激增”“存在同一地址多次访问”“已注册用户重复注册”等数据作弊行为,法院判罚退还服务费200余万元,并赔偿违约金约350万元。 某公司为提升其游戏在应用商店榜单排名,委托某网络公司进行下载、注…...
Java重要面试名词整理(二):SpringMyBatis
文章目录 Spring篇Spring核心推断构造方法AOP动态代理Advice的分类Advisor的理解AOP相关的概念 定义BeanASM技术JFR依赖注入循环依赖LifecycleSpring AOT Spring事务Spring事务传播机制Spring事务传播机制是如何实现的呢?Spring事务传播机制分类 SpringMVCHandlerHandlerMappi…...
powershell美化
powershell美化 写在前面 除了安装命令,其他都是测试命令,后续再写进配置文件 安装主题控件 安装主题oh-my-posh,powershell中执行 winget install JanDeDobbeleer.OhMyPosh -s winget oh-my-posh init pwsh | Invoke-Expression # 查看…...
D102【python 接口自动化学习】- pytest进阶之fixture用法
day102 pytest的usefixtures方法 学习日期:20241219 学习目标:pytest基础用法 -- pytest的usefixtures方法 学习笔记: fixture调用方法 实际应用 总结 pytest.mark.usefixtures(func),pytest的usefixtures方法,无…...
Excel生成DBC脚本源文件
Excel制作 新建一个Excel,后缀为“.xls” 工作本名称改为“CAN_Matrix” 在首行按照列来起名字,在里面只需要填写必须的内容即可。 列数名称第0列Message Name第1列Message Format第2列Message ID第3列Message Length (byte)第4列Message Transmitte…...
【Leetcode 每日一题】2545. 根据第 K 场考试的分数排序
问题背景 班里有 m m m 位学生,共计划组织 n n n 场考试。给你一个下标从 0 0 0 开始、大小为 m n m \times n mn 的整数矩阵 s c o r e score score,其中每一行对应一位学生,而 s c o r e [ i ] [ j ] score[i][j] score[i][j] 表示…...
Spring MVC(上)
上一篇博客的补充: 一般出现这种问题,我们就要检查版本了 我们需要查看这几个地方是否版本是对的 注意: jdk版本运行取决于什么? 1.通过cmd运行,jdk版本就是你设置的环境变量 2.通过Idea运行,取决于该项目设置的JDK版本 创建项目的方式: 1> 我们上个博客用idea进行创建 2…...
【优选算法---归并排序衍生题目】剑指offer51---数组中的逆序对、计算右侧小于当前元素的个数、翻转对
一、剑指offer51---数组中的逆序对 题目链接: LCR 170. 交易逆序对的总数 - 力扣(LeetCode) 题目介绍: 在数组中的两个数字,如果前面⼀个数字大于后面的数字,则这两个数字组成⼀个逆序对。输入一个数组,…...
单体到微服务:电商平台架构的演变与可扩展性探索
目录 一、整体理解可扩展性 二、从电商平台架构发展看架构的可扩展性 (一)单体架构 (二)分布式架构 (三)SOA架构 (四)微服务架构 三、1号店App服务端架构升级说明 ÿ…...
clickhouse-副本和分片
1、副本 1.1、概述 集群是副本和分片的基础,它将ClickHouse的服务拓扑由单节点延伸到多个节点,但它并不像Hadoop生态的某些系统那样,要求所有节点组成一个单一的大集群。ClickHouse的集群配置非常灵活,用户既可以将所有节点组成…...
C语言版解法力扣题:将整数按权重排序
1.题目描述 我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数: 如果 x 是偶数,那么 x x / 2 如果 x 是奇数,那么 x 3 * x 1 比方说,x3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 -->…...
ubuntu18.04升级到ubuntu20.04
为了使用qt6,在ubuntu18.04上各种折腾失败,无奈只能升级到ubuntu20.04, 按照网上的教程没成功。自己摸索了 lsb_release -a df -h sudo apt update sudo apt upgrade -y sudo apt dist-upgrade -y sudo apt autoremove -y sudo apt clean sudo apt inst…...
【我的 PWN 学习手札】IO_FILE 之 stdin任意地址写
我们知道,stdin会往“缓冲区”先读入数据,如果我们劫持这个所谓“缓冲区”到其他地址呢?是否可以读入数据到任意地址?答案是肯定的。 注意!代码中的“-------”分隔,是为了区分一条调用链上不同代码片段&am…...
<mutex>注释 11:重新思考与猜测、补充锁的睡眠与唤醒机制,结合 linux0.11 操作系统代码的辅助(上)
(46)问题的起源: 因为上面的内核代码,我们编写多线程代码时,对手里的家伙事不那么自信。但我们知道,多线程在竞争锁时,若得不到锁,会进入睡眠,并会在被唤醒后重新尝试得…...
C/C++圣诞树
系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C精美圣诞树11C/C俄罗斯方块12C/C贪吃蛇13C/C孤单又灿烂的神-鬼怪14C/C闪烁的爱心15C…...
upload-labs-master第21关超详细教程
目录 环境配置解题思路利用漏洞 操作演示 环境配置 需要的东西 phpstudy-2018 链接: phpstudy-2018 提取码:0278 32 位 vc 9 和 11 运行库 链接: 运行库 提取码:0278 upload-labs-master 靶场 链接: upload-lasb-ma…...
Python基础——数学运算
目录 1. 算术运算符 2. 比较运算符 3. 赋值运算符 4. 逻辑运算符 5. 成员运算符 6. 身份运算符 7. 三目运算符 Python数学计算通过多种运算符来执行,常用的运算符类型包括算术运算符、比较运算符、赋值运算符、逻辑运算符、成员运算符、身份运算符、三目…...
ubuntu 安装更新 ollama新版本
ubuntu 安装更新 ollama新版本 我这里是 2024-12-18 ollama 版本是 0.5.3 1手动下载 ollama-linux-amd64.tgz https://github.com/ollama/ollama/releases 2下载脚本 https://ollama.com/install.sh install.sh 和 ollama-linux-amd64.tgz 在相同路径下 修改:…...
汽车IVI中控开发入门及进阶(45):凌阳科技车载娱乐芯片
概述: Sunplus科技有限公司成立于1990年,是一家领先的多媒体和汽车应用芯片提供商,如DVD播放器、便携式DVD播放器、家庭娱乐音频产品、汽车信息娱乐和高级驾驶辅助系统(ADAS)。与此同时,凌阳正在为消费类、便携式和连接设备上的广泛应用提供高速I/O IP、高性能数据转换I…...
Linux export命令
本文来自智谱清言 --------- 在Linux系统中,export 是一个用来设置环境变量的命令。 环境变量是操作系统运行时用于存储有关系统环境的信息的变量,它们对于用户和程序都是可访问的。下面是关于 export 命令的一些基本用法: 基本语法 ba…...
AI自我进化的新篇章:谷歌DeepMind推出苏格拉底式学习,语言游戏解锁无限潜能
各位AI爱好者、技术研究者,大家好!今天我们来聊聊一个令人兴奋的AI研究新进展——谷歌DeepMind推出的“苏格拉底式学习”方法。这项研究的独特之处在于,它让AI在没有外部数据的情况下,通过“语言游戏”实现自我进化,这…...
【BUG】记一次context canceled的报错
文章目录 案例分析gorm源码解读gin context 生命周期context什么时候cancel的什么时候context会被动cancel掉呢? 野生协程如何处理 案例分析 报错信息 {"L":"ERROR","T":"2024-12-17T11:11:33.0050800","file"…...
JAVA前端开发中type=“danger“和 type=“text“的区别
在前端开发中,type 属性通常用于指定按钮或其他元素的样式或行为。不同的框架和库可能对 type 属性有不同的定义和用法。常见的框架包括 Bootstrap、Ant Design(antd)、Element Plus 等。下面我将分别介绍在这些框架中 type"danger"…...
sqlite3 支持位运算 和view和 triger
数据设置条件以后可以.根据门限自动调整其他的值 由数据库记录修改时间,及记录-> 网元设备的告警产生时间,设置超时清除时间,记录系统的原始时间戳 CPp 有 sqlite 支持 json 导出字符串,json 库将字符串,映射为结构体 triger update table 更新到一个 可设置参数列表 ,view …...
Mysql复习(一)
数据库系统的核心是( 数据库管理系统 )。 以下的标识符中符合标识符命名规则的有几个?(3个) 3abc7, abc73, bc73a, c73ab,*73abc 标识符的第一个字符允许包括哪些符号?( _ 或者 或者 #) 关系表达式运算的…...
Redis bitmaps 使用
应用场景: 记录id为 1 的用户,2024年12月签到情况,并统计; 记录 1号签到 zxys-redis:0>setbit 1:202412 1 1 记录 2号签到 zxys-redis:0>setbit 1:202412 2 1 记录 3号未签到 zxys-redis:0>setbit 1:202412 3 0 …...
计算无人机俯拍图像的地面采样距离(GSD)矩阵
引言 在无人机遥感、测绘和精细农业等领域,地面采样距离(Ground Sampling Distance,简称 GSD)是一个非常重要的指标。GSD 是指图像中每个像素在地面上实际代表的物理距离,通常以米或厘米为单位。GSD 决定了图像的空间…...
Java基础 | 数据库的命名规范
数据库的命名规范 1. 基本原则2. 命名规范详解2.1 命名禁止项2.2 命名规范3. 通用字段规范4. 特殊表命名建议 1. 基本原则 统一性:全库采用一致的命名规范简洁性:在表达清晰的前提下尽量简短规范性:遵循数据库标准规范可读性:命名…...
计算机网络基础(2):网络安全/ 网络通信介质
1. 网络安全威胁 网络安全:目的就是要让网络入侵者进不了网络系统,及时强行攻入网络,也拿不走信息,改不了数据,看不懂信息。 事发后能审查追踪到破坏者,让破坏者跑不掉。 网络威胁来自多方面:…...
Reactor
文章目录 正确的理解发送double free问题 1.把我们的reactor进行拆分2.链接管理3.Reactor的理论 listensock只需要设置_recv_cb,而其他sock,读,写,异常 所以今天写nullptr其实就不太对,添加为空就没办法去响应事件 获…...
介绍 Html 和 Html 5 的关系与区别
HTML(HyperText Markup Language)是构建网页的标准标记语言,而 HTML5 是 HTML 的最新版本,包含了一些新的功能、元素、API 和属性。HTML5 相对于早期版本的 HTML(比如 HTML4)有许多重要的改进和变化。以下是…...
已有 containerd 的情况下部署二进制 docker 共存
文章目录 [toc]学习目的开始学习dockerd启动 containerd准备配置文件启动 containerd 启动 docker准备配置文件启动 docker 环境验证停止 docker 和 containerd 学习目的 使用容器的方式做一些部署的交付,相对方便很多,不需要担心别人的环境缺少需要的依…...