vue.js AWS Cognito -如何自定义输入字段?

gk7wooem  于 2023-06-24  发布在  Vue.js
关注(0)|答案(3)|浏览(167)

情况:

在我的Vue应用程序中,我使用aws authenticator来处理登录/注册。
我需要自定义样式,但这有点棘手,因为它的结构是由shadow 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结构。input位于amplify-input内部。

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

这就是--color var所指的:

我的尝试:

我尝试了几种方法,但没有一种有效。我尝试以.input类、inputamplify-input为目标,或者更改--color var。
以下是一些尝试:

: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验证器的输入文本?

k2fxgqgv

k2fxgqgv1#

更新到最新版本的Amplify UI for Vue可能是有意义的。
有关样式的更新文档https://ui.docs.amplify.aws/vue/connected-components/authenticator/customization#css-style
它还链接到显示所有CSS变量https://ui.docs.amplify.aws/vue/theming/css-variables的另一个页面
更新后的版本具有更细粒度的CSS类,例如:

  • --amplify-colors-font-primary
  • --amplify-colors-font-interactive
  • --amplify-colors-font-active
  • --amplify-colors-font-focus
o8x7eapl

o8x7eapl2#

试试看scss

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

puruo6ea3#

由于您使用的是SCSS,因此可以这样做

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

!important在这里很好,因为它是您要覆盖的第三方。
你也可以这样保存你的<style lang="scss" scoped>
正如官方vue loader文档中所解释的:https://vue-loader.vuejs.org/guide/scoped-css.html#deep-selectors
更多细节,这篇文章总是一个很好的参考:https://stackoverflow.com/a/55368933/8816585

相关问题