翻譯自:https://github.com/dojo/framework/blob/master/docs/en/styling/introduction.md
成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站制作、成都網(wǎng)站設計、外貿營銷網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的汕尾網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!Dojo 是基于 HTML 的技術,使用 CSS 為框架中的元素和用它開發(fā)的應用程序設置樣式。
Dojo 鼓勵將結構樣式封裝在各部件中,以便大限度復用;同時將外觀主題設置到應用程序所有部件上。用戶為他們的應用程序設置樣式和主題時,這種模式提供了固定的套路,即使混合使用 Dojo 的 @dojo/widgets
庫中的部件、由第三方提供的部件或者為特定應用程序開發(fā)的內部使用的部件時也是如此。
功能 | 描述 |
---|---|
為單個部件設置樣式 | CSS Modules 用于定義,在單個部件的作用域內有效的樣式,避免潛在的交叉污染和樣式?jīng)_突。通過類型化的 CSS 模塊導入和 IDE 自動完成功能,部件可以精確的引用 CSS 類名。 |
強大的主題支持 | 可以輕松開發(fā)出支持主題的部件,這樣的部件既能使用簡化的、中心化的應用程序主題,也能調整或覆蓋單個實例的目標樣式(如果需要的話)。CLI 工具支持分發(fā)自定義主題。 |
響應式的主題變更 | 與 Dojo 應用程序中的其他響應式狀態(tài)變更類似,當一個部件或者整個應用程序的主題發(fā)生變化時,只有受影響的部件才會重新渲染。 |
提取 CSS 屬性 | 每個 CSS 模塊可通過 CSS 自定義屬性和 var() 引用集中定義的 :root 樣式變量。 |
簡化定義第三方部件的主題 | 應用程序可以輕松擴展主題以覆蓋第三方部件,如 Dojo 內置部件庫中的部件,Dojo 也提供了開箱即用的主題,應用程序可直接使用。CLI 工具極大簡化了主題的創(chuàng)建和組合。 |
注意: 以下示例是按順序在前一個示例的基礎上構建的。每個示例都盡量簡短,只突出顯示跟上一個示例相比發(fā)生變化的部分。
這些示例假定應用程序名為:
package.json
{
"name": "my-app"
}
應用程序名與部件主題的 key 有關。
src/styles/MyWidget.m.css
.root {
font-family: sans-serif;
}
src/widgets/MyWidget.tsx
import { create, tsx } from '@dojo/framework/core/vdom';
import * as css from '../styles/MyWidget.m.css';
const factory = create();
export default factory(function MyWidget() {
return <div classes={[css.root]}>My Widget</div>;
});
theme
中間件theme.classes
返回主題化的 css 類名,這樣部件的默認樣式就會被主題覆蓋src/widgets/MyWidget.tsx
import { create, tsx } from '@dojo/framework/core/vdom';
import theme from '@dojo/framework/core/middleware/theme';
import * as css from '../styles/MyWidget.m.css';
const factory = create({ theme });
export default factory(function MyWidget({ middleware: { theme } }) {
const { root } = theme.classes(css);
return <div classes={[root]}>My Widget</div>;
});
src/themes/MyTheme/MyWidget.m.css
.root {
color: hotpink;
background-color: slategray;
}
src/themes/MyTheme/theme.ts
import * as myWidgetCss from './MyWidget.m.css';
export default {
'my-app/MyWidget': myWidgetCss
};
variables.css
,其中定義了 CSS 自定義屬性var()
引用自定義屬性src/themes/variables.css
:root {
--foreground: hotpink;
--background: slategray;
}
src/themes/MyTheme/MyWidget.m.css
@import '../variables.css';
.root {
color: var(--foreground);
background-color: var(--background);
}
theme
中間件可用于設置應用程序主題。要設置“默認的”或初始化主題,則使用 theme.set
函數(shù),同時用 theme.get
函數(shù)確定是否需要設置主題。應該在應用程序的頂級部件中設置默認主題。
src/App.tsx
import { create, tsx } from '@dojo/framework/core/vdom';
import theme from '@dojo/framework/core/middleware/theme';
import myTheme from '../themes/MyTheme/theme';
const factory = create({ theme });
export default factory(function App({ middleware: { theme }}) {
// if the theme isn't set, set the default theme
if (!theme.get()) {
theme.set(myTheme);
}
return (
// the application's widgets
);
});
注意: 當同時使用基于函數(shù)的部件和基于類的部件時,應該使用應用程序注冊器來注冊主題。當使用基于類的部件時(如 @dojo/widgets
) 也是如此。詳情參考[基于類部件的主題]()。
theme
中間件 在可用的主題間切換src/widgets/ThemeSwitcher.tsx
import { create, tsx } from '@dojo/framework/core/vdom';
import theme from '@dojo/framework/core/middleware/theme';
import myTheme from '../themes/MyTheme/theme';
import alternativeTheme from '../themes/MyAlternativeTheme/theme';
const factory = create({ theme });
export default factory(function ThemeSwitcher({ middleware: { theme } }) {
return (
<div>
<button
onclick={() => {
theme.set(myTheme);
}}
>
Use Default Theme
</button>
<button
onclick={() => {
theme.set(alternativeTheme);
}}
>
Use Alternative Theme
</button>
</div>
);
});
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:Dojo樣式簡介-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://jinyejixie.com/article10/cshgdo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、動態(tài)網(wǎng)站、商城網(wǎng)站、品牌網(wǎng)站制作、面包屑導航、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容