Ant Design如何自定义输入框(Input)组件样式
介绍
今天接到一个需求,需要自定义一个Input输入框,我们的项目使用React + Ant Design进行开发,按理说Ant Design已经提供了非常丰富的组件样式,但有时候还是无法满足特定的需求,比如我们的输入框要求渲染成下面的样子

而Ant Design的Input组件默认的渲染结果是这样的。

仔细观察这两个输入框,他们的区别如下:
- 输入框的样式不同,自定义的输入框要求用下划线。
- 必选标志(红色星号)位置不同,自定义的输入框必选标志在label的右侧。
下面我们依次来实现这两个需求:
Input组件使用下划线样式
Ant Design的Input提供了variant属性来控制输入框的样式,我们可以将其设置为underline来实现下划线样式。
<Input
variant="underlined" // 设置下划线样式
style={{ width: '200px' }}
placeholder="请输入内容"
/>
调整必选标志位置
Ant Design的Input组件并未提供相关设置,但是Form组件提供了requiredMark属性来控制必选标志的样式,我们可以通过这个属性来自行渲染必选标志,这个方式非常灵活,可以渲染成任何你想要的样子。
首先定义一个函数用来渲染自定义的必选标志,这个函数接受两个参数,一个是标签,另一个是boolean变量,用来指示当前控件是否为必选项。
函数逻辑也十分简单,首先渲染label。然后当required为true时,渲染一个红色的星号,否则不渲染任何内容。
const customizeRequiredMark = (label: React.ReactNode, { required }: { required: boolean }) => (
<>
{label}
{required ? <span style={{color: 'red'}}>*</span> : null}
</>
);
接下来,将Input组件用Form包裹起来,并应用上面的自定义函数即可。
// 使用requiredMark属性来应用自定义的必选标志
<Form requiredMark={customizeRequiredMark}>
<Form.Item
label='name' name='name'
rules={[{ required: true }]}>
<Input
variant="underlined"
style={{ width: '200px' }}
placeholder="请输入内容"
/>
</Form.Item>
</Form>
完整代码如下:
import { Form, Input } from 'antd';
import React from 'react';
const customizeRequiredMark = (label: React.ReactNode, { required }: { required: boolean }) => (
<>
{label}
{required ? <span style={{color: 'red'}}>*</span> : null}
</>
);
export default function CustomizeInput() {
return (
<Form requiredMark={customizeRequiredMark}>
<Form.Item
label='name' name='name'
rules={[{ required: true }]}>
<Input
variant="underlined"
style={{ width: '200px' }}
placeholder="请输入内容"
/>
</Form.Item>
</Form>
);
}
今天就到这里了,我们明天见,码字不易,如果觉得有用就关注一下,您的关注,是我持续输出的动力!
Ant Design如何自定义输入框(Input)组件样式的更多相关文章
- Ant Design框架中不同的组件访问不同的models中的数据
Ant Design框架中不同的组件访问不同的models中的数据 本文记录了我在使用该框架的时候踩过的坑,方便以后查阅. 一.models绑定 在某个组件(控件或是页面),要想从某个models中获 ...
- Ant Design Pro 学习三 新建组件
在 src/components 下新建一个以组件名命名的文件夹,注意首字母大写 在使用组件时,默认会在 index.js 中寻找 export 的对象,如果你的组件比较复杂,可以分为多个文件,最后在 ...
- ant design pro (六)样式
一.概述 参看地址:https://pro.ant.design/docs/style-cn 基础的 CSS 知识或查阅属性,可以参考 MDN文档. 二.详细介绍 2.1.less Ant Desig ...
- 如何用 Blazor 实现 Ant Design 组件库
本文主要分享我创建 Ant Design of Blazor 项目的心路历程,已经文末有一个 Blazor 线上分享预告. Blazor WebAssembly 来了! Blazor 这个新推出的前端 ...
- Ant Design Blazor 组件库的路由复用多标签页介绍
最近,在 Ant Design Blazor 组件库中实现多标签页组件的呼声日益高涨.于是,我利用周末时间,结合 Blazor 内置路由组件实现了基于 Tabs 组件的 ReuseTabs 组件. 前 ...
- ant.design初探
第一部分: 前言 推荐网站: https://ant.design/docs/spec/introduce-cn ant.design是基于react开发的一个解放ui和前端的工具,它提供了一致的设计 ...
- 使用ant design pro搭建项目
脚手架搭建 git clone --depth=1 https://github.com/ant-design/ant-design-pro.git my-project 然后 cd my-proje ...
- 通过Blazor使用C#开发SPA单页面应用程序(4) - Ant Design Button
前面学习了Blazor的特点.环境搭建及基础知识,现在我们尝试的做个实际的组件. Ant Design是蚂蚁金服是基于Ant Design设计体系的 UI 组件库,主要用于研发企业级中后台产品.目前官 ...
- ant design pro (九)引入外部模块
一.概述 原文地址:https://pro.ant.design/docs/import-cn 除了 antd 组件以及脚手架内置的业务组件,有时我们还需要引入其他外部模块,这里以引入富文本组件 re ...
- Ant Design(ui框架)
官方文档:https://ant.design/docs/react/introduce-cn 说明:Ant Design 是一个 ui框架,和 bootstrap 一样是ui框架.里面的组件很完善, ...
随机推荐
- Linux之用户和用户组管理
概念 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须要拥有一个账号进入系统,账号实质上就是一个用户在系统上的标识.系统根据标识分配不同的权限和资源.一个账号包含用 ...
- 使用xxxbase应付CRUD后端任务
很多的后端CRUD开发任务都是毫无意义的, 如果使用firebase/supabase/pocketbase这些工具快速应付这些任务才是重要的. 如果是一位研究生, 在面对导师的垃圾横向的时候, 这种 ...
- Windows路径或者Linux路径映射成web路径进行访问代码
package com.soft.mpms.zframe.config; import java.io.File; import org.springframework.context.annotat ...
- JSP (一) -- 初识JSP
目录 概念 作用 JSP开发 创建JSP JSP编写Java代码 访问JSP JSP与Servlet JSP实现原理 概念 JSP (Java SErver Pages),简化Servlet设计,在H ...
- 操作系统综合题之“银行家算法,计算各资源总数和Need还需要数量和解释什么是安全状态以及银行家进阶题(额外提出资源请求计算是否满足)”
一.问题:某系统在某时刻的进程和资源状态如下表所示: 进程 Allocation(已分配资源数) (A B C D) Max(最大需要资源数) (A B C D) Avaliable(可用资源数) ( ...
- Flex布局-margin 妙用技巧
在 flex 布局 中, 通过对子项设置 margin-auto; 的方式去吃掉剩余空间, 这种小技巧在很多时候能极大简化我们的布局哦. 单元素水平垂直居中 如果父容器是 flex, 要实现元素水平垂 ...
- RPC:设计可扩展且向后兼容的协议
协议:怎么设计可扩展且向后兼容的协议? 浏览器收到命令后会封装一个请求,并把请求发送到 DNS 解析出来的 IP 上,通过抓包工具我们可以抓到请求的数据包,如下图所示: 协议的作用 RPC 请求在发送 ...
- ASP.NET Core之Razor Page相关
cshtml一般是这样: @page @model IndexModel @{ ViewData["Title"] = "Home page"; } <d ...
- 阿里云部署Django主要注意事项
(1)virtualenv 报错 os 没有 PathLike属性 阿里云ubuntu16.0服务器默认python版本分别是2.7.12,3.5.2,而PathLike是在python 3.6时才被 ...
- ESP实现Web服务器
ESP实现Web服务器 典型的基于 ESP32 的静态网页与图片嵌入展示的 本地 Web Server(AP 模式)项目 项目功能概述 ESP32 创建一个 Wi-Fi 热点,启动一个 HTTP We ...