Ant Design使用

news2024/11/26 15:26:46

目录

      • 官网
      • 在项目中使用
        • 下载
        • 引入
          • 方法1:全部引入
          • 方法2:按需引入-手动加载
          • 方法3:按需引入-自动加载
        • 组件
          • Anchor
            • 作用:用于跳转到页面指定位置
            • 案例1-基础使用
            • 案例2-添加偏移量
            • 案例3-指定容器
            • 总结

官网

Ant Design官网

在项目中使用

在react中使用Ant Design

下载

  • 使用如下命令安装最新版本 - 5.1.4
      npm i antd
    
  • 目前使用的- 4.19.0
      npm i antd@4.19
    

引入

方法1:全部引入
  • [1]在App.css中引入样式
    @import '~antd/dist/antd.css';
    
  • [2] 在需要使用antd组件的 组件中引入组件并使用
    import { Button } from 'antd';
    export default function About (props) {
      return (
        <div>
          我是about组件111<Button type="primary">Button</Button>
        </div>
      )
    }
    
    在页面显示如下
    在这里插入图片描述
方法2:按需引入-手动加载

向方法1中及时只是使用Button组件,也需要将所有组件的样式引入。

为了提高性能,我们可以仅将自己需要的组件引入 -> 按需引入。

import Button from 'antd/lib/button';
import 'antd/lib/button/style';
export default function About (props) {
  return (
    <div>
      我是about组件111<Button type="primary">Button</Button>
    </div>
  )
}
  • 上述代码在页面显示如下
    在这里插入图片描述
    样式并没有起作用!

  • 原因: ant design 在js中引入不起作用

    @import 'antd/lib/button/style';
    
    import Button from 'antd/lib/button';
    import './index.css';
    export default function About (props) {
      return (
        <div>
          我是about组件111<Button type="primary">Button</Button>
        </div>
      )
    }
    

    上述代码能正确显示样式

    方法3:按需引入-自动加载

    使用方法2虽然可以实现按需加载,但是若是使用多个组件,还需要多次引入组件+样式

    babel-plugin-import 插件可以帮助我们自动加载

  • [1] 安装babel-plugin-import插件

    npm i babel-plugin-import --save-dev 
    
  • [2] react配置文件默认是隐藏的 -> 使用命令npm run eject显示配置文件

  • 在package.json 或 babel配置文件中添加配置

    "babel": {
      "presets": [
        "react-app"
      ],
      "plugins":[
        ["import", {
          "libraryName":"antd",
          "style":"css"
        }]
      ]
    }
    
  • 重启项目

  • [3]在组件中使用

    import { Button } from 'antd';
    function App() {
      return (
        <div className="App">
        <Button type='primary'>1111</Button>
        </div>
      );
    }
    
    export default App;
    

    在组件中通过如下方式引入

      import { Button } from 'antd';
    

    babel-plugin-import 插件会将上述代码转换为按需引入

      import Button from 'antd/lib/button';
      import 'antd/lib/button/style';
    

组件

Anchor
作用:用于跳转到页面指定位置
案例1-基础使用

将官方案例复制,稍作修改

import { Anchor } from 'antd';
import './useAnchor.css'
const { Link } = Anchor;
export default function UseAnchor(){
  return(
    <>
      <div style={{ height: '100px', background: 'rgba(255,0,0,0.02)', marginBottom:'20px'}}></div>
      <Anchor className='anchorlink'>
        <Link href='#part-1' title='看点1' />
        <Link href='#part-2' title='看点2' />
        <Link href='#part-3' title='看点3' />
        <Link href='#part-4' title='看点4' />
      </Anchor>
      <div id="part-1">
        <h2>看点1</h2>
        <div style={{ height: '200px', background: 'rgba(255,0,0,0.02)'}}></div>
      </div>
      <div id="part-2">
        <h2>看点2</h2>
        <div style={{ height: '200px', background: 'rgba(0,255,0,0.02)'}}></div>
      </div>
      <div id="part-3">
        <h2>看点3</h2>
        <div style={{ height: '200px', background: 'rgba(0,0,255,0.02)'}}></div>
      </div>
      <div id="part-4">
        <h2>看点4</h2>
        <div style={{ height: '200px', background: 'rgba(0,0,200,0.02)'}}></div>
      </div>
    </>
  )
}

