CSS全解析

文章目录

  • CSS全解析
    • 一、CSS是什么
    • 二、基本语法规范
    • 三、引入方式
      • (一)内部样式表
      • (二)行内样式表
      • (三)外部样式
    • 四、代码风格
      • (一)样式格式
      • (二)样式大小写
      • (三)空格规范
    • 五、选择器
      • (一)选择器的功能
      • (二)选择器的种类
        • 1. 基础选择器
        • 2. 复合选择器
    • 六、常用元素属性
      • (一)字体属性
      • (二)文本属性
      • (三)背景属性
      • (四)圆角矩形
    • 七、Chrome调试工具
      • (一)标签页含义
    • 八、元素的显示模式
      • (一)块级元素
      • (二)行内元素/内联元素
    • 九、盒模型
      • (一)边框
      • (二)内边距
      • (三)外边距
      • (四)去除浏览器默认样式
    • 十、弹性布局
      • (一)初体验
      • (二)flex布局基本概念
      • (三)常用属性

CSS全解析

在现代网页开发中,CSS(层叠样式表,Cascading Style Sheets)就像是一位幕后的魔法师,将平淡无奇的HTML结构变幻成视觉上令人惊艳的网页。今天,我们就来深入探索CSS的奇妙世界。

一、CSS是什么

CSS是层叠样式表,它在网页开发中扮演着不可或缺的角色。它能够对网页中元素位置的排版进行像素级精确控制,就像一位技艺精湛的工匠,精心雕琢每个元素的布局。通过CSS,我们可以轻松实现美化页面的效果,将内容与样式分离,使HTML文件专注于结构,而CSS文件专注于样式呈现。这就好比化妆术(被誉为“东方四大邪术”之一),可以为网页这个“脸庞”增添魅力。

二、基本语法规范

CSS的基本语法遵循“选择器 + {一条/N条声明}”的模式。其中,选择器如同指挥官,决定针对哪些元素进行修改(也就是“找谁”);而声明则像指令,决定对这些元素修改什么(也就是“干啥”)。声明中的属性是键值对的形式,使用“;”来区分不同的键值对,使用“:”区分键和值。

CSS的注释使用“/* */”,这在代码中添加解释和说明时非常有用,我们还可以使用“ctrl + /”在代码编辑器中快速切换注释状态。在HTML中,CSS可以写在“style”标签内,这个“style”标签理论上可以放到页面的任意位置,但一般放到“head”标签内,这样有助于提高代码的可读性和维护性。

三、引入方式

(一)内部样式表

内部样式表是将CSS代码写在“style”标签中,然后嵌入到HTML内部。虽然理论上“style”标签可以放在HTML的任何地方,但将其放在“head”标签中是一种良好的实践,这样可以使样式和页面结构分离。然而,这种方式也有缺点,当CSS内容较多时,分离得还不够彻底。在实际开发中,这种方式并不常用,不过在一些简单的页面或者小型项目中,还是可以看到它的身影,比如搜狗搜索中仍然保留着这种写法。

(二)行内样式表

行内样式表是通过元素的“style”属性来指定某个标签的样式。这种方式适合编写简单的样式,并且只针对某个特定的标签生效。它的缺点是不能编写太复杂的样式,不过它的优先级较高,会覆盖其他方式定义的样式。例如:

<style>p {/* 设置字体颜色 */color: red;/* 设置字体大小 */font - size: 30px;}
</style>
<p style="color: green;">hello</p>

在这个例子中,行内样式的“color: green”会覆盖在“style”标签中定义的“color: red”。

(三)外部样式

外部样式是实际开发中最常用的方式。其步骤包括创建一个.css文件,然后使用“link”标签将这个CSS文件引入到HTML文件中。这种方式的优点是样式和结构彻底分离,使得代码的可维护性大大提高。但它也有一个小缺点,那就是受到浏览器缓存的影响,修改之后不一定立刻生效。这是因为浏览器为了提高访问效率,会对网页依赖的资源(如图片、CSS、JS等)进行缓存。当我们修改了外部的CSS文件后,可能需要通过“ctrl + F5”强制刷新页面,才能让浏览器重新获取最新的CSS文件。

