CSS—选择器详解:5分钟动手掌握选择器

个人博客:haichenyi.com。感谢关注

1. 目录

  • 1–目录
  • 2–引言
  • 3–种类
  • 4–优先级

引言

  什么是选择器?

  CSS选择器是CSS(层叠样式表)中的一种规则,用于指定要应用样式的HTML元素。它们就像是指向网页中特定元素的指针,允许开发者选择并修改这些元素的外观和布局。通过选择器,开发者可以精确地定位网页中的元素,并为它们应用特定的样式规则,如颜色、字体、边距、边框等

  简单的来说,就是用来给页面元素加样式的东西。比方说,我页面有一个div元素,这个元素需要显示多大?内容是文字,这个文字显示多大字号?文字显示成什么颜色?等等

  在网页设计和开发中,CSS选择器扮演着至关重要的角色。它们是连接HTML结构和CSS样式的桥梁,使得开发者能够灵活地控制网页的外观和布局。通过使用选择器,开发者可以实现以下目标:

  1. 样式一致性:确保网页中的相同类型元素具有一致的样式,提高网页的整体美观性和可读性。
  2. 布局控制:精确地控制网页元素的排列和布局,创建出响应式、适应性强的网页。
  3. 交互体验:通过选择器,开发者可以为网页元素添加悬停、点击等交互效果,提升用户体验。
  4. 可维护性:使用选择器可以简化样式表的编写和维护,使得样式规则更加清晰、易于理解。

  学习CSS选择器对于网页设计和开发者来说至关重要,原因如下:

  1. 基础技能:选择器是CSS的基础,掌握它们是学习更高级CSS技术和框架的前提。
  2. 提高效率:熟练掌握选择器可以显著提高编写样式表的效率,减少不必要的代码和调试时间。
  3. 灵活控制:选择器提供了丰富的选择方式,使得开发者能够精确地控制网页中的元素,实现复杂的布局和样式需求。
  4. 优化性能:合理使用选择器可以避免不必要的样式计算,提高网页的渲染性能。
  5. 适应变化:随着网页技术和设计趋势的不断变化,掌握选择器有助于开发者快速适应新的设计需求和用户行为。

种类

  一共有五类选择器:基础选择器,组合选择器,属性选择器,伪类选择器,伪元素选择器。

一丶基础选择器

  基础选择器分为四类:元素选择器(标签选择器),类选择器,ID选择器,通配符选择器

1.元素选择器(标签选择器)

举例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><link rel="icon" href="/favicon.ico"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS选择器</title><style>/* 清除默认值 */* {margin: 0px;padding: 0px;}/* 给页面中的所有p标签,设置字体为20px,字体颜色为aqua */p {font-size: 20px;color: aqua;}</style>
</head><body><p>哈哈哈</p>
</body></html>

PS:效果图就不贴出来了,内容比较多,贴图的话,就需要贴太多的图了,上面的代码就是一个网页的全部代码,直接复制出去新建一个html文件,把代码放进去就能运行看效果了,后面的代码,都是只有样式和元素两部分。把样式放在style中,把元素放在body中就可以运行看效果了

2.类选择器

举例

<!--都只写样式和标签。不写其他内容-->/* 给页面中所有标签class属性为hai-test的标签,添加背景色为红色 */.hai-class-test{background-color: red;}<div class="hai-class-test">海晨忆</div><div class="hai-class-test">林汐痕</div>        
3.ID选择器

举例

/* 给页面中所有标签id属性为hai-id-test的标签,添加背景色为绿色,注意id选择器是#打头,类选择器是.打头 */#hai-id-test {background-color: green;}<div id="hai-id-test">海晨忆</div>
4.通配符选择器

举例

        /* 给页面所有元素设置margin和padding都为0px,注意,通配符选择器就是*号 */* {margin: 0px;padding: 0px;}
二丶组合选择器

  组合选择器分为:后代选择器,子选择器,相邻兄弟选择器,普通兄弟选择器,群组选择器

1.后代选择器

举例

        /* 给页面中div标签下的所有子孙p标签,添加字体大小和颜色属性。h1标签下的p标签也会加。是所有子孙后台都会加。注意,直接以标签打头,不需要.也不需要#,中间加空格 */div p {font-size: 14px;color: blue;}<div><p>海晨忆</p><h1><p>哈哈哈</p></h1><p>林汐痕</p></div>
