从 HTML 到 CSS:开启网页样式之旅(二)—— 深入探索 CSS 选择器的奥秘

news2024/11/27 13:51:54

从 HTML 到 CSS:开启网页样式之旅(二)—— 深入探索 CSS 选择器的奥秘

  • 前言
  • 一、CSS基本选择器
    • 1. 通配选择器
    • 2. 元素选择器
    • 3. 类选择器
    • 4. id选择器
    • 5.基本选择器总结
  • 二、CSS复合选择器
    • 1. 后代选择器
    • 2. 子选择器
    • 3. 相邻兄弟选择器
    • 4.交集选择器
    • 5.并集选择器
    • 6.属性选择器
      • (1)选择具有指定属性的元素
      • (2)选择具有指定属性且属性值等于特定值的元素
      • (3)选择具有指定属性且属性值包含特定值
      • (4)选择具有指定属性且属性值以特定值开头(后面可以跟一个连字符 “-”)的元素。
      • (5) 选择具有指定属性且属性值以特定值开头的元素
      • (6)选择具有指定属性且属性值以特定值结尾的元素
    • 7.伪类选择器
      • 常见的伪类选择器及示例
      • (1):hover
      • (2):active
      • (3):focus
      • (4):first - child
      • (5):last - child
      • (6):nth - child(n)
      • (7):visited
      • (8)常用的
    • 8.伪元素选择器
  • 三、选择器的优先级
    • 1. 优先级基本规则
    • 2. 计算优先级(特异性)


前言

  • 在上一节内容中,我们初步了解了CSS如何引用以及其基本语法规范,接下来要深入探究的便是CSS选择器这一关键部分。
  • CSS选择器犹如一把精准的钥匙能够帮助我们准确地定位到HTML页面中需要添加样式的元素,从而实现对网页样式的精细控制。
下面,就让我们一同揭开CSS选择器的神秘面纱,深入了解其丰富多样的类型和强大功能

一、CSS基本选择器

1. 通配选择器

通配选择器可以选中所有HTML中的元素

语法


* {
属性名: 属性值;
}

例如

<!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>
        /* 选中所有元素 */
        * {
            color: orange;
            font-size: 40px;
        }
    </style>
</head>

<body>
    <div>
        <P>张三 :98</P>
        <P>张三 :96</P>
        <P>张三 :99</P>
        <P>张三 :97</P>
    </div>
</body>

</html>

效果图

在这里插入图片描述

备注:目前来看通配选择器貌似有点鸡肋,但后面清除样式时,会对我们有很大帮助

2. 元素选择器

作用:为页面中 某种元素 统一设置样式。

  • 语法:
标签名 
{ 

属性名: 属性值;
}

举例

/* 选中所有段落元素 */
<style>
      p {
        color: blue;
        font-size: 60px;
      }
    </style>
  </head>

  <body>
    <span>2</span>
    <div>
      <p>张三 :98</p>
      <p>张三 :96</p>
      <p>张三 :99</p>
      <p>张三 :97</p>
    </div>

效果图
在这里插入图片描述

元素选择器无法实现差异化设置,例如上面的代码中,所有的p元素效果都一样

3. 类选择器

作用:根据元素的class 值,来选中某些元素。

  • 可以选中具有特定类名的 HTML 元素,这使得我们能够针对具有相同类别的元素进行样式设置,实现一定程度的差异化和复用性
  • 语法:
.类名 {
    属性名: 属性值;
}
  • 举例:
<!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>
        /* 定义一个名为highlight的类选择器样式 */
      .highlight {
            color: green;
            font-weight: bold;
        }
    </style>
</head>

<body>
    <div>
        <p class="highlight">张三 :98</p>
        <p>张三 :96</p>
        <p class="highlight">张三 :99</p>
        <p>张三 :97</p>
    </div>
</body>

</html>
  • 效果图
    在这里插入图片描述

4. id选择器

  • id 选择器用于选中具有特定 id 属性值的 HTML 元素,在一个 HTML 页面中,每个 id 值应该是唯一的,它主要用于对特定的、独一无二的元素进行精准的样式设置或其他操作(比如==通过 JavaScript ==进行交互操作时,常通过 id 来精准定位元素)
  • 语法
#id名 {
    属性名: 属性值;
}
  • 举例
<!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>
        /* 定义一个名为unique-element的id选择器样式 */
        #unique-element {
            color: purple;
            background-color: yellow;
            font-size: 30px;
        }
    </style>
</head>

