带有 CDN 的 Material.io

Posted

技术标签:

【中文标题】带有 CDN 的 Material.io【英文标题】:Material.io with CDN 【发布时间】:2020-09-27 23:35:51 【问题描述】:

所以我想弄清楚如何将 Material.io 用于我正在做的一些 Web 应用程序实验的前端,但我只想为此使用 CDN 而不是 npm。我有点跟随这里找到的示例:https://codelabs.developers.google.com/codelabs/mdc-101-web/#1,但它假定使用 npm。现在我已经导入了 CSS 和 JS 的 Material 组件,并且我有一个基本的登录表单,带有一些样式,但我不知道如何让 javascript 正常运行并产生表单框动画在此处的示例中看到:https://codelabs.developers.google.com/codelabs/mdc-101-web/#2。

html

<html>
    <head>
        <!-- Import Material components CSS and JS -->
        <link href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css" rel="stylesheet">
        <script src="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.js"></script>
    </head>
<body>
        <div class="login_container">
            <div class="box" id="two"> 
                <form>
                    <label class="mdc-text-field mdc-text-field--filled username">
                        <span class="mdc-text-field__ripple"></span>
                        <input type="text" class="mdc-text-field__input" aria-labelledby="username-label" name="username" required>
                        <span class="mdc-floating-label" id="username-label">Username</span>
                        <span class="mdc-line-ripple"></span>
                    </label>
                    <label class="mdc-text-field mdc-text-field--filled password">
                        <span class="mdc-text-field__ripple"></span>
                        <input type="password" class="mdc-text-field__input" aria-labelledby="password-label" name="password" required minlength="8">
                        <span class="mdc-floating-label" id="password-label">Password</span>
                        <span class="mdc-line-ripple"></span>
                    </label>
                </form>
            </div>
        </div>
    </body>
</html>

CSS:

.username,
.password 
  display: flex;
  margin: 20px auto;
  width: 300px;

JavaScript:


import MDCTextField from '@material/textfield';

const username = new MDCTextField(document.querySelector('.username'));
const password = new MDCTextField(document.querySelector('.password'));

我意识到这可能行不通,因为它假定了 npm 设置,但我也尝试过,但它不起作用:

mdc.textField.MDCTextField.attachTo(document.querySelector('.mdc-text-field'));

感谢任何帮助,即使它只是将我指向新文档或其他内容。我似乎无法在 Material 文档中找到正确的答案,因为它假定或建议使用 npm。

【问题讨论】:

【参考方案1】:

文档可以在这里找到: https://material.io/develop/web/guides/importing-js

在全球/CDN 下查看。你可以在那里找到这个模式:

const MDCFoo = mdc.foo.MDCFoo;
const MDCFooFoundation = mdc.foo.MDCFooFoundation;

使用上面的模式,您可以替换以下行:

import MDCTextField from '@material/textfield';

使用此代码:

const MDCTextField = mdc.textField.MDCTextField;

【讨论】:

以上是关于带有 CDN 的 Material.io的主要内容,如果未能解决你的问题,请参考以下文章

带有 CDN 版本的 css 图像路径

html jquery:带有后备的CDN

html 带有后备的jQuery CDN

道具被变异(在 django 模板和带有 CDN 的 Vue.js 中)

带有 vue-router 和 CDN 的 VueJS 3 路由

html Bootstrap,带有Fontawesome和CDN链接的导航栏