2.子选择器

举例

        /* 给ul下的直接li添加font-size为18px.也就是ul的子孩子是li的标签添加 "哈哈哈"所在的li是ul的孙子标签,所以不会给它加上font-size为18px的属性。>符号,表示给左边标签的儿子标签,添加属性。上面组合选择器的空格符号,表示给左边标签的所有子孙标签添加属性*/ul>li {font-size: 18px;}<ul><li>item1</li><li>item2</li><li>item3</li><li>item4</li><div><li>哈哈哈</li></div></ul>
3.相邻兄弟选择器

举例

        /* 给紧挨着h2后面的p标签,添加font-style属性。添加为斜体 必须要紧挨着(隔开也不行),必须要在后面(前面不行)。+符号,表示给紧挨着后面的兄弟元素,添加属性*/h2+p {font-style: italic;}<p>哇哇哇</p><p>哇哇哇</p><h2>h2</h2><!-- <div>呜呜呜</div> --><p>哇哇哇</p><p>哇哇哇</p>
4.普通兄弟选择器

举例

        /* 给h3后面所有兄弟的p标签,添加text-decoration属性。为下划线 必须是后面的,前面的不行~表示给后面的兄弟元素,添加属性*/h3~p {text-decoration: underline;}<p>h3的P</p><p>h3的P</p><h3>h3</h3><p>h3的P</p><p>h3的P</p>
5.群组选择器

举例

        /* 给页面中用,隔开的所有标签加上属性 ,表示给写的所有类型的标签,添加属性*/h4,h5,h6 {color: blue;}<h4>h4标签</h4><p>哈哈哈</p><h5>h5标签</h5><div>哈哈哈</div><h6>h6标签</h6>
三丶属性选择器

  属性选择器按照匹配规则分为:包含属性选择器,等于属性选择器,起始属性选择器,结尾属性选择器,子串属性选择器

1.包含属性选择器

举例

        /* 给div元素,包含class属性的标签,字体变成红色用法:元素[内容],只要包含'内容'属性就行了*/div[class] {color: red;}/* 元素[内容] 给div元素,包含class属性的标签,字体变成绿色用法:元素[内容],只要包含'内容'属性就行了*/div[aaa] {color: greenyellow;}<div class="hai">海晨忆</div><div aaa="bbb">海晨忆</div><div>海晨忆</div>
2.等于属性选择器

举例

        /* 给div元素,包含class属性,并且值为hai的标签,字体变成红色用法:元素[内容='值'],内容和值都需要全部匹配*/div[class='hai'] {color: red;}<div class="hai">海晨忆</div><div class="haidfsa">海晨忆</div><div>海晨忆</div>
3.起始属性选择器

举例

        /* 给div元素,包含class属性,并且值以hai开头的标签,字体变成红色用法:元素[内容^='值']*/div[class^='hai'] {color: red;}<div class="hai">海晨忆</div><div class="haidfsa">海晨忆</div><div>海晨忆</div>
4.结尾属性选择器

举例

        /* 给div元素,包含class属性,并且值以hai结尾的标签,字体变成红色用法:元素[内容$='值']*/div[class$='hai'] {color: red;}<div class="hai">海晨忆</div><div class="haidfsa">海晨忆</div><div class="haidfsahai">海晨忆</div><div>海晨忆</div>
5.子串属性选择器

举例

        /* 给div元素,包含class属性,并且值包含hai的标签,字体变成红色用法:元素[内容*='值']*/div[class*='hai'] {color: red;}<div class="hai">海晨忆</div><div class="haidfsa">海晨忆</div><div class="haidfsahai">海晨忆</div><div class="dfhaisa">海晨忆</div><div>海晨忆</div>
四丶伪类选择器

  伪类选择器大体可以分为三类:动态伪类选择器,结构伪类选择器,表单伪类选择器

1.动态伪类选择器

举例

        .hai:visited {color: blue;}.hai:hover {color: red;}.hai:active {color: black;}/* 默认未访问的情况下,超链接的颜色 */a:link {color: aqua;}/* 访问过的超链接的颜色 */a:visited {color: blue;}/* 鼠标滑过,超链接的颜色 */a:hover {color: orange;}/* 激活(鼠标点下,未松开)超链接的颜色 */a:active {color: red;}/* 以上几个动态伪类选择器,同时使用时,要注意使用顺序,不然得不到想要的效果。顺序为:LVHA:link,visited,hover,active*//* 获取焦点,输入框的背景色 */input:focus {background-color: red;}<div class="hai">海晨忆</div><a href="http://www.haichenyi.com">海晨忆</a><a href="http://www.haichenyi.com">海晨忆1</a><input type="text">
