Dojo樣式簡(jiǎn)介-創(chuàng)新互聯(lián)

翻譯自:https://github.com/dojo/framework/blob/master/docs/en/styling/introduction.md

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的汕尾網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

介紹

Dojo 是基于 HTML 的技術(shù),使用 CSS 為框架中的元素和用它開發(fā)的應(yīng)用程序設(shè)置樣式。

Dojo 鼓勵(lì)將結(jié)構(gòu)樣式封裝在各部件中,以便大限度復(fù)用;同時(shí)將外觀主題設(shè)置到應(yīng)用程序所有部件上。用戶為他們的應(yīng)用程序設(shè)置樣式和主題時(shí),這種模式提供了固定的套路,即使混合使用 Dojo 的 @dojo/widgets 庫(kù)中的部件、由第三方提供的部件或者為特定應(yīng)用程序開發(fā)的內(nèi)部使用的部件時(shí)也是如此。

功能 描述
為單個(gè)部件設(shè)置樣式CSS Modules 用于定義,在單個(gè)部件的作用域內(nèi)有效的樣式,避免潛在的交叉污染和樣式?jīng)_突。通過類型化的 CSS 模塊導(dǎo)入和 IDE 自動(dòng)完成功能,部件可以精確的引用 CSS 類名。
強(qiáng)大的主題支持可以輕松開發(fā)出支持主題的部件,這樣的部件既能使用簡(jiǎn)化的、中心化的應(yīng)用程序主題,也能調(diào)整或覆蓋單個(gè)實(shí)例的目標(biāo)樣式(如果需要的話)。CLI 工具支持分發(fā)自定義主題。
響應(yīng)式的主題變更與 Dojo 應(yīng)用程序中的其他響應(yīng)式狀態(tài)變更類似,當(dāng)一個(gè)部件或者整個(gè)應(yīng)用程序的主題發(fā)生變化時(shí),只有受影響的部件才會(huì)重新渲染。
提取 CSS 屬性每個(gè) CSS 模塊可通過 CSS 自定義屬性和 var() 引用集中定義的 :root 樣式變量。
簡(jiǎn)化定義第三方部件的主題應(yīng)用程序可以輕松擴(kuò)展主題以覆蓋第三方部件,如 Dojo 內(nèi)置部件庫(kù)中的部件,Dojo 也提供了開箱即用的主題,應(yīng)用程序可直接使用。CLI 工具極大簡(jiǎn)化了主題的創(chuàng)建和組合。

基本用法

注意: 以下示例是按順序在前一個(gè)示例的基礎(chǔ)上構(gòu)建的。每個(gè)示例都盡量簡(jiǎn)短,只突出顯示跟上一個(gè)示例相比發(fā)生變化的部分。

這些示例假定應(yīng)用程序名為:

package.json

{
    "name": "my-app"
}

應(yīng)用程序名與部件主題的 key 有關(guān)。

為單個(gè)部件設(shè)置樣式

  • 為每個(gè)部件單獨(dú)定義一個(gè) CSS 模塊
  • 在部件的 TypeScript 代碼中使用相應(yīng)的類型化的樣式類

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 類名,這樣部件的默認(rèn)樣式就會(huì)被主題覆蓋

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>;
});

創(chuàng)建主題

  • 使用自定義的主題樣式屬性重寫部件默認(rèn)的 CSS 類
  • 通過合適的部件主題 key 將一個(gè)或多個(gè)重寫后的樣式鏈接到主題結(jié)構(gòu)中

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
};

提取公共的主題屬性

  • 導(dǎo)入一個(gè)集中定義的常規(guī) CSS 文件 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);
}

指定默認(rèn)的應(yīng)用程序主題

theme 中間件可用于設(shè)置應(yīng)用程序主題。要設(shè)置“默認(rèn)的”或初始化主題,則使用 theme.set 函數(shù),同時(shí)用 theme.get 函數(shù)確定是否需要設(shè)置主題。應(yīng)該在應(yīng)用程序的頂級(jí)部件中設(shè)置默認(rèn)主題。

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
    );
});

注意: 當(dāng)同時(shí)使用基于函數(shù)的部件和基于類的部件時(shí),應(yīng)該使用應(yīng)用程序注冊(cè)器來注冊(cè)主題。當(dāng)使用基于類的部件時(shí)(如 @dojo/widgets) 也是如此。詳情參考[基于類部件的主題]()。

更改應(yīng)用程序主題

  • 使用 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>
    );
});

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章名稱:Dojo樣式簡(jiǎn)介-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)地址:http://muchs.cn/article10/cshgdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站商城網(wǎng)站、品牌網(wǎng)站制作、面包屑導(dǎo)航企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站