首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Styled-System (和styled-compoments)淡化悬停上的当前按钮颜色

使用Styled-System (和styled-compoments)淡化悬停上的当前按钮颜色
EN

Stack Overflow用户
提问于 2019-05-24 00:30:27
回答 2查看 5.6K关注 0票数 6

我正在使用styled-system (带有styled-components)创建一个Button组件。

我想创建一个悬停效果,使按钮的颜色稍微变亮,而不管是什么颜色。

例如,假设有三个按钮--一个默认按钮、一个主按钮和一个辅助按钮:

代码语言:javascript
复制
<Button>Default</Button>
<Button bg="primary">Primary</Button>
<Button bg="secondary">Secondary</Button>

让我们想象一下,默认颜色是深灰色,主色是绿色,次色是蓝色。

因此,如果我将鼠标悬停在默认按钮上,颜色应该是深灰色的稍微浅一些的颜色。对于主要的,稍微亮一点的绿色,对于次要的,浅蓝色。

不过,我不知道该怎么做?

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2019-07-23 17:32:08

推荐的方法是使用styled-system的buttonStyle变体。

这需要添加buttonStyle系统属性,然后在theme对象上提供buttons scale。请注意,变体是原始的CSS对象defs,而不是系统属性。

Button.js

代码语言:javascript
复制
import styled from "styled-components"
import { buttonStyle } from "@styled-system/variant"

export default styled('button')({}, buttonStyle)

theme.js

代码语言:javascript
复制
export default {
  buttons: {
    primary: {
      backgroundColor: "red",
      '&:hover': {
        backgroundColor: "pink" // use polished `lighten`, etc
      }
    }
  }
}

用法:只需指定variant

代码语言:javascript
复制
<Button variant="primary">Primary Button</Button>

下面是CodeSandbox演示:https://codesandbox.io/s/zealous-noether-lxjeu?fontsize=14

票数 9
EN

Stack Overflow用户

发布于 2019-05-24 00:41:59

您需要使用一些css类。

您可以使用filter: brightness(150%)或自定义加亮颜色。但是如果你使用像SASS或更小的css预处理器,你就有了预先构建的函数。

例如:

代码语言:javascript
复制
button {
  background: red;
  color: white;
}

.primary {
  background: green;
}

.secondary {
  background: blue;
}

button:hover {
  filter: brightness(150%);
}
代码语言:javascript
复制
<Button>Default</Button>
<Button class="primary">Primary</Button>
<Button class="secondary">Secondary</Button>

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56279520

复制
相关文章

相似问题

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