2.结构伪类选择器

举例

        .abc {/* :first-child父元素的第一个元素指定父元素的第一个元素,并且这个元素需要是p元素,给它的字体设置颜色 PS:必须是父元素的第一个元素,并且要是p元素,才会生效*/p:first-child {color: aqua;}/* :nth-child(n)父元素的正数第n个元素,偶数可设置:2n,奇数可设置:2n+1指定父元素的正数第2个元素,并且这个元素需要是p元素,给它的字体设置颜色 PS:必须是父元素的正数第2个元素,并且要是p元素,才会生效*/p:nth-child(2) {color: red;}/* :nth-last-child(n)父元素的倒数第n个元素指定父元素的倒数第3个元素,并且这个元素需要是p元素,给它的字体设置颜色 PS:必须是父元素的倒数第3个元素,并且要是p元素,才会生效*/p:nth-last-child(3) {color: cadetblue;}/* :last-child:父元素的最后一个元素指定父元素的倒数第3个元素,并且这个元素需要是p元素,给它的字体设置颜色 PS:必须是父元素的倒数第3个元素,并且要是p元素,才会生效*/p:last-child {color: blue;}/* :first-of-type:父元素下同类型的第一个元素,不一定非要是父元素的第一个元素*/h2:first-of-type {color: chartreuse;}/* :first-of-type:父元素下同类型的最后一个元素,不一定非要是父元素的最后一个元素*/h2:last-of-type {text-decoration: underline;}/* :nth-of-type(n):父元素下同类型的正数第n个元素,不一定非要是父元素的正数第n个元素*/h2:nth-of-type(2) {color: blueviolet;}/* :nth-last-of-type(n):父元素下同类型的倒数第n个元素,不一定非要是父元素的倒数第n个元素*/h2:nth-last-of-type(2) {color: darkgreen;}}.def {/* 父元素下仅有一个子元素的生效 */h5:only-child {font-style: italic;}}<div class="abc"><p>哈哈哈哈</p><p>哈哈哈哈</p><h1>这是h1标签</h1><h2>这是h2标签</h2><h2>这是h2标签</h2><h2>这是h2标签</h2><h2>这是h2标签</h2><p>哈哈哈哈</p><p>哈哈哈哈</p><p>哈哈哈哈</p><p>哈哈哈哈</p><!-- <h3>这是H3标签</h3> --></div><div class="def"><h5>只是只有一个元素的h5标签,没有兄弟节点</h5></div>
3.表单伪类选择器