四、代码风格

(一)样式格式

  1. 紧凑风格:这种风格的代码较为紧凑,节省空间,但可能在可读性上稍逊一筹。
  2. 展开风格(推荐):代码展开,结构清晰,易于阅读和维护,是一种比较好的代码编写风格。

(二)样式大小写

虽然CSS不区分大小写,但为了保持代码的规范性和一致性,在开发时统一使用小写字母是一种良好的编程习惯。

(三)空格规范

在CSS中,冒号后面带空格,选择器和“{”之间也有一个空格,这样可以使代码更加清晰易读。

五、选择器

(一)选择器的功能

选择器的主要功能是选中页面中指定的标签元素,只有先选中元素,才能设置元素的属性。这就好比在游戏(如SC2、War3)中,需要先选中单位,才能指挥该单位行动。

(二)选择器的种类

1. 基础选择器
  • 标签选择器:能够快速为同一类型的标签都选择出来,但不能进行差异化选择。例如,我们可以使用“p”标签选择器来设置所有“p”标签的样式:
p {color: red;
}
  • 类选择器:它可以实现差异化表示不同的标签,多个标签可以使用同一个类名,一个标签也能使用多个类名(多个类名之间用空格分割)。类名以“.”开头,下方的标签使用“class”属性来调用。类选择器是最灵活、最常用的选择器之一。例如:
.blue {color: blue;
}
<div class="blue">咬人猫</div>
<div>咬人猫</div>
  • id选择器:和类选择器类似,但在HTML中,id是唯一的,不能被多个标签使用,同一个id在一个HTML中只能出现一次。CSS中使用“#”开头表示id选择器,并且id选择器的值和html中某个元素的id值相同,html的元素id不必带“#”。例如:
#myElement {background - color: yellow;
}
<div id="myElement">这是一个独特的元素</div>
  • 通配符选择器:使用“*”定义,选取所有的标签。不过这种选择器通常在特殊情况下使用,因为它会选中页面的所有内容。例如:
* {color: red;
}
2. 复合选择器
  • 后代选择器:又叫包含选择器,用于选择某个父元素中的某个子元素。元素1和元素2之间使用空格分割,元素1是父级,元素2是子级,只会选择元素2,而不影响元素1。这种选择器非常灵活,可以是任意基础选择器的组合。例如:
ol li {color: red;
}
  • 子选择器:和后代选择器类似,但只能选择子标签,使用大于号“>”分割。它只会选择亲儿子元素,不选孙子元素。例如:
.two > a {color: red;
}
  • 并集选择器:用于选择多组标签(集体声明),通过逗号“,”分割多个元素,表示同时选中这些元素。任何基础选择器都可以使用并集选择器,建议竖着写,每个选择器占一行,最后一个选择器不能加逗号。例如:
div, h3 {color: red;
}
  • 伪类选择器
    • 链接伪类选择器:用于选择不同状态的链接,如“a:link”选择未被访问过的链接,“a:visited”选择已经被访问过的链接,“a:hover”选择鼠标指针悬停上的链接,“a:active”选择活动链接(鼠标按下了但是未弹起)。在书写时要按照“LVHA”的顺序,否则可能会导致某些样式失效。在实际开发中,主要给链接做一个样式,然后给“a:hover”做一个样式即可,“link”、“visited”、“active”用的相对较少。例如:
a:link {color: black;/* 去掉a标签的下划线 */text - decoration: none;
}a:visited {color: green;
}a:hover {color: red;
}a:active {color: blue;
}
- **:focus伪类选择器**:选取获取焦点的input表单元素。例如:
.three > input:focus {color: red;
}

六、常用元素属性

