使用樣式系統進行開發 developing-with-the-style-system

瞭解如何使用Experience Manager的樣式系統來實作個別樣式並重複使用核心元件。 本教學課程涵蓋樣式系統的開發,以使用範本編輯器的品牌特定CSS和進階原則設定來擴充核心元件。

先決條件 prerequisites

檢閱設定所需的工具和指示 本機開發環境.

也建議檢閱 使用者端程式庫與前端工作流程 教學課程以瞭解使用者端資料庫的基礎知識,以及AEM專案中建置的各種前端工具。

入門專案

NOTE
如果您成功完成上一章,您可以重複使用專案,並略過出庫入門專案的步驟。

檢視教學課程建置的基底程式碼:

  1. 檢視 tutorial/style-system-start 分支來源 GitHub

    code language-shell
    $ cd aem-guides-wknd
    $ git checkout tutorial/style-system-start
    
  2. 使用您的Maven技能將程式碼庫部署到本機AEM執行個體:

    code language-shell
    $ mvn clean install -PautoInstallSinglePackage
    
    note note
    NOTE
    如果使用AEM 6.5或6.4,請附加 classic 設定檔至任何Maven指令。
    code language-shell
    $ mvn clean install -PautoInstallSinglePackage -Pclassic
    

您一律可以於檢視完成的程式碼 GitHub 或切換至分支以在本機簽出程式碼 tutorial/style-system-solution.

目標

  1. 瞭解如何使用樣式系統將品牌特定的CSS套用至AEM核心元件。
  2. 瞭解BEM標籤法,以及如何使用它來仔細設定樣式的範圍。
  3. 使用可編輯的範本套用進階原則設定。

您即將建置的內容 what-build

本章使用 造型系統特徵 若要建立 標題文字 用於文章頁面上的元件。

標題的可用樣式

可用於標題元件的底線樣式

背景 background

樣式系統 可讓開發人員和範本編輯器建立元件的多個視覺變體。 接著,作者就可以決定構成頁面時要使用的樣式。 樣式系統會在本教學課程的其餘部分中使用,以在低程式碼方法使用核心元件時獲得數個獨特樣式。

樣式系統的一般構想是,作者可以選擇元件的各種樣式。 「樣式」受到插入元件外部div的其他CSS類別支援。 在使用者端資料庫中,會根據這些樣式類別新增CSS規則,讓元件能夠變更外觀。

您可以找到 此處為樣式系統的詳細檔案. 此外,還有一個 瞭解樣式系統的技術影片.

底線樣式 — 標題 underline-style

標題元件 已代理至下的專案 /apps/wknd/components/title 做為 ui.apps 模組。 標題元素的預設樣式(H1H2H3…)已實作於 ui.frontend 模組。

wknd文章設計 為帶有底線的標題元件包含唯一的樣式。 您可以使用「樣式系統」來允許作者加入底線樣式的選項,而不是建立兩個元件或修改元件對話方塊。

底線樣式 — 標題元件

新增標題原則

讓我們為Title元件新增一項原則,讓內容作者選擇要套用至特定元件的Underline樣式。 這是使用AEM中的範本編輯器完成。

  1. 導覽至 文章頁面 範本來源: http://localhost:4502/editor.html/conf/wknd/settings/wcm/templates/article-page/structure.html

  2. 結構 模式,主要的 配置容器,選取 原則 圖示加以存取 標題 元件列於下 允許的元件

    標題原則設定

  3. 使用下列值建立Title元件的原則:

    原則標題*WKND標題

    屬性 > 樣式索引標籤 > 新增樣式

    底線cmp-title--underline

    標題的樣式原則設定

    按一下 完成 以儲存標題原則的變更。

    note note
    NOTE
    cmp-title--underline 會在元件HTML標籤的外部div上填入CSS類別。

套用底線樣式

