Компоненты дизайна материала и веб-компоненты материала
Я прочитал документацию, относящуюся к этой версии. В этой документации я обнаружил, что мы можем добавить mixin для высоты.
Первое, что следует отметить здесь, это то, что есть две разные библиотеки компонентов материала: тот, который вы имеется в виду MD C (Компоненты конструирования материала, распределенные по npm как @material/<component>
), который представляет собой реализацию SASS + JS компонентов материала. Другой - MW C (Web-компоненты материалов, распространяемые как @material/mwc-<component>
), набор фактических WebComponents на основе предыдущей библиотеки. Так что имейте в виду, что документация относится к аналогу MD C компонента MW C, который вы фактически используете (<mwc-textfield>
).
Стилизация снаружи
То, что вы пытаетесь сделать здесь
#textbox.mdc-text-field--height {
height: 45px;
}
не работает в основном потому, что выделение внутри тени пользовательского элемента root невозможно (по крайней мере, больше не *) 1026 *); кроме того, элементом, отвечающим за высоту, является <label>
, класс которого равен .mdc-text-field
.
Путь querySelector
Самый быстрый способ изменить высоту, которая мне приходит в голову следующее:
import { LitElement, html, property, customElement, css, query } from 'lit-element';
import '@material/mwc-textfield';
@customElement('my-component')
export class MyComponent extends LitElement {
// Select the text field
@query('mwc-textfield') textField;
async firstUpdated() {
// Wait for its dom to be ready
await this.field.updateComplete;
// Programmatically select the label
// and change the height
this.field
.shadowRoot
.querySelector('.mdc-text-field')
.style
.height = '45px';
}
render() {
return html`<mwc-textfield></mwc-textfield>`;
}
}
однако я бы действительно не рекомендовал бы это: если не считать производительность и элегантность, это, вероятно, сломает некоторые из mwc-textfield
функций, таких как плавающие label.
Способ расширения
Вы также можете принудительно установить высоту, увеличив TextField
и переопределив стили:
import {LitElement, html, customElement, css} from 'lit-element';
import {TextField} from '@material/mwc-textfield/mwc-textfield';
@customElement('my-textfield')
export class MyTextfield extends TextField {
static styles = [TextField.styles, css`
.mdc-text-field {
height: 45px;
}
`];
}
// Then use <my-textfield> instead of <mwc-textfield>
, но снова , как и выше, используйте на свой страх и риск ...
Использование mixin
Полагаю, пока единственным способом использования height
mixin является сборка настраиваемая версия TextField, которая более или менее выглядит следующим образом:
Конечно, слишком много работы для изменения высоты ... Хорошая новость в том, что MW C все еще находится в разработке, и нельзя исключать, что они добавят пользовательское свойство CSS или другой способ настройки. высота. Кроме того, новые концепции плотность реализуются в MW C (к сожалению, еще не в TextField), что может быть именно то, что вам нужно.
Существует также открытый выпуск об этом, посмотрим что они скажут