(一)字体属性

  • 字体设置:字体名称可以使用中文,但不建议,因为可能会存在兼容性问题。多个字体之间使用逗号分隔,从左到右查找字体,如果都找不到,会使用默认字体。如果字体名有空格,需要使用引号包裹。例如:
body {font - family: '微软雅黑', 'Microsoft YaHei';
}
  • 字体大小:不同浏览器的默认字号不一样,所以最好给一个明确的值,单位通常为“px”。可以给“body”标签设置一个全局的字体大小,同时标题标签可能需要单独指定大小。例如:
p {font - size: 20px;
}
  • 字体粗细:可以使用数字表示粗细,“700 == bold”,“400 == normal”,取值范围是100 - 900。例如:
p {font - weight: bold;font - weight: 700;
}
  • 文字样式:虽然很少把某个文字变倾斜,但经常需要把“em”、“i”标签改成不倾斜。例如:
.font - style em {font - style: normal;
}

(二)文本属性

  • 文本颜色:可以使用预定义的颜色值(直接是单词)、十六进制形式或者RGB方式来设置文本颜色。例如:
color: red;
color: #ff0000;
color: rgb(255, 0, 0);
  • 文本对齐:用于控制文字水平方向的对齐,也能控制图片等元素的水平对齐方式,取值有“center”(居中对齐)、“left”(左对齐)、“right”(右对齐)。例如:
.text - align.three {text - align: center;
}
  • 文本装饰:常用取值有“underline”(下划线,常用于链接)、“none”(啥都没有,可用于去掉a标签的下划线)、“overline”(上划线,不常用)、“line - through”(删除线,不常用)。例如:
.text - decorate.one {text - decoration: none;
}
  • 文本缩进:控制段落的首行缩进(其他行不影响),单位可以使用“px”或者“em”,使用“em”作为单位更好,1个“em”就是当前元素的文字大小。缩进可以是负的,表示往左缩进,但可能会导致文字冒出去。例如:
.text - indent.one {text - indent: 2em;
}
  • 行高:行高指的是上下文本行之间的基线距离,它等于上边距 + 下边距 + 字体大小。行高也可以取“normal”等值,这个值取决于浏览器的实现。当行高等于元素高度时,可以实现文字的垂直居中对齐。例如:
.line - height.two {height: 100px;line - height: 100px;
}

(三)背景属性

  • 背景颜色:默认是“transparent”(透明)的,可以通过设置颜色的方式修改。例如:
body {background - color: #f3f3f3;
}
  • 背景图片:比“img”标签更方便控制位置(图片在盒子中的位置)。在设置背景图片时,要注意“url”不要遗漏,“url”可以是绝对路径,也可以是相对路径,并且可以加引号,也可以不加。例如:
.bgi.one {background - image: url(rose.jpg);height: 300px;
}
  • 背景平铺:重要取值有“repeat”(平铺)、“no - repeat”(不平铺)、“repeat - x”(水平平铺)、“repeat - y”(垂直平铺),默认是“repeat”。背景颜色和背景图片可以同时存在,背景图片在背景颜色的上方。例如:
.bgr.one {background - image: url(rose.jpg);height: 300px;background - repeat: no - repeat;
}
  • 背景位置:可以通过方位名词(如“top”、“left”、“right”、“bottom”)、精确单位(坐标或者百分比,以左上角为原点)或者混合单位(同时包含方位名词和精确单位)来修改图片的位置。例如:
.bg p.one {background - image: url(rose.jpg);height: 500px;background - repeat: no - repeat;background - color: purple;background - position: center;
}
  • 背景尺寸:可以填具体的数值(如“40px 60px”表示宽度为40px,高度为60px),也可以填百分比(按照父元素的尺寸设置),还可以使用“cover”(把背景图像扩展至足够大,以使背景图像完全覆盖背景区域,但背景图像的某些部分也许无法显示在背景定位区域中)或者“contain”(把图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域)。例如:
