无法更改 Material-UI OutlinedInput 的边框颜色

2024-01-16

我正在尝试更改 v4.13 的边框颜色Material UI 概述输入 https://material-ui.com/api/outlined-input/#outlinedinput-api。然而,当我尝试覆盖 CSS 时,我没有得到任何东西。

我尝试了对每个元素(select 和 OutlinedInput)应用多个 CSS 规则,下面两个是最新的。我在这里做错了什么?

const styles = () =>
  createStyles({
    select: {
      "&:before": {
        borderColor: "red"
      },
      "&:after": {
        borderColor: "red"
      },
    },
    outline: {
      "&:before": {
        borderColor: "red"
      },
      "&:after": {
        borderColor: "red"
      },
    }
  });

   <Select
      label={label}
      fullWidth={true}
      error={touched && invalid}
      className={inputStyles}
      classes={{ root: classes.select }}
      input={
        <OutlinedInput
          {...input}
          fullWidth={true}
          id={input.name}
          labelWidth={this.state.labelWidth}
          classes={{notchedOutline: classes.outline}}
        />
      }
      {...custom}
    >
      {children}
    </Select>

我可以在这里看到边框颜色的设置位置,但无法覆盖它。


下面的示例展示了如何在 v4 中执行此操作(下面是 v5 示例):

import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import OutlinedInput from "@material-ui/core/OutlinedInput";
import InputLabel from "@material-ui/core/InputLabel";
import MenuItem from "@material-ui/core/MenuItem";
import FormControl from "@material-ui/core/FormControl";
import Select from "@material-ui/core/Select";

const useStyles = makeStyles(theme => ({
  root: {
    display: "flex",
    flexWrap: "wrap"
  },
  formControl: {
    margin: theme.spacing(1),
    minWidth: 120
  },
  selectEmpty: {
    marginTop: theme.spacing(2)
  }
}));
const useOutlinedInputStyles = makeStyles(theme => ({
  root: {
    "& $notchedOutline": {
      borderColor: "red"
    },
    "&:hover $notchedOutline": {
      borderColor: "blue"
    },
    "&$focused $notchedOutline": {
      borderColor: "green"
    }
  },
  focused: {},
  notchedOutline: {}
}));

export default function SimpleSelect() {
  const classes = useStyles();
  const outlinedInputClasses = useOutlinedInputStyles();
  const [values, setValues] = React.useState({
    age: "",
  });

  const inputLabel = React.useRef(null);
  const [labelWidth, setLabelWidth] = React.useState(0);
  React.useEffect(() => {
    setLabelWidth(inputLabel.current.offsetWidth);
  }, []);

  function handleChange(event) {
    setValues(oldValues => ({
      ...oldValues,
      [event.target.name]: event.target.value
    }));
  }

  return (
    <form className={classes.root} autoComplete="off">
      <FormControl variant="outlined" className={classes.formControl}>
        <InputLabel ref={inputLabel} htmlFor="outlined-age-simple">
          Age
        </InputLabel>
        <Select
          value={values.age}
          onChange={handleChange}
          input={
            <OutlinedInput
              labelWidth={labelWidth}
              name="age"
              id="outlined-age-simple"
              classes={outlinedInputClasses}
            />
          }
        >
          <MenuItem value="">
            <em>None</em>
          </MenuItem>
          <MenuItem value={10}>Ten</MenuItem>
          <MenuItem value={20}>Twenty</MenuItem>
          <MenuItem value={30}>Thirty</MenuItem>
        </Select>
      </FormControl>
    </form>
  );
}

您可以在我的相关回答中了解更多相关内容:

  • 使用 React Material-ui 更改 OutlinedInput 的大纲 https://stackoverflow.com/questions/54325908/change-outline-for-outlinedinput-with-react-material-ui/54331012#54331012
  • 全局概述覆盖 https://stackoverflow.com/questions/54789989/global-outlined-override/54794340#54794340
  • 更改 Material-UI TextField 上的边框颜色 https://stackoverflow.com/questions/58963242/change-border-color-on-material-ui-textfield/58963947#58963947

这是一个类似的示例,但对于 Material-UI v5 使用styled:

import React from "react";
import { styled } from "@material-ui/core/styles";
import { outlinedInputClasses } from "@material-ui/core/OutlinedInput";
import InputLabel from "@material-ui/core/InputLabel";
import MenuItem from "@material-ui/core/MenuItem";
import FormControl from "@material-ui/core/FormControl";
import Select from "@material-ui/core/Select";

