使用React material-ui更改OutlinedInput的轮廓 [英] Change outline for OutlinedInput with React material-ui

查看:222
本文介绍了使用React material-ui更改OutlinedInput的轮廓的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

快速说明:这不是使用material-ui(反应),我无法删除悬停或聚焦时的轮廓.我使用此输入的原因是在发生警告时请求添加一个红色的小边框.我可以更改焦点样式和悬停样式.下图对此进行了测试:

With material-ui (React) I am unable to delete the outline on hover or focus. The reason I am using this input is to request add a little red border when a warning occurs. I can change the focused and hover styles. This is tested in the following image:

将输入焦点放在此CSS的位置:

Where this CSS is applied when the input is focused:

outlinedInputFocused: {
     borderStyle: 'none',
     borderColor: 'red',
     outlineWidth: 0,
     outline: 'none',
     backgroundColor: 'green'
  },

组件

 <OutlinedInput
            disableUnderline={true}
            notched={true}
            id="adornment-weight"
            classes={{root: classes.outlinedInput, focused: classes.outlinedInputFocused}}
            value={this.state.budgetValue}
            onChange={evt => this.updateBudgetValue(evt)}
            onKeyPress={evt => this.handleKeyPress(evt)}
            endAdornment={<InputAdornment sposition="end">BTC</InputAdornment>}
          />

您可以看到图像的颜色是绿色,但是仍然有轮廓.即使outlineWidth为0,并且CSS中的outline设置为none.如何更改/禁用此轮廓?

As you can see the color of the image is green, but there is still an outline. Even though the outlineWidth is 0 and outline is set to none in the CSS. How can I change / disable this outline?

推荐答案

了解如何覆盖这些样式的关键是查看它们在Material-UI源代码中的定义.您引用的问题还显示了一些所需的语法.

The key to understanding how to override these styles is to look at how they are defined in the Material-UI source code. The question you referenced also shows some of the syntax needed.

以下是 OutlinedInput的轮廓"是通过border控制的/src/OutlinedInput/NotchedOutline.js"rel =" nofollow noreferrer> NotchedOutline 组件嵌套在其中.为了影响该嵌套元素,您需要定义一个"notchedOutline"类(即使为空),然后可以将其用于针对父元素的不同状态(例如聚焦,悬停)将该元素作为目标.

The "outline" of OutlinedInput is controlled via the border on the NotchedOutline component nested within it. In order to impact that nested element, you need to define a "notchedOutline" class (even if empty) that you can then use to target that element for the different states (e.g. focused, hover) of the parent.

下面是一个完全删除边框的示例:

Here's an example that fully removes the border:

import React from "react";
import ReactDOM from "react-dom";
import OutlinedInput from "@material-ui/core/OutlinedInput";
import InputAdornment from "@material-ui/core/InputAdornment";
import { withStyles } from "@material-ui/core/styles";

const styles = theme => ({
  root: {
    "& $notchedOutline": {
      borderWidth: 0
    },
    "&:hover $notchedOutline": {
      borderWidth: 0
    },
    "&$focused $notchedOutline": {
      borderWidth: 0
    }
  },
  focused: {},
  notchedOutline: {}
});
function App(props) {
  const { classes } = props;
  return (
    <div className="App">
      <OutlinedInput
        disableUnderline={true}
        notched={true}
        id="adornment-weight"
        classes={classes}
        value={1}
        endAdornment={<InputAdornment sposition="end">BTC</InputAdornment>}
      />
    </div>
  );
}
const StyledApp = withStyles(styles)(App);
const rootElement = document.getElementById("root");
ReactDOM.render(<StyledApp />, rootElement);

这篇关于使用React material-ui更改OutlinedInput的轮廓的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