.bgs.one {width: 500px;height: 300px;background - image: url(rose.jpg);background - repeat: no - repeat;background - position: center;background - size: contain;
}

(四)圆角矩形

通过“border - radius”属性可以使边框带圆角效果。如果“border - radius”的值为正方形宽度的一半,则可以生成圆形;如果为矩形高度的一半,则可以生成圆角矩形。例如:

div {width: 200px;height: 200px;border: 2px solid green;border - radius: 100px;/* 或者用50%表示宽度的一半 */border - radius: 50%;
}

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

border - top - left - radius: 10px;
border - top - right - radius: 20px;
border - bottom - right - radius: 30px;
border - bottom - left - radius: 40px;

七、Chrome调试工具

在开发过程中,Chrome调试工具是一个非常强大的助手。我们可以通过两种方式打开它,直接按“F12”键或者鼠标右键页面然后选择“检查元素”。

(一)标签页含义

  • elements:可以查看标签结构,还能通过“ctrl + 滚轮”进行缩放,“ctrl + 0”恢复原始大小。使用左上角箭头选中元素后,在右侧可以查看当前元素的属性,包括引入的类,也可以修改选中元素的CSS属性,并且如果CSS样式写错了,会在这里有提示(黄色感叹号)。
  • console:用于查看控制台信息。
  • source:查看源码并进行断点调试。
  • network:查看前后端交互过程。
  • application:查看浏览器提供的一些扩展功能,如本地存储等。
  • Performance、Memory、Security、Lighthouse:这些暂时不使用,先不深究。

八、元素的显示模式

在CSS中,HTML标签的显示模式主要有块级元素和行内元素两种。

(一)块级元素

常见的块级元素有“h1 - h6”、“p”、“div”、“ul”、“ol”、“li”等。块级元素的特点是独占一行,高度、宽度、内外边距、行高都可以控制,宽度默认是父级元素宽度的100%,并且是一个容器(盒子),里面可以放行内和块级元素。不过要注意,文字类的元素内不能使用块级元素,例如“p”标签主要用于存放文字,内部不能放“div”等块级元素。

(二)行内元素/内联元素

常见的行内元素有“a”、“strong”、“b”、“em”、“i”、“del”、“s”、“ins”、“u”、“span”等。行内元素的特点是不独占一行,一行可以显示多个;设置高度、宽度、行高无效;左右外边距有效(上下无效),内边距有效;默认宽度就是本身的内容;并且行内元素只能容纳文本和其他行内元素,不能放块级元素。同时要注意,“a”标签中不能再放“a”标签(虽然chrome不报错,但不建议这么做),“a”标签里可以放块级元素,但更建议先把“a”转换成块级元素。

我们可以使用“display”属性来改变元素的显示模式,例如“display: block”可以将元素改成块级元素(常用),“display: inline”改成行内元素(很少用),“display: inline - block”改成行内块元素。

九、盒模型

在CSS中,每一个HTML元素都可以看作是一个矩形的“盒子”,这个盒子由边框(border)、内容(content)、内边距(padding)、外边距(margin)这几个部分构成。

(一)边框

边框有基础属性,包括粗细(border - width)、样式(border - style,默认没边框,如solid为实线边框、dashed为虚线边框、dotted为点线边框)、颜色(border - color),这些属性支持简写且没有顺序要求。我们可以单独修改四个方向的任意边框,例如只给上边框设为红色,其余为蓝色:

div {width: 500px;height: 250px;border - width: 10px;border - style: solid;border - color: green;border - top: red;
}

需要注意的是,边框会撑大盒子,例如设置了10px的边框后,width和height原本是500 * 250,但最终整个盒子大小变成了520 * 270。我们可以通过box - sizing属性修改浏览器的行为,使边框不再撑大盒子,如使用通配符选择器“* {box - sizing: border - box;}”。

(二)内边距

padding用于设置内容和边框之间的距离。它有基础写法,可以给四个方向分别添加边距(padding - top、padding - bottom、padding - left、padding - right)。当添加padding后,盒子的大小会被撑大,例如:

