xy-ui
xy-ui
Web Components
Разработка кросс-нормативной библиотеки компонентов пользовательского интерфейса.Посмотреть документацию
ссылка на стильAnt Design
,Metiral Design
.
Документация
Этот документ основан наdocsifyДинамически созданные все компоненты в этой статье являются интерактивными экземплярами.
теперь интегрированgitalkСистема комментариев, если у вас есть какие-либо связанные вопросы, вы можете оставить сообщение в области комментариев ниже.
характеристика
- 跨框架。 Будь то
react
,vue
Его также можно использовать в нативных проектах. - компонентный.
shadow dom
Он действительно реализует компонентизацию стилей и функций. - родной класс. Компонент подобен использованию
div
тот самый ярлык. - Нет зависимостей. Чистый натив, без компиляции препроцессора.
- Доступность. Поддержка доступа клавиатуры.
в общем
При реализации функциональности компонента следуйтеCSS
Господин,JavaScript
Что касается вспомогательных идей,UI
Разделяйте бизнес-логику, делая структуру кода более простой.
Напримерxy-button
Нажмите на диффузию воды имеет волновой эффект, это использоватьCSS
реализовать,JavaScript
.btn::after {
content: "";
display: block;
position: absolute;
width: 100%;
height: 100%;
left: var(--x,0);
top: var(--y,0);
pointer-events: none;
background-image: radial-gradient(circle, #fff 10%, transparent 10.01%);
background-repeat: no-repeat;
background-position: 50%;
transform: translate(-50%,-50%) scale(10);
opacity: 0;
transition: transform .3s, opacity .8s;
}
.btn:not([disabled]):active::after {
transform: translate(-50%,-50%) scale(0);
opacity: .3;
transition: 0s;
}
Подробности смотрите в исходном коде. Большинство компонентов имеют схожую конструкцию.
совместимость
Современные браузеры.
Включая мобильный терминал, не поддерживаетсяIE
.
IE
Родной не поддерживаетсяcustomElements
,webcomponentsjsМожет быть достигнутIE
совместимы, но многоCSS
Функция по-прежнему не работает, так что сдавайся
Установить
В настоящее время не размещаетсяnpm
, допустимыйgithub
чтобы получить последние файлы.
Каталог выглядит следующим образом:
.
└── xy-ui
├── components //功能组件
| ├── xy-icon.js
| └── ...
└── iconfont //图标库
└── icon.svg
Будуcomponents
а такжеiconfont
папку в проект.
полагаться
Использование некоторых компонентов должно зависеть от других компонентов, зависимости следующие
компоненты | зависимости | описывать |
---|---|---|
xy-button |
xy-icon ,xy-loading
|
кнопка.组件使用了icon а такжеloading Атрибуты. |
xy-icon |
без | значок. |
xy-slider |
xy-tips |
Горка.组件使用了showtips Атрибуты. |
xy-select |
xy-button |
Выбросить селектор. Используется внутри компонентаxy-button Комбинация. |
xy-tab |
xy-button |
Страница закладок. Кнопки навигации компонентов используютxy-button . |
xy-loading |
без | нагрузка. |
xy-switch |
без | выключатель. |
xy-checkbox |
без | Большой выбор. |
xy-radio |
без | Единственный выбор. |
xy-tips |
без | намекать. |
xy-message |
xy-icon |
Глобальная подсказка. Используйте значок информацииxy-icon . |
xy-dialog |
xy-icon ,xy-button ,xy-loading
|
Всплывающая подсказка. Используйте значок информацииxy-icon Убедитесь, что кнопка «Отмена» используетсяxy-button . компонент используетloading Атрибуты. |
xy-layout |
без | макет. |
xy-input |
xy-icon ,xy-button ,xy-tips
|
Поле ввода. компонент используетicon свойства, при этомxy-button Интерактивный, используется проверка формыxy-tips уведомление о сообщении. |
xy-textarea |
То же | Многострочное поле ввода. То же. |
Напрямую вводить отдельные компоненты без зависимостейjs
То есть есть зависимые компоненты, которые нужно ввестиjs
.
Для использования в одиночкуxy-tips
компоненты, просто ссылкаxy-tips.js
.
// .
// └── project
// ├── components
// | └── xy-tips.js
// └── index.html
import './components/xy-tips.js';
Для использования в одиночкуxy-input
компонент, на который следует ссылатьсяxy-input.js
,xy-button.js
,xy-icon.js
,xy-tips.js
.
// └── project
// ├── components
// | ├── xy-input.js
// | ├── xy-button.js
// | ├── xy-icon.js
// | └── xy-tips.js
// └── index.html
import './components/xy-input.js';
В большинстве случаев все ссылки
Цитировать
HTML-ссылка
<script type="module">
import './components/xy-button.js';
</script>
<xy-button>button</xy-button>
Современные браузеры поддерживают родной
import
синтаксис, но будьте осторожныscript
типtype="module"
.
ссылка на реактивный проект
import './components/xy-icon.js';
ReactDOM.render(<xy-button>button</xy-button>, document.body);
о
react
используется вWeb Components
Детали внимания могут относиться кreact.doc — это China.org/docs/Web-co…
ссылка на проект vue
Аналогично нативному, исследования пока нет.
использовать
Существует несколько способов использования компонента:
HTML-тег
Это наиболее распространенное использование (рекомендуется).
<xy-button>button</xy-button>
document.createElement
также черезdocument.createElement
создать элемент
const btn = document.createElement('xy-button');
document.body.appenChild(btn);
новый оператор
Пользовательские компоненты передаютсяclass
Определяетсяnew
создать экземпляр.
import XyButton from './components/xy-button.js';
const btn = new XyButton();
document.body.appenChild(btn);
разное
В большинстве случаев компоненты можно рассматривать как обычныеhtml
Этикетка,
такие как предоставление<xy-button>button</xy-button>
Есть несколько способов добавить события
<xy-button onclick="alert(5)">button</xy-button>
btn.onclick = function(){
alert(5)
}
btn.addEventListener('click',function(){
alert(5)
})
Пользовательские события могут проходить только
addEventListener
Связывать
Например, приобретение элементов полностью соответствуетhtml
правило
<xy-tab>
<xy-tab-content label="tab1">tab1</xy-tab-content>
<xy-tab-content label="tab2">tab2</xy-tab-content>
<xy-tab-content label="tab3" id="tab3">tab3</xy-tab-content>
</xy-tab>
const tab3 = document.getElementById('tab3');
tab3.parentNode;//xy-tab
Булевые атрибуты также соответствуют основной спецификации компонентов (Add и удаление атрибутов), такие как
<xy-dialog show></xy-dialog> <!-- 显示 -->
<xy-dialog></xy-dialog> <!-- 隐藏 -->
<xy-button loading>button</xy-button> <!-- 加载中 -->
<xy-button>button</xy-button> <!-- 正常 -->
Короче говоря, в большинстве случаев относитесь к этому как к обычномуhtml
Метка (не обращайте внимания на структуру теневого дома) просто прекрасна, как это сделать раньше, так и сейчас, просто добавьте новый метод.
Для получения более подробной информации, пожалуйстаПосмотреть документацию, добро пожаловать, звезда~