<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CSS模塊化方案

          共 1825字,需瀏覽 4分鐘

           ·

          2022-07-28 01:42

          1.1 CSS 命名方法


          通過人工的方式來約定命名規(guī)則


          BEM是一種典型的 CSS 命名方法論,BEM的命名規(guī)矩就是block-name__element-name--modifier-name,也就是模塊名 + 元素名 + 修飾器名


          OOCSS(Object-Oriented CSS)即面向?qū)ο蟮?CSS,它借鑒了 OOP(面向?qū)ο缶幊蹋┑某橄笏季S,主張將元素的樣式抽象成多個獨立的小型樣式類,來提高樣式的靈活性和可重用性。


          ITCSS(Inverted Triangle CSS,倒三角 CSS)是一套方便擴展和管理的 CSS 體系架構(gòu),它兼容 BEM、OOCSS、SMACSS 等 CSS 命名方法論


          SMACSS即可伸縮及模塊化的 CSS 結(jié)構(gòu)


          .block__element {    display: none;}.block__element--active {    display: block;}


          1.2 CSS Modules


          CSS Modules:一個 CSS 文件就是一個獨立的模塊,核心思想是 通過組件名的唯一性來保證選擇器的唯一性,從而保證樣式不會污染到組件外


          CSS Modules允許我們像 import 一個 JS Module 一樣去 import 一個 CSS Module.每一個 CSS 文件都是一個獨立的模塊,每一個類名都是該模塊所導(dǎo)出對象的一個屬性。通過這種方式,便可在使用時明確指定所引用的 CSS 樣式。并且,CSS Modules 在打包時會自動將 id 和 class 混淆成全局唯一的 hash 值,從而避免發(fā)生命名沖突問題。


          使用 CSS Modules 時,推薦配合 CSS 預(yù)處理器(Sass/Less/Stylus)一起使用 CSS 預(yù)處理器提供了許多有用的功能,如嵌套、變量、mixins、functions 等,同時也讓定義本地名稱或全局名稱變得容易


          <template>  <p :class="$style.red">This should be red</p></template>
          <style module>.red { color: red;}</style>


          1.3 CSS-in-JS


          React 的出現(xiàn),打破了以前關(guān)注點分離的網(wǎng)頁開發(fā)原則,因其采用組件結(jié)構(gòu),而組件又強制要求將 HTML、CSS 和 JS 代碼寫在一起。表面上看是技術(shù)的倒退,實際上并不是


          React 是在 JS 中實現(xiàn)了對 HTML 和 CSS 的封裝,賦予了 HTML 和 CSS 全新的編程能力。對于 HTML,衍生了 JSX 這種 JS 的語法擴展,你可以將其理解為 HTML-in-JS;對于 CSS,衍生出一系列的第三方庫,用來加強在 JS 中操作 CSS 的能力,它們被稱為 CSS-in-JS


          隨著 React 的流行以及組件化開發(fā)模式的深入人心,這種關(guān)注點混合的新寫法逐漸成為主流


          注意此功能并不是 React 的一部分,而是由第三方庫提供。比如:Rstyled-components、emotion 等等。


          import React from 'react';
          import styled from 'styled-components';
          // 創(chuàng)建一個 <Title> 組件渲染為 <h1> 標(biāo)簽// 然后給 <h1> 標(biāo)簽加樣式const Title = styled.h1` font-size: 1.5em; text-align: center; color: palevioletred;`;
          // 創(chuàng)建一個 <Wrapper> 組件渲染為 <section> 標(biāo)簽// 然后給 <section> 標(biāo)簽加樣式const Wrapper = styled.section` padding: 4em; background: papayawhip;`;
          // 然后使用帶樣式的組件即可<Wrapper> <Title>Hello World, this is my first styled component!</Title></Wrapper>


          瀏覽 77
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天舔天天射 | 激情视频激情五月天 | 欧美国产一二三区小说 | www.黄色 | 亚洲一二三区电影在线 |