div {height: 200px;width: 300px;padding - top: 5px;padding - left: 10px;
}

原本盒子大小为300 * 200,添加内边距后变成了310 * 205。同样,使用box - sizing: border - box属性可以使内边距不再撑大盒子。此外,padding还有复合写法,可以将多个方向的padding合并到一起,常见的有四种情况:

  • padding: 5px;表示四个方向都是5px。
  • padding: 5px 10px;表示上下内边距5px,左右内边距为10px。
  • padding: 5px 10px 20px;表示上边距5px,左右内边距为10px,下内边距为20px。
  • padding: 5px 10px 20px 30px;表示上5px,右10px,下20px,左30px(顺时针)。

(三)外边距

外边距(margin)的基础写法可以控制盒子和盒子之间的距离,能给四个方向都加上边距(margin - top、margin - bottom、margin - left、margin - right)。其复合写法规则同padding。例如:

.div1 {margin - bottom: 20px;
}.div2 {margin: 10px; /* 四个方向都设置 */margin: 10px 20px; /* 上下为10,左右20 */margin: 10px 20px 30px; /* 上10,左右20,下30 */margin: 10px 20px 30px 40px; /* 上10,右20,下30,左40 */
}

对于块级元素水平居中,可以在指定宽度(如果不指定宽度,默认和父元素一致)的前提下,将水平margin设为auto,有三种写法:margin - left: auto; margin - right: auto;、margin: auto;、margin: 0 auto;。需要注意的是,这个水平居中的方式和text - align不一样,margin: auto是给块级元素用的,text - align: center是让行内元素或者行内块元素居中的,并且对于垂直居中,不能使用“上下margin为auto”的方式。

(四)去除浏览器默认样式

浏览器会给元素加上一些默认的样式,尤其是内外边距,并且不同浏览器的默认样式存在差别。为了保证代码在不同的浏览器上都能按照统一的样式显示,我们往往会去除浏览器默认样式,使用通配符选择器“* {margin: 0; padding: 0;}”即可完成这件事情。

十、弹性布局

(一)初体验

创建一个div,内部包含三个span元素,初始状态下它们按照行内元素的特性排列。当给div加上display: flex之后,span元素有了一些变化,看起来更像是块级元素,有了高度等属性。再给div加上justify - content: space - around;后,这些span元素能够水平隔开;若把justify - content: space - around;改为justify - content: flex - end;,则三个元素会在右侧显示。

(二)flex布局基本概念

flex是flexible box的缩写,意为“弹性盒子”。任何一个html元素都可以指定为display: flex来完成弹性布局。其本质是给父盒子添加display: flex属性,从而控制子盒子的位置和排列方式。被设置为display: flex属性的元素称为flex container(弹性容器),它的所有子元素立刻成为该容器的成员,称为flex item(弹性项目)。flex item可以纵向排列,也可以横向排列,这个方向称为flex direction(主轴)。需要注意的是,当父元素设置为display: flex之后,子元素的float、clear、vertical - align都会失效。

(三)常用属性

  1. justify - content
    • 此属性用于设置主轴上的子元素排列方式,但使用之前一定要确定好主轴是哪个方向。它有多个属性取值:
      • 未指定时,默认按照从左到右的方向布局。
      • 当设置为justify - content: flex - end时,元素都排列到右侧。
      • 当设置为jutify - content: center时,元素居中排列。
      • 当设置为justify - content: space - around时,会平分剩余空间。
      • 当设置为justify - content: space - between时,先让两边元素贴近边缘,再平分剩余空间。
  2. align - items
    • 该属性用于设置侧轴上的元素排列方式。它的取值和justify - content差不多。其中,stretch(拉伸)是align - content的默认值,表示如果子元素没有被显式指定高度,那么就会填充满父元素的高度。我们可以使用align - items实现垂直居中,但需要注意的是,align - items只能针对单行元素来实现,如果有多行元素,就需要使用item - contents。