上述代码在页面显示如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到 固定定位的元素遮盖了最前面的内容,我们可以设置一些偏移量

案例2-添加偏移量

在案例1的基础上进行更改 -> Anchor组件添加targetOffset属性

<Anchor className='anchorlink' targetOffset={40}>

在这里插入图片描述
但是有时候我们并不是在window元素进行锚点定位而是在某个元素内,就可以给Anchor组件指定一个容器。

案例3-指定容器

注意: 指定容器必须设置高度overflow:auto;
在案例1的基础上进行修改

import { Anchor } from 'antd';
import './useAnchor.css'
const { Link } = Anchor;
export default function UseAnchor(){
  return(
    <>
      <div style={{ height: '100px', background: 'rgba(255,0,0,0.02)', marginBottom:'20px'}}></div>
      <div id='contain' style={{height:'300px', overflow: 'auto'}}>
        <Anchor 
          className='anchorlink' 
          targetOffset={40}
          getContainer={() => document.getElementById('contain')}
        >
          <Link href='#part-1' title='看点1' />
          <Link href='#part-2' title='看点2' />
          <Link href='#part-3' title='看点3' />
          <Link href='#part-4' title='看点4' />
        </Anchor>
        <div id="part-1">
          <h2>看点1</h2>
          <div style={{ height: '200px', background: 'rgba(255,0,0,0.02)'}}></div>
        </div>
        <div id="part-2">
          <h2>看点2</h2>
          <div style={{ height: '200px', background: 'rgba(0,255,0,0.02)'}}></div>
        </div>
        <div id="part-3">
          <h2>看点3</h2>
          <div style={{ height: '200px', background: 'rgba(0,0,255,0.02)'}}></div>
        </div>
        <div id="part-4">
          <h2>看点4</h2>
          <div style={{ height: '200px', background: 'rgba(0,0,200,0.02)'}}></div>
        </div>
      </div>
    </>
  )
}

在这里插入图片描述

总结
  • Anchor组件 用于包裹Link组件
    • affix 是否固定为固定模式, 默认为固定模式
      • 若是固定模式(true) :Anchor组件在滑动到当前组件之前是静态定位,滑动到当前组件之后为固定定位(固定在可视窗口的最顶端)
      • 若是非固定模式(false):Anchor组件一直都为静态定位(不脱标)
      • 举例说明 -> 案例1
    • targetOffset:锚点滚动偏移量,默认为0
      • 若是设置偏移量:对应元素不是滑动到当前元素的最顶端而是 最顶端下移对应偏移量
      • 举例说明-> 案例2
    • getContainer:指定滚动的容器,默认为window
      • 注意: 指定容器必须设置高度overflow:auto;
      • 举例说明 -> 案例3
    • onClick事件
      • 在这里可以阻止a标签的默认事件
      • 若是滚动位置存在偏差,可在此进行设置
        onClick={ (e, link)=>{ 
          e.preventDefault() 
          // 找到锚点对应得的节点
          let element = document.querySelector(link.href)
          // 如果对应id的锚点存在,就跳滚动到锚点顶部
          element && element.scrollIntoView({ block: 'end', behavior: 'smooth', alignToTop: 'false' })
        }}
        
  • Link组件 -> 最终被渲染为a标签
    • href:锚点链接
    • target:该属性指定在何处显示链接的资源
    • title:文本内容

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

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

相关文章

【无人机学习之Mission Planner】RTK/GPS Inject 学习

█ 【无人机学习之Mission Planner】RTK/GPS Inject 学习 █ 系列文章目录 提示&#xff1a;这里是收集了无人机的相关文章 【无人机学习】无人机基础知识【无人机学习】Mission Planner&#xff08;pc端&#xff09;和QGroundControl&#xff08;android端&#xff09;【无人…