身為作者,我們可以將底線樣式套用至某些標題元件。

  1. 導覽至 滑板公園 AEM Sites編輯器中的文章: http://localhost:4502/editor.html/content/wknd/us/en/magazine/guide-la-skateparks.html

  2. 編輯 模式,選擇標題元件。 按一下 繪圖筆刷 圖示並選取 底線 樣式:

    套用底線樣式

    note note
    NOTE
    此時,不會發生可見的變更,因為 underline 尚未實作樣式。 在下一個練習中,會實作此樣式。
  3. 按一下 頁面資訊 圖示> 以發佈的形式檢視 以在AEM編輯器外部檢查頁面。

  4. 使用瀏覽器開發人員工具,驗證Title元件周圍的標籤是否具有CSS類別 cmp-title--underline 套用至外部div。

    套用底線類別的Div

    code language-html
    <div class="title cmp-title--underline">
        <div data-cmp-data-layer="{&quot;title-b6450e9cab&quot;:{&quot;@type&quot;:&quot;wknd/components/title&quot;,&quot;repo:modifyDate&quot;:&quot;2022-02-23T17:34:42Z&quot;,&quot;dc:title&quot;:&quot;Vans Off the Wall Skatepark&quot;}}"
        id="title-b6450e9cab" class="cmp-title">
            <h2 class="cmp-title__text">Vans Off the Wall Skatepark</h2>
        </div>
    </div>
    

實作底線樣式 — ui.frontend

接下來,使用下列專案實作底線樣式 ui.frontend AEM專案的模組。 隨附的Webpack開發伺服器 ui.frontend 用於預覽樣式的模組 早於 使用部署至AEM的本機執行個體。

  1. 開始 watch 從內部處理 ui.frontend 模組:

    code language-shell
    $ cd ~/code/aem-guides-wknd/ui.frontend/
    $ npm run watch
    

    這會啟動監控變更的程式。 ui.frontend 模組並同步變更至AEM執行個體。

  2. 返回IDE並開啟檔案 _title.scss 從: ui.frontend/src/main/webpack/components/_title.scss.

  3. 引入目標定位的新規則 cmp-title--underline 類別:

    code language-scss
    /* Default Title Styles */
    .cmp-title {}
    .cmp-title__text {}
    .cmp-title__link {}
    
    /* Add Title Underline Style */
    .cmp-title--underline {
        .cmp-title__text {
            &:after {
            display: block;
                width: 84px;
                padding-top: 8px;
                content: '';
                border-bottom: 2px solid $brand-primary;
            }
        }
    }
    
    note note
    NOTE
    最佳實務就是一律將樣式嚴格限定為目標元件。 這樣可確保額外的樣式不會影響頁面的其他區域。
    所有核心元件都必須遵守 BEM標籤法. 建立元件的預設樣式時,最佳實務是鎖定外部CSS類別。 另一個最佳實務是鎖定核心元件BEM標籤法所指定的類別名稱,而非HTML元素。
  4. 返回瀏覽器和AEM頁面。 您應該會看到底線樣式已新增:

    Webpack開發伺服器中可見的底線樣式

  5. 在AEM編輯器中,您現在應該能夠開啟和關閉 底線 樣式化,並透過視覺效果呈現變更。

引號區塊樣式 — 文字 text-component

接下來,重複類似的步驟,將唯一的樣式套用至 文字元件. 文字元件已代理至下的專案 /apps/wknd/components/text 做為 ui.apps 模組。 段落元素的預設樣式已實作於 ui.frontend.

wknd文章設計 包含具有引號區塊的文字元件的唯一樣式:

引號區塊樣式 — 文字元件

新增文字原則

接著,新增文字元件的原則。

  1. 導覽至 文章頁面範本 從: http://localhost:4502/editor.html/conf/wknd/settings/wcm/templates/article-page/structure.html.

  2. 結構 模式,主要的 配置容器,選取 原則 圖示加以存取 文字 元件列於下 允許的元件

    文字原則設定

  3. 使用以下值更新文字元件原則:

    原則標題*內容文字

    外掛程式 > 段落樣式 > 啟用段落樣式

    樣式索引標籤 > 新增樣式

    報價區塊cmp-text--quote

    文字元件原則

    文字元件原則2

    按一下 完成 以儲存對文字原則所做的變更。