CSS是一个功能强大且内容丰富的样式语言,掌握它需要不断地学习和实践。无论是构建简单的个人博客还是复杂的商业网站,CSS都是我们实现精美页面布局和视觉效果不可或缺的工具。希望通过这篇博客,能让大家对CSS有更深入、更全面的理解,从而在网页开发的道路上更加得心应手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[uni-app]小兔鲜-04推荐+分类+详情

热门推荐 新建热门推荐组件, 动态设置组件的标题 <template><!-- 推荐专区 --><view class"panel hot"><view class"item" v-for"item in list" :key"item.id">... ...<navigator hover-class"none&…

Pikachu-Cross-Site Scripting-DOM型xss

DOM型xss DOM型XSS漏洞是一种特殊类型的XSS,是基于文档对象模型 Document Object Model (DOM)的一种漏洞。是一个与平台、编程语言无关的接口&#xff0c;它允许程序或脚本动态地访问和更新文档内容、结构和样式&#xff0c;处理后的结果能够成为显示页面的一部分。 dom就是一…

物联网将如何影响全球商业?

互联网使人们能够交流&#xff0c;企业能够全天候不间断地跨洋跨洲持续运营。它重塑、颠覆并催生了新的产业&#xff0c;改变了人类与世界互动的方式。互联网曾经仅仅是一种方便、快捷、廉价的向世界各地发送信息的方式&#xff0c;而现在&#xff0c;只需打开或关闭任何连接到…

thinkphp6入门(25)-- 分组查询 GROUP_CONCAT

假设表名为 user_courses&#xff0c;字段为 user_id 和 course_name&#xff0c;存储每个用户选修的课程&#xff0c;想查询每个学生选修的所有课程 SQL 原生查询 SELECT user_id, GROUP_CONCAT(course_name) as courses FROM user_courses GROUP BY user_id; ThinkPHP 代码…

汇编语言知识(王爽第四版)

汇编语言&#xff0c;当然&#xff0c;我们学习是在c语言的基础上&#xff0c;那么&#xff0c;我们就先复习一下c语言的知识 C语言的基础&#xff0c;进制转换必不可少 数组&#xff0c;函数…… 接下来&#xff0c;我们学习了数据结构&#xff1a;顺序表&#xff0c;链表&…

Ubuntu/Debian网络配置(补充篇)

Ubuntu/Debian网络配置补充 在《Ubuntu/Debian网络配置 & Ubuntu禁用自动更新_ubuntu nmtui-CSDN博客》上总结的“配置网络”章节&#xff0c;对于新版本或者“最小化安装”场景&#xff0c;可能不适应&#xff0c;故此本文做一下补充&#xff0c;就不在原有文章上做更新了…

【数据结构】什么是平衡二叉搜索树(AVL Tree)?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;AVL树的概念 &#x1f4cc;AVL树的操作 &#x1f38f;AVL树的插入操作 ↩️右单旋 ↩️↪️右左双旋 ↪️↩️左右双旋 ↪️左单旋 &#x1f38f;AVL树的删…

平面电磁波(解麦克斯韦方程)

注意无源代表你立方程那个点xyzt处没有源&#xff0c;电场磁场也是这个点的。 j电流面密度&#xff0c;电流除以单位面积&#xff0c;ρ电荷体密度&#xff0c;电荷除以单位体积。 j方程组有16个未知数&#xff0c;每个矢量有三个xyz分量&#xff0c;即三个未知数&#xff0c;…

在idea使用nacos微服务

一.安装nacos 、依赖记得别放<dependencyManagement></dependencyManagement>这个标签去了 1.在linux拉取镜像安装 docker pull nacos/nacos-server:1.3.1 2.创建挂载目录 mkdir -p /usr/local/docker/nacos/init.d /usr/local/docker/nacos/logs 3.安装nacos…