const StyledForm = styled("form")(`
  display: flex;
  flex-wrap: wrap;
`);
const StyledFormControl = styled(FormControl)(({ theme }) => ({
  margin: theme.spacing(1),
  minWidth: 120
}));
const StyledSelect = styled(Select)(`
  & .${outlinedInputClasses.notchedOutline} {
    border-color: red;
  }
  &:hover .${outlinedInputClasses.notchedOutline} {
    border-color: blue;
  }
  &.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline} {
    border-color: lime;
  }
`);

export default function SimpleSelect() {
  const [values, setValues] = React.useState({
    age: ""
  });

  function handleChange(event) {
    setValues((oldValues) => ({
      ...oldValues,
      [event.target.name]: event.target.value
    }));
  }

  return (
    <StyledForm autoComplete="off">
      <StyledFormControl variant="outlined">
        <InputLabel id="outlined-age-simple-label">Age</InputLabel>
        <StyledSelect
          labelId="outlined-age-simple-label"
          value={values.age}
          onChange={handleChange}
          name="age"
          label="Age"
        >
          <MenuItem value="">
            <em>None</em>
          </MenuItem>
          <MenuItem value={10}>Ten</MenuItem>
          <MenuItem value={20}>Twenty</MenuItem>
          <MenuItem value={30}>Thirty</MenuItem>
        </StyledSelect>
      </StyledFormControl>
    </StyledForm>
  );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法更改 Material-UI OutlinedInput 的边框颜色 的相关文章

  • 为什么需要重置浏览器?

    好吧 我知道这可能不是最好的标题why我们需要重置浏览器 因为浏览器有不同的默认设置 我的问题太长 无法放入标题中 如果每个人 90 的时间都需要使用重置样式表 为什么浏览器需要设置默认样式 无论如何我们都会删除它们 对吗 因为某些规则默认
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 如何并排放置两个

    我有两个 div 我想要并排放置的元素 如下所示 navigation content 我想要导航 div 根据需要尽可能大 但不能更大 收缩以适应行为 内容 div 然后应该填充剩余的空间 如何在不指定百分比 例如 20 80 的情况下使
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • 在为 RXJS 可观察量编写测试时,如何避免让调度程序通过我的业务逻辑?

    我发现使某些测试通过的唯一方法是显式地将调度程序传递给函数 为了便于说明 请考虑以下函数 function doStuff stream return stream delay 100 filter x gt x 2 0 map x gt
  • 通过 node-http-proxy 保留基于 cookie 的会话

    我有一个简单的基于 Express 的 Node js Web 服务器 用于开发 JavaScript 应用程序 我将服务器设置为使用 node http proxy 来代理应用程序向在不同域和端口上运行的 Jetty 服务器发出的 API
  • JavaScript 中数组的 HTML 数据列表值

    我有一个简单的程序 它必须从服务器上的文本文件中获取值 然后将数据列表填充为输入文本字段中的选择 为此 我想要采取的第一步是我想知道如何动态地将 JavaScript 数组用作数据列表选项 我的代码是
  • IE11不监听MSFullscreenChange事件

    我正在尝试使用 Bigscreen js 在 IE11 中使用全屏 但 IE11 不监听 MS FullscreenChange 事件 document addEventListener MSFullscreenChange functio
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 打字稿 - 字符串'不可分配给类型'FC

    我收到以下错误 Type props PropsWithChildren lt amount number gt gt string is not assignable to type FC lt amount number gt Type
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • 如何对领域迁移进行单元测试?

    我正在尝试对 Realm 上的迁移进行单元测试 我的主要问题是 如何维护 RealmObject 的不同架构版本 以便能够创建旧对象的实例 进行迁移 然后根据新架构版本检查它是否正确 我首先尝试保留不同的架构版本 但它不会编译 因为对象具有
  • 在 jquery 中使用 css calc()

    我怎样才能做到这一点 element animate width calc 100 278px 800 element animate width calc 100 78px 800 我能做到 只要它只是 或仅px 但不是calc 我可以使
  • SQL Server 触发器 - 需要更改

    我需要更改 SQL Server 中的触发器 完成后 我是否只执行类似于存储过程的触发器 ALTER TRIGGER 是的 没错 只需使用ALTER 如果您在 SSMS 的对象资源管理器中右键单击触发器并选择脚本触发器 as ALTER T
  • stdout 不是 tty。将 bash 用于节点 + 磁带 + Tap-spec

    正在看磁带 点击视频并试图让它发挥作用 操作系统 Windows 7 Git Bash 外壳 node main js node modules bin tap spec stdout 不是 tty main js var test req
  • 我们需要手动启动Appium的Android模拟器吗?

    我是 appium 新手 我正在使用以下代码运行计算器示例测试 DesiredCapabilities capabilities new DesiredCapabilities capabilities setCapability devi
  • 如何在 Spark DataFrame/DataSet 中将行拆分为不同的列?

    假设我有如下数据集 Name Subject Y1 Y2 A math 1998 2000 B 1996 1999 science 2004 2005 我想分割该数据集的行 以便消除 Y2 列 如下所示 Name Subject Y1 A
  • ggplot 使用小饼图作为点与 geom_point

    我想用 ggplot 制作一个图表 如下所示 这个想法是绘制两个分类变量之间的 百分比匹配 通过改变点的大小很容易接近 但我想知道是否可以制作这些小饼图 用于绘制此图的示例代码 并使用点的大小作为分数的度量 temp lt data fra
  • 如何跟踪 Git 中共享公共代码的多个项目?

    我开发了一个网站 现在必须为几个客户克隆该网站 每个客户都希望进行超出视觉方面的定制 并且不能通过配置文件 偏好或类似的东西来处理 在这种情况下 我想在 Git 中使用公共代码维护一个主存储库 然后为每个客户端维护一个分支 这样 我可以在每
  • 如何使用 PHP Curl 模拟启用 JavaScript?

    我想使用 PHP Curl 解析网页中的 HTML 代码 但有一条错误消息 表明我无法在没有 JavaScript 的情况下访问该网站 我可以使用 PHP Curl 启用 JavaScript 吗 JavaScript由浏览器执行 cURL
  • 未捕获的类型错误:_this2.props.selectBook 不是函数

    我是 ReactJS 的新手 正在学习 udemy 上的 React 基础课程 我的控制台日志上出现以下错误 有人可以帮助我吗 bundle js 21818 Uncaught TypeError this2 props selectBoo
  • 如何在启动时启用“填充列指示器”

    我在 OS X 10 9 4 上使用 Aquamacs 我的中有以下几行Preferences el文件 这类似于 emacs初始化文件 add to list load path emacs d require fill column i
  • 禁用上下文 LOB 创建,因为 createClob() 方法引发错误

    我正在使用 Hibernate 3 5 6 和 Oracle 10g 我在初始化期间看到以下异常 但应用程序本身工作正常 出现这个异常的原因是什么 以及如何纠正 例外禁用上下文 LOB 创建createClob 方法抛出错误 java la
  • Sparksql.sql.codegen 没有提供任何改进

    我正在 Spark sql 中执行查询 如下所示 表的数据存储在 Hive 表的 2 个不同节点中 但由于查询有点慢 我尝试在 Spark 中找到一些选项 以便查询可以执行得更快 所以我发现我们可以配置sparksql sql codege
  • JFrame尺寸太小

    我在netbeans中创建了一个JFrame 但是当我运行该程序时 Jframe 尺寸太小 这是我的代码 import javax swing JFrame public class Window private static void d
  • 如何计算 OLAP 多维数据集的可能大小

    有谁知道一种用于获取基于星型模式数据仓库的 OLAP 多维数据集的粗略大小的方法 基于维度的数量 维度表中的记录数量和事实记录的数量 最后是聚合或不同记录的数量等 我正在查看的数据库有一个超过 200 亿行的事实表和一些包含 2000 万
  • 在VBA中使用VLookup引用另一个Excel文件

    我正在尝试在 VBA 中编写一个引用另一个文件的 VLookup 表 这是我的目标的简单概述 在另一个 Excel 文件中查找单元格 A2 中的值 从另一个 Excel 文件的第 2 列中提取信息并将其放入单元格 B2 中 移至单元格 A3
  • 将 ActiveMQ Artemis 7.4 与 Weblogic 12.x 桥接时出现“无效代理 URL”错误

    我正在尝试在 Oracle 12 x 和 Redhat ActiveMQ Artemis 7 4 之间创建桥梁 这是建立桥的过程 将 artemis jms client all 2 9 0 redhat 00005 jar 设置为 WL
  • 为什么我在 Rails 中使用“net/http”时会收到“Errno::ECONNREFUSED”?

    我正在尝试从 URL 解析 XML 文件 当我尝试这样的事情时 require net http require rubygems require xmlsimple url http my address com xmltest note
  • ASP.NET MVC 使用相同的控制器分离移动视图

    我正在开发一个使用 ASP NET MVC 3 w Razor 的新项目 并开发同一网站的 2 个不同视图 完整版本和移动版本 使用相同控制器但根据用户代理显示不同视图的最佳实践 方法是什么 我应该在控制器中处理这个问题吗 在每个控制器操作
  • 无法更改 Material-UI OutlinedInput 的边框颜色

    我正在尝试更改 v4 13 的边框颜色Material UI 概述输入 https material ui com api outlined input outlinedinput api 然而 当我尝试覆盖 CSS 时 我没有得到任何东西