举例

        /* 之说几个常见的 *//* :checked选中*/input:checked {box-shadow: 0 0 5px 2px #6699ff;}/* :enabled能选中的,能使用的*/input:enabled {background-color: lightgreen;}/* :disabled与上面的刚好相反,不能选中的,禁用的*/input:disabled {opacity: 0.5;}<input type="checkbox"><input type="text"><input type="text" disabled>
五丶伪元素选择器
        /* ::first-letter选择元素内容的第一个字符PS:伪元素是两个冒号打头,跟上面的区分开,伪类是一个冒号打头*/.ghi {p::first-letter {font-size: 2em;font-weight: bold;}}/*  ::first-line选择元素内容的第一行*/.jkl {p::first-line {font-variant: small-caps;}}/* 内容插入 ,这两个用的比较多::before:在前面插入::after:在后面插入*/.mno {q::before {content: "「";}q::after {content: "」";}}<div class="ghi"><p>这是一段话</p></div><div class="jkl"><p>fjdkslajfkldasjflkdsjakfjdkslajfkldasjfjdkslajfkldasjflkdsjakfjdkakfjdkslajfkldasjflkdsjakfjdkslajfkldasjflkdsjakfjdkslajfkldasjflkdsjakfjdkslajfkldasjflkdsjak</p></div><div class="mno"><p>他说:<q>这是一个测试。</q></p></div>

  上面这些就是CSS的选择器。

优先级

  在说优先级之前,先说一下CSS样式的几个特性:层叠性,继承性,优先级,叠加性

  1. 层叠性:是指当多个样式规则应用于同一个HTML元素时,这些样式规则会按照特定的优先级顺序进行覆盖。后定义的样式会覆盖先前的样式,但前提是它们的优先级相同。如果样式不冲突,则不会发生层叠。层叠性的原则是“就近原则”,即哪个样式离元素最近,就执行哪个样式。
        p {font-size: 30px;color: red;}p {font-size: 20px;}<!--一个简单的例子,下面这个p标签最终显示成红色,字体大小20px--><p>Hello, CSS! This is an inline style.</p>
  1. 继承性:是指子元素会继承父元素的某些样式属性。合理利用继承性可以简化代码,降低样式的复杂性。但是,并非所有的CSS属性都能被继承。一些属性,如背景色、边框等,是不能被继承的。常见的可继承属性包括字体相关属性(如font-size、font-family)、文本相关属性(如color、text-align)等。
        .parent {font-size: 20px;color: blue;}<!--内部子div最终显示字体的大小20px,颜色为蓝色。子元素可以是任意类型的元素,不一定非要跟父元素相同。--><div class="parent"><div>这是子元素</div></div>
  1. 优先级:决定了当多个样式规则应用于同一个HTML元素时,哪个规则会生效。CSS选择器的优先级是由选择器的类型、数量以及样式表的来源(如行内样式、内嵌样式、外部样式)共同决定的。具体规则如下:
    a. !important:具有最高的优先级,可以直接应用于HTML元素。
    b. 行内样式:优先级次之,可以直接应用于HTML元素。
    c. ID选择器:优先级高于类选择器和标签选择器。
    d. 类选择器(伪类/伪元素):优先级高于标签选择器。
    e. 标签选择器:优先级低。
    f. 全局选择器:优先级最低
    ps:此外,存在!important声明,则它会覆盖所有其他优先级规则,具有最高的优先级。但需要注意的是,过度使用!important可能会导致样式表难以维护。

  这里有个新的!important之前没说过,行内样式也没有说过,还有一个全局选择器之前提过一嘴。

  如果,你有仔细观察我给出的html的代码,你就会发现style中最开始的位置有一个样式

       /* 清除默认值 */<!--这个就是全局选择器,也叫通配符选择器,*就是通配符-->* {margin: 0px;padding: 0px;}

  再来说说这个!important

        div {font-size: 30px;color: red;}div {color: blue;}p {font-size: 30px;color: red !important;}p {color: blue;}<!--div标签,字体30px,蓝色。因为蓝色会覆盖红色--><div>Hello, CSS! This is an inline style.</div><!--p标签,字体30px,红色。按照我们前面说的规则,蓝色离的近,应该覆盖红色才对,但是,红色后面有个!important,它的优先级最高,所以,显示红色。当然,你如果再bule后面也加一个!important,那它就显示成蓝色,因为蓝色更近一些。--><p>Hello, CSS! This is an inline style.</p>

  行内样式是直接写在元素上的样式,怎么理解呢?元素上有一个style属性,style属性可以设置元素的样式。

<!--文案最后显示成红色,大小20px-->
<div style="color: red;font-size: 20px;">Hello, CSS! This is an inline style.</div>
  1. 叠加性:指的是当一个元素匹配多个样式规则时,如果样式属性名不同,则会叠加所有的样式属性。这意味着元素会同时拥有这些不同的样式属性。
        p {color: red;}.hai {font-size: 20px;}<!--p标签文案显示红色,字体大小20px--><p class="hai">Hello, CSS! This is an inline style.</p>

PS:整篇文章,精炼一下,如下

  一般选择器的面试问题会问,选择器的优先级关系。你想回答这个问题,你就需要知道有哪些选择器。

  1. CSS的选择器有:通配符选择器,标签(元素)选择器,类(伪类,伪元素)选择器,ID选择器等等。其他选择器一般都用不到
  2. 他们的优先级关系 !important > ID > 类(伪类/伪元素) > 标签(元素) > 通配符

  都说,这个优先级关系不好记,记不住。你要去理解,不能死记硬背,仅供参考。我是这么记的,物以稀为贵,越少的,范围越小,越能生效。比方说,

通配符选择器: 针对所有种类的标签生效。烂大街的东西,优先级最低。

标签选择器: 针对某一种类型的标签生效。比通配符好一点,优先级比通配符高一点。

ID选择器: 针对某一个标签生效。比标签选择器好一点,优先级也高一点。

!important: 它只能针对某个样式属性生效。多个属性组成一个样式。其他的选择器,都是设置多个样式属性,更稀有了。它的优先级最高。

唯一需要记住的就是类(伪类/伪元素),他们三个优先级相同。类选择器,需要申明到标签上,它的优先级高于标签选择器,小于ID选择器。

以上,仅作为记住优先级的思路参考。

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

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

相关文章

大模型微调入门(Transformers + Pytorch)

目标 输入&#xff1a;你是谁&#xff1f; 输出&#xff1a;我们预训练的名字。 训练 为了性能好下载小参数模型&#xff0c;普通机器都能运行。 下载模型 # 方式1&#xff1a;使用魔搭社区SDK 下载 # down_deepseek.py from modelscope import snapshot_download model_…

DeepSeek实战

DeepSeek 接入实战&#xff1a;从零开始快速上手 引言 在当今的 AI 领域&#xff0c;DeepSeek 作为一个强大的自然语言处理&#xff08;NLP&#xff09;平台&#xff0c;提供了丰富的 API 接口&#xff0c;帮助开发者快速实现智能对话、文本生成、语义分析等功能。本文将带你…

Android NDK打包封装教程与优化技巧

关于NDK打包封装的问题。首先,用户可能不太清楚NDK的基本概念,所以我应该先解释NDK是什么以及它的作用。然后,用户可能想知道如何在Android项目中使用NDK,所以需要分步骤说明配置过程,包括安装NDK、配置CMake或ndk-build,创建JNI接口,编写C/C++代码,编译和打包。 接下…

【告别双日期面板!一招实现el-date-picker智能联动日期选择】

告别双日期面板&#xff01;一招实现el-date-picker智能联动日期选择 1.需求背景2.DateTimePicker 现状图3.日期选择器实现代码4.日期选择器实现效果图5.日期时间选择器实现代码6.日期时间选择器实现效果图 1.需求背景 在用户使用时间查询时&#xff0c;我们经常需要按月份筛选…

Linux(ftrace)__mcount的实现原理

Linux 内核调试工具ftrace 之&#xff08;_mcount的实现原理&#xff09; ftrace 是 Linux 内核中的一种跟踪工具&#xff0c;主要用于性能分析、调试和内核代码的执行跟踪。它通过在内核代码的关键点插入探针&#xff08;probe&#xff09;来记录函数调用和执行信息。这对于开…

Java注解(Annotation)

一、注解的定义 核心概念 注解是Java中一种特殊形式的“元数据”&#xff0c;用于为类、方法、字段、参数等代码元素附加说明信息。它不会直接影响代码逻辑&#xff0c;但可以通过编译器、框架或反射机制进行解析和处理。 与注释&#xff08;Comment&#xff09;的区别 注释&a…

tauri2+typescript+vue+vite+leaflet等的简单联合使用(一)

项目目标 主要的目的是学习tauri。 流程 1、搭建项目 2、简单的在项目使用leaflet 3、打包 准备项目 环境准备 废话不多说&#xff0c;直接开始 需要有准备能运行Rust的环境和Node&#xff0c;对于Rust可以参考下面这位大佬的文章&#xff0c;Node不必细说。 Rust 和…

深入解析 Svelte:下一代前端框架的革命

深入解析 Svelte&#xff1a;下一代前端框架的革命 1. Svelte 简介 Svelte 是一款前端框架&#xff0c;与 React、Vue 等传统框架不同&#xff0c;它采用 编译时&#xff08;Compile-time&#xff09; 方式来优化前端应用。它不像 React 或 Vue 依赖虚拟 DOM&#xff0c;而是…

关于流水线的理解

还是不太理解&#xff0c;我之前一直以为&#xff0c;对axis总线&#xff0c;每一级的寄存器就像fifo一样&#xff0c;一级一级的分级存储最后一级需要的数据。 像这张图&#xff0c;一开始是在解析axis流形式的数据包&#xff0c;数据包一直都能输入&#xff0c;所以valid一直…

Python代码之美:从规范到艺术

基础规范&#xff1a;代码的"颜值"很重要 &#x1f449;大礼包&#x1f381;&#xff1a;&#x1f448; PEP 8&#xff1a;不只是规范&#xff0c;是写作艺术 良好的代码格式就像优美的书法&#xff0c;让人赏心悦目。比如&#xff1a; # 不推荐的写法 def calcul…

【AI+智造】在阿里云Ubuntu 24.04上部署DeepSeek R1 14B的完整方案

作者&#xff1a;Odoo技术开发/资深信息化负责人 日期&#xff1a;2025年2月28日 一、部署背景与目标 DeepSeek R1作为国产大语言模型的代表&#xff0c;凭借其强化学习驱动的推理能力&#xff0c;在复杂任务&#xff08;如数学问题、编程逻辑&#xff09;中表现优异。本地化部…

8 SpringBoot进阶(上):AOP(面向切面编程技术)、AOP案例之统一操作日志

文章目录 前言1. AOP基础1.1 AOP概述: 什么是AOP?1.2 AOP快速入门1.3 Spring AOP核心中的相关术语(面试)2. AOP进阶2.1 通知类型2.1.1 @Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行(通知的代码在业务方法之前和之后都有)2.1.2 @Before:前置通知,此…

【react】快速上手基础教程

目录 一、React 简介 1.什么是 React 2.React 核心特性 二、环境搭建 1. 创建 React 项目 2.关键配置 三、核心概念 1. JSX 语法 表达式嵌入 样式处理 2. 组件 (Component) 3. 状态 (State) 与属性 (Props) 4. 事件处理 合成事件&#xff08;SyntheticEvent) 5. …

七星棋牌 6 端 200 子游戏全开源修复版源码(乐豆 + 防沉迷 + 比赛场 + 控制)

七星棋牌源码 是一款运营级的棋牌产品&#xff0c;覆盖 湖南、湖北、山西、江苏、贵州 等 6 大省区&#xff0c;支持 安卓、iOS 双端&#xff0c;并且 全开源。这个版本是 修复优化后的二开版本&#xff0c;新增了 乐豆系统、比赛场模式、防沉迷机制、AI 智能控制 等功能&#…

【人工智能】Deepseek 与 Kimi 联袂:重塑 PPT 创作,开启智能演示新纪元

我的个人主页 我的专栏&#xff1a;人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞&#x1f44d;收藏❤ 前言 在当今快节奏的工作与学习场景中&#xff0c;PPT 制作常常是一项耗时耗力的任务。从前期的资…

Kafka的高水位、低水位是什么概念?

Kafka 的 高水位&#xff08;High Watermark, HW&#xff09; 和 低水位&#xff08;Low Watermark, LW&#xff09; 是和数据存储、消费进度、日志清理等密切相关的重要概念。我们用一个 “蓄水池” 的比喻来形象地解释它们的作用。 1. Kafka 里的数据像一个蓄水池 Kafka 的数…

基于JAVA+Spring+mysql_快递管理系统源码+设计文档

文末获取源码数据库文档 感兴趣的可以先收藏&#xff0c;有毕设问题&#xff0c;项目以及论文撰写等问题都可以和博主沟通&#xff0c;尽最大努力帮助更多的人&#xff01; 摘 要 随着物流行业信息化的深入使得物流过程中货物的状态和变化透明化&#xff0c;现代信息化的接入使…

Python----数据分析(Numpy:安装,数组创建,切片和索引,数组的属性,数据类型,数组形状,数组的运算,基本函数)

一、 Numpy库简介 1.1、概念 NumPy(Numerical Python)是一个开源的Python科学计算库&#xff0c;旨在为Python提供 高性能的多维数组对象和一系列工具。NumPy数组是Python数据分析的基础&#xff0c;许多 其他的数据处理库&#xff08;如Pandas、SciPy&#xff09;都依赖于Num…

【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串

MySQL中的字符串处理函数&#xff1a;concat 函数 一、concat &#xff08;&#xff09;函数 1.1、基本语法1.2、示例1.3、特殊用途 二、COALESCE&#xff08;&#xff09;函数 2.1、基本语法2.2、示例2.3、用途 三、进阶练习 3.1 条件和 SQL 语句3.2、解释 一、concat &…

windows下适用msvc编译ffmpeg 适用于ffmpeg-7.1

需要的工具: visual studio 2019 (可以是其他版本&#xff0c;只是本人电脑上装的为2019) msys2 ffmpeg-7.1源码 1. 修改msys2_shell.cmd 在msys2目录修改msys2_shell.cmd 打开后找到行set MSYS2_PATH_TYPEinherit 删除开头的rem 2. 运行msys2 运行x64 Native Tools Command …