GGHead:基于3D高斯的快速可泛化3D数字人生成技术

随着虚拟现实(VR)、增强现实(AR)和数字人技术的发展,对高质量、实时生成的3D头部模型的需求日益增长。传统的3D生成方法往往依赖于复杂的2D超分辨率网络或大量的3D数据,这不仅增加了计算成本,还限制了生成速度和灵活性。为了解决这些问题,研究人员开发了一种名为GGHead…

加密与安全_TOTP 一次性密码生成算法

文章目录 PreTOTP是什么TOTP 算法工作原理TOTP 生成公式TOTP 与 HOTP 的对比Code生成TOTP验证 TOTP使用场景小结 TOTP 与 HOTP 的主要区别TOTP 与 HOTP应用场景比较TOTP 与 HOTP安全性分析 Pre 加密与安全_HTOP 一次性密码生成算法 https://github.com/samdjstevens/java-tot…

gdb 调试 linux 应用程序的技巧介绍

使用 gdb 来调试 Linux 应用程序时&#xff0c;可以显著提高开发和调试的效率。gdb&#xff08;GNU 调试器&#xff09;是一款功能强大的调试工具&#xff0c;适用于调试各类 C、C 程序。它允许我们在运行程序时检查其状态&#xff0c;设置断点&#xff0c;跟踪变量值的变化&am…

指针 (5)

目录 1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5.typedef 关键字 6 函数指针数组 7.转移表 计算器的⼀般实现 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* #include <stdio.h> int main() {char* ch …

VB.net读写NDEF标签URI智能海报WIFI蓝牙连接

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 Public Class Form1Dim oldpicckey(0 To 5) As Byte 卡片旧密码Dim newpicckey(0 To 5) As Byte 卡片新密码Function GetTagUID() As StringDim status As ByteDim myctrlword As …

矩阵系统源码搭建的具体步骤,支持oem,源码搭建

一、前期准备 明确需求 确定矩阵系统的具体用途&#xff0c;例如是用于社交媒体管理、电商营销还是其他领域。梳理所需的功能模块&#xff0c;如多账号管理、内容发布、数据分析等。 技术选型 选择适合的编程语言&#xff0c;如 Python、Java、Node.js 等。确定数据库类型&…

Activiti7 工作流引擎学习

目录 一. 什么是 Activiti 工作流引擎 二. Activiti 流程创建步骤 三. Activiti 数据库表含义 四. BPMN 建模语言 五. Activiti 使用步骤 六. 流程定义与流程实例 一. 什么是 Activiti 工作流引擎 Activiti 是一个开源的工作流引擎&#xff0c;用于业务流程管理&#xf…

Linux开发讲课45--- 链表

Linux内核代码中广泛使用了数据结构和算法,其中最常用的有链表、队列kfifo、红黑树、基数树和位图。 链表 Linux内核代码大量使用了链表这种数据结构。链表是在解决数组不能动态扩展这个缺陷而产生的一种数据结构。 链表所包含的元素可以动态创建并插入和删除。链表的每个元素…

【经典机器学习算法】谱聚类算法及其实现(python)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 前…

躺平成长:微信小程序运营日记第二天

在进行属于生活的开源之后&#xff0c;自己更加感受到自己存在的渺茫&#xff0c;同时更加开始深刻领会&#xff0c;开源的重要性&#xff0c;在开源&#xff0c;开放&#xff0c;创造&#xff0c;再创新的思维模式下&#xff0c;不发布八部金刚功相关的训练视频&#xff0c;自…

每日一题|983. 最低票价|动态规划、记忆化递归

本题求解最小值&#xff0c;思路是动态规划&#xff0c;但是遇到的问题是&#xff1a;动态规划更新的顺序和步长&#xff0c;以及可能存在的递归溢出问题。 1、确定dp数组含义 dp[i]表示第i天到最后一天&#xff08;可能不在需要出行的天数里&#xff09;&#xff0c;需要花费…