javascript React的Chakra UI:change _focus borderColor不工作

new9mtju  于 2023-10-14  发布在  Java
关注(0)|答案(3)|浏览(91)

我用extendTheme()在Chakra UI上为React设置了默认主题。当我尝试像这样更改Select组件的样式时,_focus样式不会应用,而color的行为符合预期。

参考

字幕

编码

index.ts

import { extendTheme } from '@chakra-ui/react';
import { Select } from './select';

export const theme = extendTheme({
  colors: {
    brand: '#008561',
    brandLight: '#00b485',
  },
  components: {
    Select,
  },
});

select.ts

export const Select = {
  parts: ['field'],
  baseStyle: ({ colorMode }: any) => ({
    field: {
      color: 'brandLight',
      _focus: {
        borderColor: colorMode === 'dark' ? 'brandLight' : 'brand',
      },
    },
  }),
  sizes: {},
  variants: {},
  defaultProps: {},
};
bz4sfanl

bz4sfanl1#

要更改焦点边框颜色,您必须访问focusBorderColor选择器,
这可以在您想要更改的variant中设置,也可以在组件主题的defaultProps选择器中设置。

defaultProps: {
  focusBorderColor: 'gray.500',
},

我看到的另一个解决方法是将全局阴影设置为脉轮颜色,请注意,您定义的任何颜色都可以像下面的示例一样访问

const colors = { mycolor: "#F39C12" }

const shadows = {
  outline: '0 0 0 3px var(--chakra-colors-mycolor-500)',
};

const theme = extendTheme({ config, colors, styles, components, shadows });

解决方法在这里找到:Chakra-UI问题-663
希望这对你的项目有帮助

km0tfn4u

km0tfn4u2#

这对我很有效。

_focusVisible={{
      outline: "none",
 }}
syqv5f0l

syqv5f0l3#

这对我来说很有用const baseStyle = definePartsStyle({ field: { _focusVisible: { 'border-color': '#F16821 !important', 'box-shadow': '0 0 0 1px #F16821 !important' } } });

相关问题