<body>
    <div>
        <p id="unique-element">张三 :98</p>
        <p>张三 :96</p>
        <p>张三 :99</p>
        <p>张三 :97</p>
    </div>
</body>

</html>

在这个例子中,我们通过#unique-element这个 id 选择器定义了特定的样式,只有那个 id 属性值为unique-element的<p>元素会应用这些样式,其他元素不受影响

  • 效果图
  • 在这里插入图片描述

5.基本选择器总结

在这里插入图片描述

二、CSS复合选择器

CSS 复合选择器是由基本选择器通过特定的组合方式构成的,它能够更加精准地定位到我们想要设置样式的元素,满足更复杂的页面样式设计需求

1. 后代选择器

  • 后代选择器用于选择某元素的所有后代元素(包括子元素、孙元素等)并设置样式

语法:

祖先元素 后代元素 {
    属性名: 属性值;
}

举例:

<!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>
        /* 选择div元素下的所有p元素 */
        div p {
            color: red;
            font-size: 25px;
        }
    </style>
</head>

<body>
    <div>
        <p>张三 :98</p>
        <p>张三 :96</p>
        <span>
            <p>张三 :99</p>
        </span>
        <p>张三 :97</p>
    </div>
    <p>这是div外的p元素,不受上述样式影响</p>
</body>

</html>

在上述代码中,通过div p这个后代选择器,我们为<div>元素内部的所有<p>元素设置了特定的样式(红色文字,字体大小为 25px),而位于<div>元素外部的<p>元素则不会应用这些样式
在这里插入图片描述

2. 子选择器

子选择器用于选择某元素的直接子元素并设置样式,它与后代选择器的区别在于只针对直接子元素,不包括孙元素及更后代的元素

父元素 > 子元素 {
    属性名: 属性值;
}
<style>
        /* 选择div元素的直接子p元素 */
        div > p {
            color: cyan;
            font-size: 28px;
        }
    </style>
<div>
        <p>张三 :98</p>
        <p>张三 :96</p>
        <span>
            <p>张三 :99</p>
        </span>
        <p>张三 :97</p>
    </div>
    <p>这是div外的p元素,不受上述样式影响</p>

在这里插入图片描述

3. 相邻兄弟选择器

相邻兄弟选择器用于选择紧挨着某元素的下一个兄弟元素并设置样式

元素 + 相邻兄弟元素 {
    属性名: 属性值;
}

举例:

 <style>
        /* 选择p元素紧挨着的下一个p元素 */
        p + p {
            color: magenta;
            font-size: 32px;
        }
    </style>
</head>

<body>
    <p>张三 :98</p>
    <p>张三 :96</p>
    <p>张三 :99</p>
    <p>张三 :97</p>
</body>

在这里插入图片描述
在这里插入图片描述

大家想一想第一个为什么显示不出来呢

第一个<p>元素(张三 : 98)没有紧挨着它的前一个<p>元素,因为它是第一个<p>元素。
从第二个<p>元素(张三 : 96)开始,它是第一个<p>元素(张三 : 98)的下一个兄弟元素,所以它会应用p + p选择器的样式

4.交集选择器

交集选择器是由两个或多个选择器通过紧挨着书写来构成的,它会选择同时满足这些选择器条件的元素。只有当一个元素匹配所有组成交集选择器的选择器时,该元素才会被选中并应用样式

语法格式为

选择器1选择器2{属性名:属性值;}

举例

<style>
    p.highlight {
      color: green;
      font - weight: bold;
    }
  </style>
</head>
<body>
  <p class="highlight">这是一段带有highlight类的段落,会应用样式。</p>
  <p>这是一段普通段落,不会应用样式。</p>
  <span class="highlight">这是一个带有highlight类的span元素,不会应用样式,因为它不是段落元素。</span>
</body>

在这里插入图片描述

5.并集选择器

并集选择器用于同时选择多个不同的元素,并为它们设置相同的样式。

语法格式为:
选择器1,选择器2,选择器3{属性名:属性值;}

  • 举例
 p,span{
      color: red;
      font - size: 20px;
    }
  </style>
</head>
<body>
  <p>这是一个段落。</p>
  <span>这是一个span元素。</span>
  <div>这是一个div元素,不受影响。</div>
</body>

在这里插入图片描述

6.属性选择器

属性选择器是 CSS 中用于根据元素的属性及其属性值来选择元素的一种选择器。它允许你通过检查 HTML 元素是否具有特定属性或特定属性值来选择元素,并为其设置样式

(1)选择具有指定属性的元素

