首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grommet主题中的自定义按钮悬停状态

Grommet主题中的自定义按钮悬停状态
EN

Stack Overflow用户
提问于 2021-02-14 13:23:13
回答 2查看 313关注 0票数 3

刚开始使用Grommet。我肯定遗漏了一些明显的东西,因为我觉得我正在尝试做一些相当简单的事情。我已经创建了一个自定义主题,并且我正在尝试添加一个悬停状态来更改Button的背景颜色。默认悬停行为保持不变,背景颜色不变。

下面是我的代码的一个简短示例:

代码语言:javascript
复制
const customTheme = deepMerge(grommet, {
  global: {
    // colors and such
  },
  button: {
    hover: {
      primary: {
        background: { color: "accent-1" }
      }
    }
  }
};

// then I implement the Button like so
<Grommet theme={customTheme}>
  <Button
    label="My Sad Button"
    primary
  />
</Grommet>

我遗漏了什么?谢谢!

更新:

按照@Bas的建议使用extend属性确实有效。我仍然很好奇,为什么提供的hover不能完成同样的任务?

更新2:

从2月21日起,根据this Github issue的说法,为了按预期使用button.hover.primary属性,您必须首先定义button.hover.default的值。在定义default值之后,primary和/或secondary按钮值似乎可以按预期工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-14 19:22:44

您可以在button上使用extend属性,该属性的值是一个函数,用于执行以下操作:

代码语言:javascript
复制
const customTheme = deepMerge(grommet, {
  button: {
    extend: ({ primary }) => {
      if (primary) {
        return `
        &:hover {
          background: ${"#6FFFB0"}; // accent-1 color
        }
      `;
      }
    }
  }
});

Color reference

Sandbox example

票数 2
EN

Stack Overflow用户

发布于 2021-03-11 18:38:30

为了阐明解决方案,请找到上面提到的构建在grommet issue 4111上的Codepen。它确认必须在主题中定义default: {},悬停才能工作。

代码语言:javascript
复制
const customTheme = deepMerge(grommet, {
  button: {
    default: {}, // this is required for hover below to work
    hover: {
      primary: {
        background: { color: "accent-1" }
      }
    }
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66192691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档