我已经设置了MDC,但是我的文本字段没有动画。
https://imgur.com/a/1h27vhD 该链接显示了应该处于的状态,以及我的字段处于的状态。
第一张图片来自我的网站,当您进入活动状态时,您可以在其中看到标签未设置动画到顶部,底部图片却没有显示。底部图像直接来自Google Material Design演示页面。
<link rel="stylesheet" href="https://unpkg.com/material-components-web/dist/material-components-web.min.css">
<script src="https://unpkg.com/material-components-web/dist/material-components-web.min.js"></script>
<div class="mdc-text-field mdc-text-field--outlined">
<input type="text" id="tf-outlined" class="mdc-text-field__input">
<label for="tf-outlined" class="mdc-floating-label">Your Name</label>
<div class="mdc-notched-outline">
<svg>
<path class="mdc-notched-outline__path"/>
</svg>
</div>
<div class="mdc-notched-outline__idle"></div>
</div>
我在做什么错了?
我先谢谢你
答案 0 :(得分:1)
使用以下代码段。也使用mdc.autoInit();
mdc.autoInit();
<link rel="stylesheet" href="https://unpkg.com/material-components-web/dist/material-components-web.min.css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<body>
<div class="mdc-text-field mdc-text-field--outlined mdc-text-field--with-trailing-icon" data-mdc-auto-init="MDCTextField">
<i class="material-icons mdc-text-field__icon">delete</i>
<input type="text" id="my-input" class="mdc-text-field__input">
<label for="my-input" class="mdc-floating-label">Standard</label>
<div class="mdc-notched-outline">
<svg>
<path class="mdc-notched-outline__path"/>
</svg>
</div>
<div class="mdc-notched-outline__idle"></div>
</div>
<script src="https://unpkg.com/material-components-web/dist/material-components-web.min.js"></script>
</body>
答案 1 :(得分:0)
这是一个可能的解决方案:
您摆脱了<label></label>
。
您向placeholder="Your Name"
标签添加了<input>
属性
您可以使用CSS将占位符隐藏在焦点上
HTML:
<input type="text" id="tf-outlined" class="mdc-text-field__input" placeholder="Your Name">
CSS:
.mdc-text-field__input:focus::placeholder {
visibility: hidden;
}
片段:
.mdc-text-field__input:focus::placeholder {
visibility: hidden;
}
<link rel="stylesheet" href="https://unpkg.com/material-components-web/dist/material-components-web.min.css">
<script src="https://unpkg.com/material-components-web/dist/material-components-web.min.js"></script>
<div class="mdc-text-field mdc-text-field--outlined">
<input type="text" id="tf-outlined" class="mdc-text-field__input" placeholder="Your Name">
<div class="mdc-notched-outline">
<svg>
<path class="mdc-notched-outline__path"/>
</svg>
</div>
<div class="mdc-notched-outline__idle"></div>
</div>
答案 2 :(得分:0)
我之前也遇到过这个问题,您只需要在Javascript文件中添加以下行即可:
mdc.textField.MDCTextField.attachTo(document.querySelector('.mdc-text-field'));
此Javascript代码将CSS动画标签效果与div .mdc-text-field关联,并按以下顺序进行关联:
<div class="mdc-text-field">
<input type="text" id="my-text-field" class="mdc-text-field__input">
<label class="mdc-floating-label" for="my-text-field">Label</label>
<div class="mdc-line-ripple"></div>
</div>
这就是为什么您无法在组件中看到正确的标签动画的原因。我认为MDC文档很好,但是具体性很差。
如果问题仍然存在,请告诉我,问候,我会尽快检查您的问题!
编辑:我忘了说;要获取网站中的所有文本字段,您必须使用:
const edtTexts = [].map.call(document.querySelectorAll('.mdc-text-field'), function(el) {
return new mdc.textField.MDCTextField(el);
});
因此,您将获得一个具有 class =“ mdc-text-field” 的每个div数组。使用 document.querySelector ,您将找到第一个对象。
答案 3 :(得分:0)
这个对我有用。
import {MDCTextField} from '@material/textfield';
const mdcTexts = [].map.call(document.querySelectorAll('.mdc-text-field'), function(el) {
return new MDCTextField(el);
});