[title] {
  color: green;
}
<p title="这是一个段落">这是有title属性的段落</p>
<p>这是没有title属性的段落</p>

在这里插入图片描述

(2)选择具有指定属性且属性值等于特定值的元素

<style>
        [class="highlight"] {
            color: red;
            font - weight: bold;
        }

        <p title="这是一个段落">这是有title属性的段落</p><p>这是没有title属性的段落</p>
    </style>
</head>
<p class="highlight">这是带有highlight类的段落</p>
<p class="other">这是带有other类的段落</p>

在这里插入图片描述

  • [attribute~ = value]

(3)选择具有指定属性且属性值包含特定值

 [class ~= "important"] {
  background-color: yellow;
}

    </style>
</head>
<p class="important urgent">这个段落有important和urgent类</p>
<p class="urgent">这个段落只有urgent类</p>

在这里插入图片描述

  • [attribute| = value]

(4)选择具有指定属性且属性值以特定值开头(后面可以跟一个连字符 “-”)的元素。

<!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>
        [lang|="en"] {
            font-style: italic;
        }
    </style>
</head>

<body> 
    <p lang="en">这是英文段落</p>
    <p lang="en-us">这是美式英文段落</p> 
    <p lang="fr">这是法文段落</p>
</body>

</html>

在这里插入图片描述

(5) 选择具有指定属性且属性值以特定值开头的元素

  • [attribute^ = value]
<!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>
       [href ^= "https://"] {
  color: blue;
}
    </style>
</head>

<body> 
    <a href="https://www.example.com">这是一个https链接</a>
<a href="http://www.other.com">这是一个http链接</a>
</body>

</html>

在这里插入图片描述

(6)选择具有指定属性且属性值以特定值结尾的元素

  • [attribute* = value]
[src$ = ".jpg"] {
  border: 1px solid red;
}
<img src="image.jpg" alt="这是JPG图片">
<img src="image.png" alt="这是PNG图片">

在这里插入图片描述

7.伪类选择器

  • 伪类选择器是 CSS 中一种特殊的选择器,它根据元素的特定状态或位置等条件来选择元素,而不是基于元素的实际标记或属性。通过伪类选择器,可以为处于不同状态下的元素设置不同的样式,增强用户交互体验

常见的伪类选择器及示例

(1):hover

当鼠标悬停在元素上时应用样式

<!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>
        a:hover {
            color: orange;
        }
    </style>
</head>

<body>
    <a href="#">这是一个链接</a>
</body>

</html>

当鼠标悬停在<a>链接元素上时,其文字颜色会变成橙色。

在这里插入图片描述

(2):active

当元素被激活时(例如被点击时)应用样式

<!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>
        button:active {
            background-color: yellow;
        }
    </style>
</head>

<body>
    <button>点击我</button>
</body>

</html>

当按钮被点击(按下鼠标键)时,其背景颜色会变成黄色

在这里插入图片描述

(3):focus

当元素获得焦点时(例如表单元素被选中准备输入时)应用样式

<!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>
        input:focus {
            border: 2px solid blue;
        }
    </style>
</head>

<body>
    <input type="text">
</body>

</html>

<input>文本框获得焦点(用户点击准备输入)时,其边框会变成 2px 宽的蓝色边框
在这里插入图片描述

(4):first - child

选择元素的第一个子元素

<!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-weight: bold;
        }
    </style>
</head>

<body>
    <ul>
        <li>第一个列表项</li>
        <li>第二个列表项</li>
        <li>第三个列表项</li>
    </ul>
</body>

</html>

在无序列表<ul>中,第一个<li>列表项的文字会加粗显示

(5):last - child

选择元素的最后一个子元素

<!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>
        ol li:last-child {
            color: green;
        }
    </style>
</head>

<body>
    <ol>
        <li>第一个有序列表项</li>
        <li>第二个有序列表项</li>
        <li>第三个有序列表项</li>
    </ol>
</body>

</html>

在有序列表<ol>中,最后一个<li>列表项的文字颜色会变成绿色
在这里插入图片描述

(6):nth - child(n)

选择元素的第 n 个子元素。这里的 n 可以是数字、关键字

<!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>
        tr:nth-child(even) {
            background-color: #f2f2f2;
        }
    </style>
</head>

<body>
    <table>
        <tr><td>第一行第一列</td><td>第一行第二列</td></tr>
        <tr><td>第二行第一列</td><td>第二行第二列</td></tr>
        <tr><td>第三行第一列</td><td>第二行第二列</td></tr>
    </table>
</body>

</html>

