【问题标题】:AWS Cognito - How to customise the input fields?AWS Cognito - 如何自定义输入字段?
【发布时间】:2021-05-30 23:40:41
【问题描述】:

情况:

在我的 Vue 应用程序中,我使用 aws authenticator 来处理登录/注册。
我需要自定义样式,但这有点棘手,因为它的结构是由影子 DOM 组成的。

修改变量:

到目前为止,我只设法修改了一些放大变量。

我就是这样做的:

:root {
  --amplify-background-color: transparent;
  --amplify-secondary-color: white;
  --amplify-primary-contrast: white;
  --amplify-primary-color: #E00C1D;
}

旁注。定位 amplify-sign-in 而不是 :root 也可以,但从逻辑上讲,这种样式仅适用于登录表单,不适用于注册 (amplify-sign-up) 表单。
自定义样式定位 :root 适用于登录和注册表单。

自定义输入字段:

这就是我卡住的地方。 输入中文本的颜色由--amplify-secondary-color var 给出,在我的例子中它需要是白色的。但是这样输入的文本在白色背景上是不可见的。

这是amplify-sign-in 的HTML 结构。 inputamplify-input 内。

这是.input 类的样式。如您所见,颜色由--color var

控制

这就是--color var 所指的内容:

我的尝试:

我尝试了几种方法,但都没有奏效。 我试图以.input 类、inputamplify-input 为目标,或者更改--color 变量。

这些是一些尝试:

:host {
  --color: red !important;
}

:host(.input) {
  color: red !important;
  --color: red !important;
}

amplify-input {
  --color: red !important;

  & .input {
    color:red !important;
    --color: red !important;
  }
}

文档:

这是关于 css 自定义的docs。不幸的是,文档很差

测试:

使用 Vue 设置工作示例的最快方法是从 amplify-js-samples 包中设置此示例:https://github.com/aws-amplify/amplify-js-samples/tree/main/samples/vue/auth/authenticator

问题:

如何修改 aws 验证器的输入文本?

【问题讨论】:

  • 你的意思是你想要这样吗? nimb.ws/E0CZQl
  • 嗯,是的,我需要能够更改输入文本颜色,而不影响 --amplify-secondary-color var。
  • 不要发布您的代码截图,而是以文本形式发布实际代码。
  • 我以文本形式发布了我的代码。这些是从 Chrome 开发者工具的 Elements 选项卡截取的屏幕截图。它们是默认 AWS cognito 中使用的输入样式。

标签: javascript css amazon-web-services vue.js amazon-cognito


【解决方案1】:

由于你使用的是 SCSS,你可以这样做

::v-deep amplify-input input[type='email'] { // can of course be more specific here
  color: red !important;
}

!important 在这里很好,因为它是您要覆盖的第 3 方。
您也可以通过这种方式保留您的<style lang="scss" scoped>

正如官方 vue 加载器文档中所述:https://vue-loader.vuejs.org/guide/scoped-css.html#deep-selectors

有关更多详细信息,此帖子始终是一个很好的参考:https://stackoverflow.com/a/55368933/8816585

【讨论】:

  • 感谢您的回复。不幸的是,它似乎不起作用。
  • 您能否详细说明尝试我的解决方案后的行为? :)
  • css 规则无法影响输入的实际颜色。它仍然是白色的。
  • 它至少出现在开发工具的 CSS 计算部分吗?你有可复制的链接分享吗?
  • 不,它既没有出现在样式中,也没有出现在“计算”选项卡中。不幸的是,我认为不可能有一个 codepen 或类似的东西,因为它需要一个 AWS 帐户。我编辑了这个问题,添加了一些关于如何设置 Vue 示例的说明,以防有人感兴趣。
【解决方案2】:

试试下面的scss,

amplify-sign-in /deep/ {
    amplify-input {
        > input.input {
            color : red !important;
        }
    }
}

【讨论】:

  • 感谢您的回复。我试过了,但没有用。
猜你喜欢
  • 2019-03-29
  • 2021-03-21
  • 2019-09-27
  • 1970-01-01
  • 2018-06-07
  • 1970-01-01
  • 2017-11-19
  • 2020-02-06
  • 1970-01-01
相关资源
最近更新 更多