P1102 A-B 数对

题目背景 出题是一件痛苦的事情&#xff01; 相同的题目看多了也会有审美疲劳&#xff0c;于是我舍弃了大家所熟悉的 AB Problem&#xff0c;改用 A-B 了哈哈&#xff01; 题目描述 给出一串正整数数列以及一个正整数 CC&#xff0c;要求计算出所有满足 A - B CA−BC 的数对的…

vb.net多功能白板(集成:绘图,编辑,批注,橡皮,图片处理,拍摄,裁剪,旋转等功能

根据上一次的自定义白板&#xff0c;我已经更新了很多内容了 这一次打算再细一点 初始化程序&#xff1a;所有的整体变量&#xff08;作者提醒&#xff0c;请不要直接照抄代码&#xff0c;可以和作者发的文件进行学习和参考 Public ListOfPen As New List(Of Bitmap)Public L…

ArcGIS如何进行自动矢量化操作

这里我们在网络上找一幅高中地理课本上看的等高线图给大家能进行操作演示。 等高线图 01 地理配准 1、定义投影 给数据框定义一个投影&#xff0c;右键Layers>Properties>Coordinate System>Projected Coordinate Systems>Gauss Kruger>Beijing1954> Be…

雅思经验总结(1)

听力技巧&#xff1a;听sections 3就是看你何时进入状态&#xff0c;还有审题&#xff0c;之后就是听but&#xff0c;其他的转折词什么yet because however什么都非常的少&#xff0c;最主要的还是but&#xff0c;注意bus之后的话&#xff0c;其余的什么细节题就是说还要听懂文…

Biome-BGC生态系统模型区域模拟

Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数&#xff0c;模拟日尺度碳、水和氮通量的有效模型&#xff0c;其研究的空间尺度可以从点尺度扩展到陆地生态系统。在Biome-BGC模型中&#xff0c;对于碳的生物量积累&#xff0c;采用光合酶促反应机理模型计算出每天的…

Java面向对象进阶之static

目录static静态关键字static&#xff1a;修饰成员变量&#xff0c;内存机制static是什么、修饰成员变量的方法总结static修饰成员变量的内存原理static&#xff1a;修饰成员方法、内存机制static修饰成员方法的基本用法总结static修饰成员方法的内存原理static的注意事项static…

计算机组成原理习题二

计算机组成原理习题二 文章目录计算机组成原理习题二1、某指令系统的指令格式如下&#xff1a;答案&#xff1a;(1)152301Q1101 010011 000 001I10&#xff0c;I21&#xff0c;Z/C0&#xff0c;D/I0&#xff0c;故为变址寄存器2寻址&#xff0c;EA(I2)A063215301063516Q。 (4)…

大咖年终“讲” 维视教育李明睿——制造业转型升级下需要重新定义人才培养

数字化转型迫在眉睫建设应用型大学风潮正涌制造企业在推进智能制造和数字化转型进程中&#xff0c;衍生出大量人才需求。据人社部、工信部发布的《制造业人才发展规划指南》显示&#xff0c;中国制造业10大重点领域人才缺口2025年将接近3000万人&#xff0c;缺口率高达48&#…

流媒体基础-RTCP

1、RTCP的封装 RTP需要RTCP为其服务器质量提供保证&#xff0c;周期性发送 RTCP的主要功能是&#xff1a;服务质量的监视、反馈&#xff08;QoS&#xff09;、媒体间的同步&#xff08;Sync&#xff09;&#xff0c;以及多播组中成员的标识。在RTP会话期间&#xff0c;各参与者…

Lichee_RV学习系列---认识Lichee_RV、环境搭建和编译第一个程序

系列文章目录 文章目录系列文章目录前言一、认识Lichee RV1、D1-H 芯片2、Lichee RV开发板3、系统镜像二、Lichee RV 固件烧录1、要求基本硬件2、基本资料下载3、固件烧录在这里插入图片描述三、连接上开发板1、ADB方式连接a&#xff1a;ADB下载b&#xff1a;ADB连接c&#xff…

孙溟㠭篆刻《无有中无尽藏》

《无有中无尽藏》孙溟㠭篆刻 无一物中无尽藏&#xff0c;是说当“我执”袪除&#xff0c;仅余“真如”时&#xff0c;便可以理解“无尽藏”。虽然身上没有东西&#xff0c;但是其实世人身上藏了所有的东西。“无心”亦是有心&#xff0c;心中富足。所以当人祛除心中的偏执&…

自动语音识别(ASR)研究综述

自动语音识别ASR研究综述 一、语言识别基础知识 从语音系统识别构成来讲&#xff0c;一套完整的语音识别系统包括&#xff1a;预处理、特征提取、声学模型、语言模型、以及搜索算法等模块&#xff0c;具体结构示意图如下所示: 特征提取&#xff08;MFCC声学特征&#xff09…

Error handling response: TypeError: self.processResponse is not a function

问题背景 &#xff1a; 自己在搭建 Vue 初始模板架子的时候 &#xff0c; 解决完 router 路由的报错问题后 &#xff0c; 控制台还剩下一个显眼的 Error 红色 Bug &#xff0c; 不解决的话看着难受 &#xff0c; 盘它 &#xff01; 点击报错内容后进入 &#xff1a; Error h…

redis应用笔记

1.登录服务 在登陆服务中,如果将数据全部存储到tomcat中,当存在多个tomcat的时候,数据是无法同步的,这就导致了数据的共享问题: 1、每台服务器中都有完整的一份session数据&#xff0c;服务器压力过大。 2、session拷贝数据时&#xff0c;可能会出现延迟 解决办法就是采用redi…

SpringBoot整合Redis实现优惠券秒杀服务(笔记+优化思路版)

本文属于看黑马的redis的学习笔记&#xff0c;记录了思路和优化流程&#xff0c;精简版最终版请点击这里查看。 文章目录一、全局ID生成器1.1 理论1.1.1 全局唯一ID生成策略1.2 代码(Redis自增)二、实现优惠券秒杀下单2.1 SQL2.2 SQL对应实体类2.2.1 普通券实体类2.2.2 秒杀券实…

声纹识别之说话人验证speaker verification

目录 一、speaker verification简介 二、主流方案和模型 1、Ecapa_TDNN模型 2、WavLm 三、代码实践 1、Ecapa_TDNN方案 a、模型结构 b、loss c、数据处理 d、模型训练和评估 e、说话人验证推理 2、WavLm预训练方案 a、模型结构和loss b、数据处理 c、模型训练 …

html5支持的几种音频格式介绍

关于音频的格式 ogg音频 Ogg全称应该是OGGVobis(oggVorbis)是一种新的音频压缩格式&#xff0c;类似于MP3等的音乐格式。Ogg是完全免费、开放和没 有专利限制的。OggVorbis文件的扩展名是.OGG。Ogg文件格式可以不断地进行大小和音质的改良&#xff0c;而不影响旧有的编码器或…

合合信息扫描全能王“照片高清修复”功能上线,3秒还原老照片

穿越时光的“美颜”!合合信息智能图像处理技术让老照片“焕新”“春运”已经开始&#xff0c;团聚时刻即将到来。和亲人们一起围炉话家常&#xff0c;翻开旧日的相册&#xff0c;品读一张张泛黄的照片背后最牵动人心的情感&#xff0c;也是“年味”所在。时光会在照片上留下斑驳…

巨量引擎·2023教育Future大会:扎根内容生态,做好经营提效

求知方寸间&#xff0c;如风过千川。当知识创作成为新的潮流&#xff0c;当教育数字化迈入直播与短视频新时代&#xff0c;当图书电商红红火火&#xff0c;如何做好教育全产业链升级与创新&#xff1f;新年伊始&#xff0c;巨量引擎举办“行知.行为.行万里 2023教育Future大会”…