在表格

中,偶数行(第 2、4、6 等行)的元素背景颜色会变成浅灰色(#f2f2f2)
在这里插入图片描述

(7):visited

  • 当链接被访问过之后应用样式
<!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>
        a:visited {
            color: purple;
        }
    </style>
</head>

<body>
    <a href="https://www.example.com">这是一个链接</a>v
</body>

</html>
当用户访问过<a>链接指向的网址后,再次看到该链接时,其文字颜色会变成紫色

在这里插入图片描述

(8)常用的

在这里插入图片描述

8.伪元素选择器

作用:选中元素中的一些特殊位置

在这里插入图片描述

三、选择器的优先级

通过不同的选择器,选中相同的元素 ,并且为相同的样式名设置不同的值时,就发生了样式的冲突。

  • 到底应用哪个样式,此时就需要看优先级了

1. 优先级基本规则

  • 内联样式大于
  • id 选择器大于
  • 类选择器和伪类选择器大于
  • 元素选择器

2. 计算优先级(特异性)

除了上面根据选择器类型判断优先级,还可以通过计算特异性来更准确确定优先级。

  • id 选择器:每有一个 id 选择器,特异性值加 100。
  • 类选择器、伪类选择器、属性选择器:每有一个,特异性值加 10。
  • 元素选择器、伪元素选择器:每有一个,特异性值加 1。
    比如选择器组合#mainDiv.myClass p:hover
  • 这里有 1 个 id 选择器#mainDiv(特异性值 100)、
  • 1 个类选择器.myClass(特异性值 10)、
  • 1 个伪类选择器p:hover(特异性值 10),
  • 总共特异性值是 120。

当和其他选择器比较对同一个元素设置样式时,特异性值高的那个选择器的样式会优先应用


本节内容到此结束,喜欢的话记得三连哦

在这里插入图片描述

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

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

相关文章

解决Flink读取kafka主题数据无报错无数据打印的重大发现(问题已解决)

亦菲、彦祖们&#xff0c;今天使用idea开发的时候&#xff0c;运行flink程序&#xff08;读取kafka主题数据&#xff09;的时候&#xff0c;发现操作台什么数据都没有只有满屏红色日志输出&#xff0c;关键干嘛&#xff1f;一点报错都没有&#xff0c;一开始我觉得应该执行程序…

零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu

1.为啥使用Linux做嵌入式开发 能广泛支持硬件 内核比较高效稳定 原码开放、软件丰富 能够完善网络通信与文件管理机制 优秀的开发工具 2.什么是Ubuntu 是一个以桌面应用为主的Linux的操作系统&#xff0c; 内核是Linux操作系统&#xff0c; 具有Ubuntu特色的可视…

xiaolin coding 图解网络笔记——TCP篇

1. TCP 头格式有哪些&#xff1f; 序列号&#xff1a;在建立连接时由计算机生成的随机数作为其初始值&#xff0c;通过 SYN 包传给接收端主机&#xff0c;每发送一次数据&#xff0c;就【累加】一次该【数据字节数】的大小。用来解决网络包乱序问题。 确认应答号&#xff1a;指…

使用Go 语言连接并操作 MySQL 数据库

新建项目&#xff0c;我这里使用的vscode&#xff1a; 1.新建项目初始化&#xff1a; 手动创建工程文件夹go安装目录->src->projectName 在项目下创建 main.go文件&#xff1a; 在vscode中点击文件->打开文件夹&#xff0c;选择刚刚新建的文件夹。打开后&#xff0…

Jmeter中的断言

7&#xff09;断言 1--响应断言 功能特点 数据验证&#xff1a;验证响应数据是否包含或不包含特定的字符串、模式或值。多种匹配类型&#xff1a;支持多种匹配类型&#xff0c;如文本、正则表达式、文档等。灵活配置&#xff1a;可以设置多个断言条件&#xff0c;满足复杂的测…

springboot实战(19)(条件分页查询、PageHelper、MYBATIS动态SQL、mapper映射配置文件、自定义类封装分页查询数据集)

引言&#xff1a; 该类博客的学习是基于b站黑马视频springbootvue视频学习&#xff01;具体围绕项目——"大事件"进行实战学习。 目录 一、功能介绍&#xff08;需求&#xff09;。 1、文章列表功能基本介绍。 2、条件分页查询功能与注意。 3、前端页面效果。&#x…

goframe框架bug-记录

implement not found for interface ICompany, forgot register? 错误解决检查&#xff1a; 1.有没有init 2. 注入问题 3. 注入问题

零基础学安全--云技术基础

目录 学习连接 前言 云技术历史 云服务 公有云服务商 云分类 基础设施即服务&#xff08;IaaS&#xff09; 平台即服务&#xff08;PaaS&#xff09; 软件即服务&#xff08;SaaS&#xff09; 云架构 虚拟化 容器 云架构设计 组件选择 基础设施即代码 集成部署…

数据结构 (11)串的基本概念

一、串的定义 1.串是由一个或者多个字符组成的有限序列&#xff0c;一般记为&#xff1a;sa1a2…an&#xff08;n≥0&#xff09;。其中&#xff0c;s是串的名称&#xff0c;用单括号括起来的字符序列是串的值&#xff1b;ai&#xff08;1≤i≤n&#xff09;可以是字母、数字或…

【Java】二叉树:数据海洋中灯塔式结构探秘(上)

个人主页 &#x1f339;&#xff1a;喜欢做梦 二叉树中有一个树&#xff0c;我们可以猜到他和树有关&#xff0c;那我们先了解一下什么是树&#xff0c;在来了解一下二叉树 一&#x1f35d;、树型结构 1&#x1f368;.什么是树型结构&#xff1f; 树是一种非线性的数据结构&…

在 macOS 上安装 MongoDB Community Edition

https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-os-x/

docker部署单机版doris

文章目录 前言一、系统环境简介二、部署要求三、部署安装1、基础设置2、下载镜像3、下载安装包4、启动镜像环境5、配置fe6、配置be 总结 前言 应项目测试需求&#xff0c;需使用docker部署单机版doris。 一、系统环境简介 #1 系统信息 [roottest][~] $cat /etc/redhat-relea…

c++编程玩转物联网:使用芯片控制8个LED实现流水灯技术分享

在嵌入式系统中&#xff0c;有限的GPIO引脚往往限制了硬件扩展能力。74HC595N芯片是一种常用的移位寄存器&#xff0c;通过串行输入和并行输出扩展GPIO数量。本项目利用树莓派Pico开发板与74HC595N芯片&#xff0c;驱动8个LED实现流水灯效果。本文详细解析项目硬件连接、代码实…

uni-app运行 安卓模拟器 MuMu模拟器

最近公司开发移动端系统&#xff0c;使用真机时每次调试的时候换来换去的麻烦&#xff0c;所以使用模拟器来调试方便。记录一下安装和连接的过程 一、安装MuMu模拟器 百度搜索MuMu模拟器并打开官网或者点这里MuMu模拟器官网 点击下载模拟器 安装模拟器&#xff0c;如果系统…

C语言解析命令行参数

原文地址&#xff1a;C语言解析命令行参数 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 C语言有一个 getopt 函数&#xff0c;可以对命令行进行解析&#xff0c;下面给出一个示例&#xff0c;用的时候可以直接copy过去修改&#xff0c;很方便…

传奇996_36——背包图标,物品位置问题

绑定位置不对位 CTRLF9背包物品文件&#xff0c;也就是bag_item文件夹的bag_item.lua文件&#xff0c;这个小框和大框的相对位置会影响那个绑定图标,就是背包物品组合的标签和下面子标签的相对位置 背包物品偏移到看不见 原因&#xff1a;CTRLF9背包物品文件&#xff0c;也就…

使用Python和Pybind11调用C++程序(CMake编译)

目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补&#xff0c;本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境&#xff1a; Linux gnuPython3.10…

如何选择黑白相机和彩色相机

我们在选择成像解决方案时黑白相机很容易被忽略&#xff0c;因为许多新相机提供鲜艳的颜色&#xff0c;鲜明的对比度和改进的弱光性能。然而&#xff0c;有许多应用&#xff0c;选择黑白相机将是更好的选择&#xff0c;因为他们产生更清晰的图像&#xff0c;更好的分辨率&#…

代码美学:MATLAB制作渐变色

输入颜色个数n&#xff0c;颜色类型&#xff1a; n 2; % 输入颜色个数 colors {[1, 0, 0], [0, 0, 1]}; createGradientHeatmap(n, colors); 调用函数&#xff1a; function createGradientHeatmap(n, colors)% 输入检查if length(colors) ~ nerror(输入的颜色数量与n不一…

SAP 零售方案 CAR 系统的介绍与研究

前言 当今时代&#xff0c;零售业务是充满活力和活力的业务领域之一。每天&#xff0c;由于销售运营和客户行为&#xff0c;它都会生成大量数据。因此&#xff0c;公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…