套用引號區塊樣式

  1. 導覽至 滑板公園 AEM Sites編輯器中的文章: http://localhost:4502/editor.html/content/wknd/us/en/magazine/guide-la-skateparks.html

  2. 編輯 模式,選擇文字元件。 編輯元件以包含引號元素:

    文字元件設定

  3. 選取文字元件,然後按一下 繪圖筆刷 圖示並選取 報價區塊 樣式:

    套用引號區塊樣式

  4. 使用瀏覽器的開發人員工具來檢查標籤。 您應該會看到類別名稱 cmp-text--quote 已新增至元件的外部div:

    code language-html
    <!-- Quote Block style class added -->
    <div class="text cmp-text--quote">
        <div data-cmp-data-layer="{&quot;text-60910f4b8d&quot;:{&quot;@type&quot;:&quot;wknd/components/text&quot;,&quot;repo:modifyDate&quot;:&quot;2022-02-24T00:55:26Z&quot;,&quot;xdm:text&quot;:&quot;<blockquote>&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;quot;There is no better place to shred then Los Angeles&amp;quot;</blockquote>\r\n<p>- Jacob Wester, Pro Skater</p>\r\n&quot;}}" id="text-60910f4b8d" class="cmp-text">
            <blockquote>&nbsp; &nbsp; &nbsp;"There is no better place to shred then Los Angeles"</blockquote>
            <p>- Jacob Wester, Pro Skater</p>
        </div>
    </div>
    

實作引號區塊樣式 — ui.frontend

接下來,讓我們使用 ui.frontend AEM專案的模組。

  1. 如果尚未執行,請啟動 watch 從內部處理 ui.frontend 模組:

    code language-shell
    $ npm run watch
    
  2. 更新檔案 text.scss 從: ui.frontend/src/main/webpack/components/_text.scss

    code language-css
    /* Default text style */
    .cmp-text {}
    .cmp-text__paragraph {}
    
    /* WKND Text Quote style */
    .cmp-text--quote {
        .cmp-text {
            background-color: $brand-third;
            margin: 1em 0em;
            padding: 1em;
    
            blockquote {
                border: none;
                font-size: $font-size-large;
                font-family: $font-family-serif;
                padding: 14px 14px;
                margin: 0;
                margin-bottom: 0.5em;
    
                &:after {
                    border-bottom: 2px solid $brand-primary; /*yellow border */
                    content: '';
                    display: block;
                    position: relative;
                    top: 0.25em;
                    width: 80px;
                }
            }
            p {
                font-family:  $font-family-serif;
            }
        }
    }
    
    note caution
    CAUTION
    在此案例中,樣式目標是原始HTML元素。 這是因為文字元件為內容作者提供RTF編輯器。 直接針對RTE內容建立樣式時,應謹慎進行,而且更重要的一點是應嚴格限定樣式的範圍。
  3. 再次返回瀏覽器,您應該會看到已新增Quote區塊樣式:

    可見引號區塊樣式

  4. 停止webpack開發伺服器。

固定寬度 — 容器(額外優點) layout-container

容器元件已用來建立文章頁面範本的基本結構,並提供放置區域,讓內容作者在頁面上新增內容。 容器也可以使用「樣式系統」,為內容作者提供設計版面的更多選項。

主要容器 的範本。文章頁面範本包含兩個可編寫的容器,且寬度固定。

主要容器

文章頁面範本中的主要容器.

的原則 主要容器 將預設元素設為 main

主要容器原則

此CSS使得 主要容器 固定設定於 ui.frontend 模組在 ui.frontend/src/main/webpack/site/styles/container_main.scss

main.container {
    padding: .5em 1em;
    max-width: $max-content-width;
    float: unset!important;
    margin: 0 auto!important;
    clear: both!important;
}

不要鎖定目標 main HTML元素,樣式系統可用來建立 固定寬度 做為容器原則一部分的樣式。 樣式系統可讓使用者選擇是否切換 固定寬度流動寬度 容器。

  1. 額外挑戰 — 運用從先前練習中吸取的經驗教訓,並使用樣式系統來實作 固定寬度流動寬度 容器元件的樣式。

恭喜! congratulations

恭喜,文章頁面幾乎已設定樣式,而您透過AEM樣式系統獲得實作體驗。

後續步驟 next-steps

瞭解建立 自訂AEM元件 會顯示在對話方塊中編寫的內容,並探索開發Sling模型來封裝商業邏輯以填入元件的HTL。

檢視完成的程式碼: GitHub 或在Git分支上檢閱並部署程式碼至本機 tutorial/style-system-solution.

  1. 原地複製 github.com/adobe/aem-wknd-guides 存放庫。
  2. 檢視 tutorial/style-system-solution 分支。
recommendation-more-help
b2a561c1-47c0-4182-b8c1-757a197484f9