整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          MistCSS 火了!JS-from-CSS 才是前端未來(lái)?

          家好,很高興又見(jiàn)面了,我是"高級(jí)前端?進(jìn)階?",由我?guī)е蠹乙黄痍P(guān)注前端前沿、深入前端底層技術(shù),大家一起進(jìn)步,也歡迎大家關(guān)注、點(diǎn)贊、收藏、轉(zhuǎn)發(fā),您的支持是我不斷創(chuàng)作的動(dòng)力。

          什么是 MistCSS

          A new, better and faster way to write visual components. CSS-in-JS? Nope! JS-from-CSS

          MistCSS 是一種新的、更好、更快的編寫(xiě)可視化組件的方法,其拋棄了傳統(tǒng)的 CSS-in-JS 而采用 JS-from-CSS, 支持 Next.js、Remix 和 TailwindCSS 等等。

          MistCSS 的典型特征包括:

          • 普適性:支持 Next.js、TailwindCSS、Remix 等等
          • 注重風(fēng)格:不再需要使用 JS/TS 代碼進(jìn)行上下文切換,直接使用所有現(xiàn)代 CSS 功能。生成的代碼降低了團(tuán)隊(duì)成員之間出現(xiàn)錯(cuò)誤和實(shí)施不一致的風(fēng)險(xiǎn)。
          • 改進(jìn)的代碼庫(kù):自動(dòng)類型安全,支持可視化、無(wú)狀態(tài)組件和其他組件之間的清晰分離。自動(dòng)類型安全,無(wú)需手動(dòng)編寫(xiě) TypeScript 類型并確保傳遞的所有 props 均有效。
          • 完美 DX:無(wú)需向 VScode 添加擴(kuò)展,無(wú)需學(xué)習(xí)新的 API,零配置開(kāi)箱即用。
          • ? 運(yùn)行速度快:無(wú)性能成本、零運(yùn)行時(shí)間和本機(jī)瀏覽器支持

          與 CSS-in-JS 工具不同,MistCSS 不需要代碼編輯器擴(kuò)展,沒(méi)有 API 限制,也沒(méi)有學(xué)習(xí)曲線,可以完全訪問(wèn) CSS 的強(qiáng)大功能。

          MistCSS 允許編寫(xiě)更簡(jiǎn)潔的代碼,樣式的作用域類似于 CSS Module,并且視覺(jué)行為位于同一位置,類似于 CSS-in-JS。同時(shí),MistCSS 的運(yùn)行時(shí)為零,不會(huì)給項(xiàng)目增加任何開(kāi)銷。

          目前 MistCSS 在 Github 通過(guò) MIT 協(xié)議開(kāi)源,是一個(gè)值得關(guān)注的前端開(kāi)源項(xiàng)目。

          如何使用 MistCSS

          通過(guò)示例可以更好地理解 MistCSS,以下代碼創(chuàng)建一個(gè)接受兩個(gè) props 的經(jīng)典 Button 組件:

          • size: 'lg' | 'sm'
          • danger: boolean
          // src/Button.mist.css
          @scope (.button) {
            button:scope {
              /* Default style */
              font-size: 1rem;
              border-radius: 0.25rem;
              &[data-size='lg'] {
                font-size: 1.5rem;
              }
              &[data-size='sm'] {
                font-size: 0.75rem;
              }
              &[data-danger] {
                background-color: red;
                color: white;
              }
            }
          }

          注意:@scope 中的類在項(xiàng)目中必須是唯一的,后續(xù)會(huì)添加自動(dòng)檢查功能

          上面的 CSS 代碼是 標(biāo)準(zhǔn)且有效的, MistCSS 沒(méi)有引入任何專有語(yǔ)法。因此,代碼編輯器本身就支持。然后執(zhí)行下面的命令進(jìn)行編譯:

          npx mistcss ./src
          //  Button.mist.tsx will be created

          此時(shí)編譯器會(huì)自動(dòng)生成如下圖所示的代碼,和往常自己寫(xiě) Button 組件非常類似,但是思路卻完全反過(guò)來(lái),即通過(guò)寫(xiě)樣式文件來(lái)反向生成組件

          接著就可以像下面一樣導(dǎo)入 Button 組件:

          import {Button} from '.components/Button.mist'
          
          export default const App = () => (
            <main>
              {/* 像普通組件一樣使用 React component */}
              <Button size="lg">Submit</Button>
              <Button size="lg" danger>Delete</Button>
              <Button onClick={handleClick}>Cancel</Button>
              {/*  TypeScript will catch the wrong size here */}
              <Button size="foo">Oops</Button>
            </main>
          )

          通過(guò)上面的步驟,一個(gè)視覺(jué)和類型安全的 React 組件就完成了,無(wú)需任何額外 JS 代碼?。

          由于 MistCSS 使用純 CSS,因此開(kāi)發(fā)者不受限制可以直接使用所有 CSS 功能:

          • 容器查詢 @container 以根據(jù)組件大小調(diào)整樣式
          • CSS 變量,例如 --primary-color,具有一致的樣式
          • 媒體查詢 @media (prefers-color-scheme: dark),處理暗模式

          當(dāng)然,也可以在 MistCSS 組件中使用 TailwindCSS 實(shí)用程序類。

          參考資料

          https://github.com/typicode/mistcss

          https://typicode.github.io/mistcss/

          https://twitter.com/argyleink/status/1769741521270583393/photo/4

          2024年選擇適合項(xiàng)目的CSS框架至關(guān)重要。這將為構(gòu)建新的用戶界面(UI)組件所需的總體努力定下基調(diào)。目前,最重要的是更快地發(fā)布新功能,以保持客戶的滿意度。因此,你需要一個(gè)易于使用的CSS框架,它能夠提供現(xiàn)成的UI元素。

          下面,我們來(lái)看看2024年值得嘗試的最佳CSS框架。

          1、Bootstrap

          在今天的數(shù)字時(shí)代,網(wǎng)頁(yè)設(shè)計(jì)和開(kāi)發(fā)已經(jīng)成為創(chuàng)造令人印象深刻在線體驗(yàn)的關(guān)鍵。為了滿足這一需求,Bootstrap 應(yīng)運(yùn)而生,它是一款以移動(dòng)為先的 CSS 框架,不僅能幫助你構(gòu)建外觀優(yōu)雅的響應(yīng)式網(wǎng)頁(yè)界面,還大大簡(jiǎn)化了開(kāi)發(fā)過(guò)程。

          Bootstrap 的核心在于其強(qiáng)大的柵格系統(tǒng),這一系統(tǒng)使得開(kāi)發(fā)者可以為各種屏幕尺寸創(chuàng)建靈活的布局。更重要的是,Bootstrap 提供了大量現(xiàn)成的組件,比如導(dǎo)航欄、卡片和模態(tài)框,這些都讓開(kāi)發(fā)變得更加迅速和高效。

          Bootstrap 的獨(dú)特之處

          • 響應(yīng)式柵格系統(tǒng):這是 Bootstrap 的核心特性之一,允許網(wǎng)頁(yè)內(nèi)容根據(jù)不同的屏幕尺寸自動(dòng)調(diào)整布局,從而在手機(jī)、平板和桌面上都能提供良好的用戶體驗(yàn)。
          • 豐富的預(yù)制組件:Bootstrap 提供了大量的預(yù)制組件,如導(dǎo)航欄、卡片、模態(tài)框等,使得開(kāi)發(fā)者可以輕松實(shí)現(xiàn)復(fù)雜的UI設(shè)計(jì)。
          • 快速樣式調(diào)整的實(shí)用類:通過(guò)實(shí)用類,Bootstrap 使得頁(yè)面的樣式調(diào)整變得快速簡(jiǎn)單,無(wú)需編寫(xiě)大量的自定義CSS。
          • 增強(qiáng)功能的JavaScript插件:Bootstrap 還提供了一系列JavaScript插件,進(jìn)一步擴(kuò)展了網(wǎng)頁(yè)的交互性和動(dòng)態(tài)效果。
          • 活躍的社區(qū)和豐富的文檔:Bootstrap 擁有一個(gè)活躍的開(kāi)發(fā)者社區(qū)和詳盡的文檔,為使用者提供了強(qiáng)大的支持。

          如何將 Bootstrap 與現(xiàn)代框架結(jié)合使用

          如果你在使用 React 開(kāi)發(fā)項(xiàng)目,可以輕松地將 React Bootstrap 庫(kù)安裝到你的項(xiàng)目中,通過(guò)這種方式,你可以在保持 React 的組件化開(kāi)發(fā)模式的同時(shí),享受 Bootstrap 提供的樣式和組件優(yōu)勢(shì)。

          import ButtonGroup from 'react-bootstrap/ButtonGroup';
          import Dropdown from 'react-bootstrap/Dropdown';
          import DropdownButton from 'react-bootstrap/DropdownButton';
          import './bootstrap.css';
          
          export function Bootstrap() {
            return (
              <div className="button">
                {['Primary', 'success', 'danger'].map((variant) => (
                  <DropdownButton
                    as={ButtonGroup}
                    key={variant}
                    id={dropdown-variants-${variant}}
                    variant={variant.toLowerCase()}
                    title={variant}
                    <Dropdown.Item eventKey="1">Action</Dropdown.Item>
                    <Dropdown.Item eventKey="2">Another action</Dropdown.Item>
                    <Dropdown.Item eventKey="3" active>
                      Active Item
                    </Dropdown.Item>
                    <Dropdown.Divider />
                    <Dropdown.Item eventKey="4">Separated link</Dropdown.Item>
                  </DropdownButton>
                ))}
                <br />
                <Dropdown>
                  <Dropdown.Toggle variant="success" id="dropdown-basic">
                    Dropdown Button
                  </Dropdown.Toggle>
                  <Dropdown.Menu>
                    <Dropdown.Item href="#/action-1">Action</Dropdown.Item>
                    <Dropdown.Item href="#/action-2">Another action</Dropdown.Item>
                    <Dropdown.Item href="#/action-3">Something else</Dropdown.Item>
                  </Dropdown.Menu>
                </Dropdown>
              </div>
            );
          }

          2、Tailwind CSS

          Tailwind CSS 以其獨(dú)樹(shù)一幟的“工具優(yōu)先”設(shè)計(jì)理念,在前端開(kāi)發(fā)社區(qū)中引起了廣泛關(guān)注。它與傳統(tǒng)的 CSS 框架不同,不提供預(yù)設(shè)樣式的組件,而是通過(guò)提供大量的低級(jí)實(shí)用類(utility classes),讓開(kāi)發(fā)者能夠構(gòu)建出完全定制的設(shè)計(jì)。這種方法提供了前所未有的靈活性和可擴(kuò)展性,使得開(kāi)發(fā)者可以精準(zhǔn)控制網(wǎng)頁(yè)的每一個(gè)細(xì)節(jié)。

          Tailwind CSS 的獨(dú)特特點(diǎn)

          • 工具優(yōu)先的設(shè)計(jì)方式:Tailwind 的核心思想是通過(guò)實(shí)用類直接在 HTML 中應(yīng)用樣式,極大地提高了開(kāi)發(fā)效率和靈活性。
          • 高度可定制:通過(guò)配置文件,開(kāi)發(fā)者可以自定義 Tailwind 的主題、顏色、間距等,以適應(yīng)項(xiàng)目的具體需求。
          • 沒(méi)有預(yù)構(gòu)建的組件:與其它框架不同,Tailwind 不提供預(yù)構(gòu)建的組件。這意味著所有的樣式都是由開(kāi)發(fā)者從頭開(kāi)始構(gòu)建的,確保了設(shè)計(jì)的獨(dú)特性。
          • 響應(yīng)式設(shè)計(jì):Tailwind 提供了響應(yīng)式設(shè)計(jì)的支持,通過(guò)斷點(diǎn)(breakpoints)可以輕松實(shí)現(xiàn)不同屏幕尺寸下的樣式適配。
          • 與 PurgeCSS 的集成:通過(guò)集成 PurgeCSS,Tailwind 能夠在生產(chǎn)環(huán)境下自動(dòng)移除未使用的 CSS,優(yōu)化項(xiàng)目的加載速度。
          • JIT(即時(shí)編譯)模式:Tailwind 的 JIT 模式使得開(kāi)發(fā)過(guò)程中的樣式更改能夠即時(shí)反映,進(jìn)一步提升開(kāi)發(fā)效率。

          如何集成 Tailwind CSS

          集成 Tailwind CSS 到項(xiàng)目中并非一蹴而就,首先需要設(shè)置 Tailwind 編譯器。通過(guò)在項(xiàng)目的配置文件中指定要處理的內(nèi)容和自定義主題,然后通過(guò)插件來(lái)擴(kuò)展功能,你可以開(kāi)始使用 Tailwind 提供的實(shí)用類來(lái)編寫(xiě) CSS。

          /** @type {import('tailwindcss').Config} */
          module.exports = {
            content: ["./src/**/*.{html,js}"],
            theme: {
              extend: {},
            },
            plugins: [],
          }

          以下是相關(guān)的使用示例

          export function Tailwind() {
            const ContactTextArea = ({
              row,
              placeholder,
              name,
              defaultValue,
            }: {
              row: number;
              placeholder: string;
              name: string;
              defaultValue: string;
            }) => {
              return (
                <>
                  <div className="mb-6">
                    <textarea
                      rows={row}
                      placeholder={placeholder}
                      name={name}
                      className="w-full resize-none rounded border border-stroke px-[14px] py-3 text-base text-body-color outline-none focus:border-primary dark:border-dark-3 dark:bg-dark dark:text-dark-6"
                      defaultValue={defaultValue}
                    />
                  </div>
                </>
              );
            };
          
          const ContactInputBox = ({
              type,
              placeholder,
              name,
            }: {
              type: string;
              placeholder: string;
              name: string;
            }) => {
              return (
                <>
                  <div className="mb-6">
                    <input
                      type={type}
                      placeholder={placeholder}
                      name={name}
                      className="w-full rounded border border-stroke px-[14px] py-3 text-base text-body-color outline-none focus:border-primary dark:border-dark-3 dark:bg-dark dark:text-dark-6"
                    />
                  </div>
                </>
              );
            };
            return (
              <section className="relative z-10 overflow-hidden bg-white py-20 dark:bg-dark lg:py-[120px]">
                <div className="w-full px-4 lg:w-1/2 xl:w-5/12">
                  <div className="relative rounded-lg bg-white p-8 shadow-lg dark:bg-dark-2 sm:p-12">
                    <form>
                      <ContactInputBox type="text" name="name" placeholder="Your Name" />
                      <ContactInputBox
                        type="text"
                        name="email"
                        placeholder="Your Email"
                      />
                      <ContactInputBox
                        type="text"
                        name="phone"
                        placeholder="Your Phone"
                      />
                      <ContactTextArea
                        row={6}
                        placeholder="Your Message"
                        name="details"
                        defaultValue=""
                      />
                      <div>
                        <button
                          type="submit"
                          className="w-full rounded border border-primary bg-primary p-3 text-white transition hover:bg-opacity-90"
                          Send Message
                        </button>
                      </div>
                    </form>
                    <div />
                  </div>
                </div>
              </section>
            );
          }

          3、Foundation

          Foundation 是一款開(kāi)源的、響應(yīng)式的前端框架,它極大地簡(jiǎn)化了創(chuàng)建在任何設(shè)備上都能完美運(yùn)行的響應(yīng)式網(wǎng)站、應(yīng)用程序和電子郵件的過(guò)程。由于其出色的靈活性和易用性,F(xiàn)oundation 已被包括 Facebook、eBay、Mozilla、Adobe 乃至 Disney 在內(nèi)的許多公司采用于他們的項(xiàng)目中。

          Foundation 提供了一個(gè)強(qiáng)大而靈活的響應(yīng)式柵格系統(tǒng),并且包括了許多方便的選項(xiàng)、模態(tài)框(modals)、排版(typography)、導(dǎo)航組件以及表單元素,設(shè)計(jì)師可以快速將這些元素集成到他們的產(chǎn)品中。此外,F(xiàn)oundation 的模塊化架構(gòu)意味著你可以根據(jù)需要,使用它的部分或全部功能。

          Foundation 的獨(dú)特特性

          • 靈活的響應(yīng)式柵格系統(tǒng):Foundation 的柵格系統(tǒng)提供了豐富的布局選項(xiàng),使得創(chuàng)建響應(yīng)式設(shè)計(jì)變得簡(jiǎn)單高效。
          • 模塊化架構(gòu):這允許開(kāi)發(fā)者自定義所需的功能,確保了框架的靈活性和擴(kuò)展性。
          • Sass 預(yù)處理器:Foundation 使用 Sass 預(yù)處理器進(jìn)行樣式的編寫(xiě),進(jìn)一步增強(qiáng)了樣式定義的靈活性和可維護(hù)性。
          • 內(nèi)建組件和響應(yīng)式導(dǎo)航:框架提供了一系列預(yù)建的組件和響應(yīng)式導(dǎo)航,加速了開(kāi)發(fā)流程并提高了用戶體驗(yàn)。
          • Flexbox 和塊級(jí)網(wǎng)格支持:這些現(xiàn)代布局技術(shù)的支持使得創(chuàng)建復(fù)雜的布局結(jié)構(gòu)變得更為簡(jiǎn)單。
          • 可訪問(wèn)性特性:Foundation 在設(shè)計(jì)時(shí)考慮了可訪問(wèn)性,幫助開(kāi)發(fā)者創(chuàng)建符合 WCAG 標(biāo)準(zhǔn)的網(wǎng)站。

          如何在項(xiàng)目中集成 Foundation

          通過(guò)如下示例代碼,可以看到如何在 React 項(xiàng)目中使用 Foundation:

          import { Menu, MenuItem } from 'react-foundation';
          
          export function Foundation() {
            return (
             <Menu style={{ marginLeft: '34px' }}>
               <MenuItem>
                 <a href="/">Home</a>
               </MenuItem>
               <MenuItem>
                 <a href="/">Blog</a>
               </MenuItem>
               <MenuItem>
                 <a href="/">About</a>
               </MenuItem>
               <MenuItem>
                <a href="/">Contact</a>
               </MenuItem>
             </Menu>
            );
          }
          

          這個(gè)例子展示了如何使用 Foundation 的 Menu 和 MenuItem 組件來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的導(dǎo)航菜單。這種集成方式使得在保持 React 組件化開(kāi)發(fā)模式的同時(shí),還能享受 Foundation 提供的樣式和組件優(yōu)勢(shì)。

          4. Bulma

          Bulma 是一個(gè)輕量級(jí)的 CSS 框架,以其簡(jiǎn)單性、響應(yīng)性和定制選項(xiàng)著稱。它與其他 UI 框架的不同之處在于,Bulma 是基于 Flexbox 構(gòu)建的,F(xiàn)lexbox 是一種 CSS 布局模型,能夠根據(jù)容器的寬度調(diào)整頁(yè)面元素的寬度,這使得創(chuàng)建網(wǎng)格等任務(wù)變得非常簡(jiǎn)單,并且是框架輕量化的原因之一。

          Bulma 的主要特點(diǎn)

          • 基于 Flexbox 的現(xiàn)代 CSS 框架:利用 Flexbox,Bulma 為開(kāi)發(fā)者提供了一種更靈活、簡(jiǎn)潔的方式來(lái)創(chuàng)建布局,無(wú)需復(fù)雜的布局計(jì)算。
          • 易用且直觀的語(yǔ)法:Bulma 的類名清晰直觀,使得即使是 CSS 新手也能快速上手。
          • 無(wú) JavaScript 依賴:Bulma 完全由 CSS 構(gòu)成,這意味著你可以在不添加任何 JavaScript 的情況下使用它,減少了前端項(xiàng)目的復(fù)雜度。
          • 內(nèi)建的響應(yīng)式設(shè)計(jì)修飾符:Bulma 提供了一系列修飾符用于創(chuàng)建響應(yīng)式設(shè)計(jì),使得適應(yīng)不同屏幕尺寸的布局變得簡(jiǎn)單。
          • 組件化:如導(dǎo)航欄、模態(tài)框、標(biāo)簽頁(yè)等,Bulma 提供了豐富的組件庫(kù),方便開(kāi)發(fā)者快速實(shí)現(xiàn)常見(jiàn)的 UI 功能。
          • 通過(guò) Sass 可擴(kuò)展:Bulma 允許通過(guò) Sass 進(jìn)行定制,開(kāi)發(fā)者可以根據(jù)項(xiàng)目需求調(diào)整顏色、間距等參數(shù)。

          如何在項(xiàng)目中集成 Bulma

          將 Bulma 集成到項(xiàng)目中相當(dāng)簡(jiǎn)單,只需導(dǎo)入 Bulma 的 CSS 文件即可開(kāi)始使用它提供的各種樣式和組件。以下是一個(gè)使用 Bulma 創(chuàng)建分頁(yè)導(dǎo)航的示例:

          import 'bulma/css/bulma.min.css';
          
          export function Bulma() {
            return (
              <div>
                <nav className="pagination" role="navigation" aria-label="pagination">
                  <a href="/" className="pagination-previous">
                    Previous
                  </a>
                  <a href="/" className="pagination-next">
                    Next Page
                  </a>
                  <ul className="pagination-list">
                    <li>
                      <a href="/" className="pagination-link" aria-label="Goto page 1">
                        1
                      </a>
                    </li>
                    <li>
                      <span className="pagination-ellipsis">…</span>
                    </li>
                    <li>
                      <a href="/" className="pagination-link" aria-label="Goto page 45">
                        45
                      </a>
                    </li>
                    <li>
                      <a
                        href="/"
                        className="pagination-link is-current"
                        aria-label="Page 46"
                        aria-current="page"
                        46
                      </a>
                    </li>
                    <li>
                      <a href="/" className="pagination-link" aria-label="Goto page 47">
                        47
                      </a>
                    </li>
                    <li>
                      <span className="pagination-ellipsis">…</span>
                    </li>
                    <li>
                      <a href="/" className="pagination-link" aria-label="Goto page 86">
                        86
                      </a>
                    </li>
                  </ul>
                </nav>
              </div>
            );
          }
          

          這個(gè)例子展示了如何利用 Bulma 的分頁(yè)組件來(lái)創(chuàng)建一個(gè)簡(jiǎn)潔美觀的分頁(yè)導(dǎo)航。通過(guò)使用 Bulma,開(kāi)發(fā)者可以節(jié)省大量的時(shí)間來(lái)設(shè)計(jì)和編寫(xiě) CSS,專注于實(shí)現(xiàn)更好的用戶體驗(yàn)和界面設(shè)計(jì)。

          5. UIKit

          UIKit 是一個(gè)開(kāi)源的框架,專門用于構(gòu)建 Web 應(yīng)用程序的用戶界面。它與其他 UI 框架在結(jié)構(gòu)和設(shè)計(jì)哲學(xué)上有所不同。不同于其他遵循傳統(tǒng) BEM 方法論的框架,UIKit 采用了基于組件的結(jié)構(gòu)。這種方式為組件的靈活性和可重用性提供了更大的空間,可以顯著減少構(gòu)建復(fù)雜用戶界面所需的代碼量。

          UIKit 的主要特性

          • 模塊化和輕量級(jí)框架:UIKit 的設(shè)計(jì)注重于提供一個(gè)輕量級(jí)的解決方案,便于快速開(kāi)發(fā)和部署。
          • 響應(yīng)式柵格系統(tǒng):UIKit 提供了一個(gè)靈活的柵格系統(tǒng),使得在不同設(shè)備上的布局變得簡(jiǎn)單和一致。
          • 預(yù)設(shè)計(jì)的組件:UIKit 包含了大量預(yù)設(shè)計(jì)的組件,如導(dǎo)航欄、滑塊、模態(tài)框等,簡(jiǎn)化了開(kāi)發(fā)流程。
          • 基于 Flexbox 的布局:UIKit 利用 Flexbox 布局,提供了一種更靈活的方式來(lái)創(chuàng)建復(fù)雜的布局結(jié)構(gòu)。
          • 動(dòng)畫(huà)和過(guò)渡效果:UIKit 包含了豐富的動(dòng)畫(huà)和過(guò)渡效果,可以輕松地為界面添加視覺(jué)吸引力。
          • 可定制和可主題化:UIKit 提供了廣泛的定制選項(xiàng),使得開(kāi)發(fā)者可以根據(jù)自己的需求調(diào)整樣式和功能。

          如何在項(xiàng)目中集成 UIKit

          將 UIKit 集成到項(xiàng)目中非常直接,僅需導(dǎo)入 UIKit 的 CSS 文件即可開(kāi)始使用其提供的樣式和組件。以下是一個(gè)使用 UIKit 創(chuàng)建按鈕的示例:

          import 'uikit/dist/css/uikit.min.css';
          
          export function Uikit() {
            return (
              <div className="uk-flex uk-flex-center uk-margin-top">
                <button
                  type="button"
                  className="uk-button uk-button-default uk-margin-left"
                  onClick={() => alert('Cancel clicked!')}
                >
                  Cancel
                </button>
              </div>
            );
          }
          

          這個(gè)例子演示了如何利用 UIKit 的按鈕(Button)組件來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的按鈕,并使用 Flexbox 實(shí)現(xiàn)居中布局。通過(guò) UIKit,開(kāi)發(fā)者可以享受到高度靈活和易用的界面構(gòu)建體驗(yàn),同時(shí)也能保持代碼的整潔和模塊化。

          總結(jié)

          選擇合適的 CSS 框架對(duì)于項(xiàng)目的成功至關(guān)重要。每個(gè)框架都有其獨(dú)特的特點(diǎn)、優(yōu)勢(shì)和可能的限制,因此了解如何根據(jù)項(xiàng)目的具體需求挑選合適的框架是一項(xiàng)重要的技能。除了我們討論的 Bootstrap、Tailwind CSS、Foundation、Bulma 和 UIKit 外,市面上還有許多其他的 CSS 框架,每個(gè)都有可能成為你項(xiàng)目的理想選擇。

          創(chuàng)建概念驗(yàn)證

          創(chuàng)建概念驗(yàn)證(Proof-of-Concept,PoC)是評(píng)估 CSS 框架是否適合你項(xiàng)目的一個(gè)極好方法。通過(guò)這種方式,你可以實(shí)際操作并體驗(yàn)每個(gè)框架的學(xué)習(xí)曲線、靈活性、易用性以及它們?nèi)绾芜m應(yīng)你的項(xiàng)目需求。以下是一些建議,幫助你通過(guò)創(chuàng)建概念驗(yàn)證來(lái)選擇正確的 CSS 框架:

          • 明確項(xiàng)目需求:在開(kāi)始之前,清晰地定義你的項(xiàng)目需求,包括預(yù)期的功能、設(shè)計(jì)美學(xué)、響應(yīng)式設(shè)計(jì)的要求等。
          • 研究框架的特性:深入了解每個(gè)框架的核心特性、設(shè)計(jì)理念和社區(qū)支持情況。
          • 評(píng)估學(xué)習(xí)曲線:嘗試了解開(kāi)始使用框架并達(dá)到一定熟練度所需的時(shí)間和努力,確保團(tuán)隊(duì)能夠快速上手。
          • 考慮擴(kuò)展性和維護(hù)性:選擇那些提供良好文檔、定期更新和社區(qū)支持的框架,以確保項(xiàng)目的長(zhǎng)期可維護(hù)性。
          • 實(shí)踐中測(cè)試:為每個(gè)框架創(chuàng)建小型的概念驗(yàn)證項(xiàng)目,實(shí)際操作它們來(lái)構(gòu)建一些簡(jiǎn)單的布局或組件。這將幫助你直觀地感受到使用框架的便利性和可能的挑戰(zhàn)。
          • 性能考量:測(cè)試每個(gè)框架生成的 CSS 的大小和加載時(shí)間,確保它們不會(huì)對(duì)最終用戶的體驗(yàn)產(chǎn)生負(fù)面影響。
          • 社區(qū)和資源:考慮框架的社區(qū)活躍度和可用資源。一個(gè)活躍的社區(qū)和豐富的學(xué)習(xí)資源可以在你遇到問(wèn)題時(shí)提供幫助。

          通過(guò)這種綜合評(píng)估方法,你可以更全面地理解每個(gè)框架如何適應(yīng)你的項(xiàng)目需求,從而做出明智的選擇。記住,最適合項(xiàng)目的框架不一定是最流行或最新的,而是最能滿足你項(xiàng)目特定需求的那一個(gè)。分享你的概念驗(yàn)證經(jīng)驗(yàn)和框架選擇理由,不僅能幫助團(tuán)隊(duì)成員理解決策過(guò)程,也能為面臨相似選擇的其他開(kāi)發(fā)者提供參考。

          這里是云端源想IT,幫你輕松學(xué)IT”

          嗨~ 今天的你過(guò)得還好嗎?

          誰(shuí)見(jiàn)過(guò)風(fēng)呢

          勿論你和我

          但當(dāng)樹(shù)木俯首

          風(fēng)正經(jīng)過(guò)

          - 2024.03.05 -

          在這個(gè)數(shù)字化的時(shí)代,我們每天都在與網(wǎng)頁(yè)打交道。你是否曾經(jīng)好奇過(guò),這些充滿魔力的網(wǎng)頁(yè)是如何誕生的呢?今天,我們就來(lái)揭開(kāi)構(gòu)成這些網(wǎng)頁(yè)的神秘面紗——HTML(超文本標(biāo)記語(yǔ)言)。



          一、什么是HTML

          網(wǎng)頁(yè)的基本組成

          網(wǎng)頁(yè)是構(gòu)成網(wǎng)站的基本元素,通常由圖片、鏈接、文字、聲音、視頻等元素組成,通常我們看見(jiàn)的網(wǎng)頁(yè)都是.htm和.html后綴結(jié)尾的文件,因?yàn)槎挤Q為HTML文件。


          什么是HTML

          HTML 英文全稱是 Hyper Text Markup Language,中文譯為“超文本標(biāo)記語(yǔ)言”,專門用來(lái)設(shè)計(jì)和編輯網(wǎng)頁(yè)。

          使用 HTML 編寫(xiě)的文件稱為“HTML 文檔”,一般后綴為.html(也可以使用.htm,不過(guò)比較少見(jiàn))。HTML 文檔是一種純文本文件,您可以使用 Windows 記事本、Linux Vim、Notepad++、Sublime Text、VS Code 等文本編輯來(lái)打開(kāi)或者創(chuàng)建。


          每個(gè)網(wǎng)頁(yè)都是一個(gè) HTML 文檔,使用瀏覽器訪問(wèn)一個(gè)鏈接(URL),實(shí)際上就是下載、解析和顯示 HTML 文檔的過(guò)程。將眾多 HTML 文檔放在一個(gè)文件夾中,然后提供對(duì)外訪問(wèn)權(quán)限,就構(gòu)成了一個(gè)網(wǎng)站。


          二、HTML的歷史

          HTML的故事始于1989年,當(dāng)時(shí)蒂姆·伯納斯-李在歐洲核子研究中心(CERN)提出了一個(gè)名為“萬(wàn)維網(wǎng)”的概念。


          為了實(shí)現(xiàn)這一概念,他發(fā)明了HTML,并隨后與羅伯特·卡里奧一起發(fā)明了HTTP協(xié)議。從那時(shí)起,HTML就成為了互聯(lián)網(wǎng)不可或缺的一部分。

          上圖簡(jiǎn)單羅列了HTML的發(fā)展歷史,大家可以簡(jiǎn)單了解一下。


          三、HTML相關(guān)概念

          什么是標(biāo)簽

          HTML 標(biāo)記通常被稱為 HTML 標(biāo)簽 (HTML tag)。 HTML 標(biāo)簽是由尖括號(hào)包圍的關(guān)鍵詞,比如<html/>。

          • 封閉類型標(biāo)記(也叫雙標(biāo)記),必須成對(duì)出現(xiàn),如<p></p> 。
          • 標(biāo)簽對(duì)中的第一個(gè)標(biāo)簽是開(kāi)始標(biāo)簽,第二個(gè)標(biāo)簽是結(jié)束標(biāo)簽,開(kāi)始和結(jié)束標(biāo)簽也被稱為開(kāi)放標(biāo)簽和閉合標(biāo)簽 。
          • 非封閉類型標(biāo)記,也叫作空標(biāo)記,或者單標(biāo)記,如<br/>
          <標(biāo)簽>內(nèi)容<標(biāo)簽/>



          什么是元素

          "HTML 標(biāo)簽" 和 "HTML 元素" 通常都是描述同樣的意思。但是嚴(yán)格來(lái)講,一個(gè)HTML 元素包含了開(kāi)始標(biāo)簽與結(jié)束標(biāo)簽,如下實(shí)例。


          HTML 元素:

          <p>這是一個(gè)段落</p>


          web瀏覽器

          Web 瀏覽器(如谷歌瀏覽器,Internet Explorer,F(xiàn)irefox,Safari)是用于讀取 HTML 文件,并將其作為網(wǎng)頁(yè)顯示。 瀏覽器并不是直接顯示的 HTML 標(biāo)簽,但可以使用標(biāo)簽來(lái)決定如何展現(xiàn) HTML頁(yè)面的內(nèi)容給用戶:


          HTML 屬性

          屬性是用來(lái)修飾元素的,屬性必須位于開(kāi)始標(biāo)簽里,一個(gè)元素的屬性可能不止一個(gè),多個(gè)屬性之間用空格隔開(kāi),多個(gè)屬性之間不區(qū)分先后順序。

          每個(gè)屬性都有值,屬性和屬性的值之間用等號(hào)鏈接,屬性的值包含在引號(hào)當(dāng)中,屬性總是以名稱/值對(duì)的形式出現(xiàn)。


          四、HTML的基本結(jié)構(gòu)

          一個(gè)典型的HTML文檔由以下幾個(gè)基本元素構(gòu)成:

          • <!DOCTYPE html>

          這是文檔類型聲明,告訴瀏覽器這個(gè)文檔使用的是HTML5標(biāo)準(zhǔn)。

          • <html>

          這是整個(gè)HTML文檔的根元素,其他所有元素都包含在這個(gè)標(biāo)簽內(nèi)。

          • <head>

          這個(gè)部分包含了所有關(guān)于網(wǎng)頁(yè)的元信息,如標(biāo)題、字符集聲明、引入的CSS樣式表和JavaScript文件等。

          • <title>

          這個(gè)標(biāo)簽定義了網(wǎng)頁(yè)的標(biāo)題,它顯示在瀏覽器的標(biāo)題欄或標(biāo)簽頁(yè)上。

          • <body>

          這個(gè)部分包含了網(wǎng)頁(yè)的所有內(nèi)容,如文本、圖片、鏈接、表格、列表等。


          HTML的結(jié)構(gòu)示例

          讓我們通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)具體了解HTML的結(jié)構(gòu):

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title>我的第一個(gè)HTML頁(yè)面</title>
          </head>
          <body>
          <h1>歡迎來(lái)到我的網(wǎng)頁(yè)!</h1>
          <p>這是一個(gè)簡(jiǎn)單的段落。</p>
          <a href="https://www.example.com">點(diǎn)擊這里訪問(wèn)示例網(wǎng)站</a>
          </body>
          </html>


          在這個(gè)例子中,我們可以看到一個(gè)完整的HTML文檔結(jié)構(gòu),從<!DOCTYPE html>開(kāi)始,到最后一個(gè)</html>結(jié)束。



          想象一下,如果HTML是一棵樹(shù),那么<html>就是樹(shù)干,<head>和<body>就像是樹(shù)的兩個(gè)主要分支。<head>中的標(biāo)簽好比是樹(shù)葉,它們雖然不起眼,但卻至關(guān)重要,為樹(shù)木提供營(yíng)養(yǎng)。而<body>中的標(biāo)簽則像是樹(shù)枝和果實(shí),它們構(gòu)成了樹(shù)的主體,吸引人們的目光。

          想要快速入門HTML嗎?推薦一個(gè)前端開(kāi)發(fā)基礎(chǔ)課程,這個(gè)老師講的特別好,零基礎(chǔ)學(xué)習(xí)無(wú)壓力,知識(shí)點(diǎn)結(jié)合代碼,邊學(xué)邊練,可以免費(fèi)試看試學(xué),還有各種輔助工具和資料,非常適合新手!搜索【云端源想】前往學(xué)習(xí)哦!

          五、HTML的特點(diǎn)

          HTML的特點(diǎn)主要包括簡(jiǎn)易性、可擴(kuò)展性、平臺(tái)無(wú)關(guān)性和通用性等。具體如下:

          1、簡(jiǎn)易性:

          HTML是一種相對(duì)容易學(xué)習(xí)和使用的語(yǔ)言,它的版本升級(jí)通常采用超集方式,使得新版本能夠兼容舊版本的標(biāo)簽和功能,這樣既保持了向后兼容性,又能夠靈活方便地引入新的功能。

          2、可擴(kuò)展性:

          隨著互聯(lián)網(wǎng)的發(fā)展,HTML也在不斷增加新的元素和屬性來(lái)滿足新的需求,如支持多媒體內(nèi)容的嵌入、更豐富的表單控件等。這種設(shè)計(jì)使得HTML能夠適應(yīng)不斷變化的網(wǎng)絡(luò)環(huán)境。

          3、平臺(tái)無(wú)關(guān)性:

          HTML編寫(xiě)的網(wǎng)頁(yè)可以在不同的操作系統(tǒng)和瀏覽器上顯示,這是因?yàn)镠TML是一種與平臺(tái)無(wú)關(guān)的語(yǔ)言。這意味著無(wú)論用戶使用什么設(shè)備或?yàn)g覽器,都能夠訪問(wèn)和瀏覽HTML頁(yè)面。

          4、通用性:

          HTML是網(wǎng)絡(luò)的通用語(yǔ)言,它是一種簡(jiǎn)單的標(biāo)記語(yǔ)言,用于創(chuàng)建和結(jié)構(gòu)化網(wǎng)頁(yè)內(nèi)容。由于其廣泛的支持和普及,幾乎所有的設(shè)備和瀏覽器都能夠解析和顯示HTML內(nèi)容。

          5、支持多種媒體格式:

          HTML不僅支持文本內(nèi)容,還能夠嵌入圖片、音頻、視頻等多種媒體格式,這使得網(wǎng)頁(yè)可以提供豐富的用戶體驗(yàn)。

          6、標(biāo)準(zhǔn)化:

          HTML遵循萬(wàn)維網(wǎng)聯(lián)盟(W3C)制定的國(guó)際標(biāo)準(zhǔn),這意味著網(wǎng)頁(yè)開(kāi)發(fā)者可以根據(jù)這些標(biāo)準(zhǔn)來(lái)創(chuàng)建網(wǎng)頁(yè),確保網(wǎng)頁(yè)的互操作性和可訪問(wèn)性。

          7、標(biāo)簽豐富:

          HTML提供了一系列的標(biāo)簽,如標(biāo)題、列表、鏈接、表格等,這些標(biāo)簽使得開(kāi)發(fā)者能夠創(chuàng)建出結(jié)構(gòu)清晰、功能豐富的網(wǎng)頁(yè)。


          綜上所述,HTML作為一種基礎(chǔ)的網(wǎng)頁(yè)開(kāi)發(fā)語(yǔ)言,因其易學(xué)易用、跨平臺(tái)、多功能和高度標(biāo)準(zhǔn)化的特點(diǎn),成為了構(gòu)建現(xiàn)代網(wǎng)絡(luò)內(nèi)容的核心工具。


          HTML作為連接世界的紐帶,其重要性不言而喻。它是數(shù)字世界的基石,也是每個(gè)想要進(jìn)入互聯(lián)網(wǎng)領(lǐng)域的人必須掌握的技能。無(wú)論你是夢(mèng)想成為前端開(kāi)發(fā)者,還是僅僅想要更好地理解這個(gè)由代碼構(gòu)成的世界,學(xué)習(xí)HTML都是一個(gè)不錯(cuò)的開(kāi)始。


          今天就先講到這里了,

          更多前端開(kāi)發(fā)基礎(chǔ)知識(shí)點(diǎn)擊文末閱讀原文查看哦!

          記得關(guān)注【云端源想IT】一起學(xué)編程!


          我們下期再見(jiàn)!


          END


          文案編輯|云端學(xué)長(zhǎng)

          文案配圖|云端學(xué)長(zhǎng)

          內(nèi)容由:云端源想分享


          主站蜘蛛池模板: 精品在线一区二区三区| 国产91大片精品一区在线观看| 亚洲AV午夜福利精品一区二区 | 国产伦一区二区三区高清| 国产精品福利一区二区久久| 99偷拍视频精品一区二区| 黑人一区二区三区中文字幕| 亚洲AV无码一区二区二三区软件| 一区二区无码免费视频网站| 清纯唯美经典一区二区| 国产福利91精品一区二区三区| 久久久久人妻一区精品| 亚洲.国产.欧美一区二区三区 | 亚洲视频在线一区二区| 3d动漫精品啪啪一区二区中| 波多野结衣在线观看一区| 亚洲AV无码一区二区三区人| 日本一区二区三区中文字幕| 亚洲精品精华液一区二区| 国产伦一区二区三区高清| 伊人久久一区二区三区无码| 国产乱码精品一区二区三区 | 精品视频在线观看你懂的一区| 国产伦一区二区三区高清| 亚洲丰满熟女一区二区哦| 久久国产精品免费一区| 色偷偷久久一区二区三区| 无码精品国产一区二区三区免费| 亲子乱av一区区三区40岁| 国产aⅴ精品一区二区三区久久| 中文字幕精品一区| 91福利国产在线观一区二区| 亚洲一区在线观看视频| 中文字幕精品一区影音先锋| 亚洲另类无码一区二区三区| 亚洲一区二区高清| 熟妇人妻AV无码一区二区三区| 亚洲熟妇AV一区二区三区浪潮 | 一区二区三区观看| 久久毛片免费看一区二区三区| 亚洲一区二区三区免费在线观看|