Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
家好,很高興又見面了,我是"高級前端?進階?",由我帶著大家一起關注前端前沿、深入前端底層技術,大家一起進步,也歡迎大家關注、點贊、收藏、轉發,您的支持是我不斷創作的動力。
A new, better and faster way to write visual components. CSS-in-JS? Nope! JS-from-CSS
MistCSS 是一種新的、更好、更快的編寫可視化組件的方法,其拋棄了傳統的 CSS-in-JS 而采用 JS-from-CSS, 支持 Next.js、Remix 和 TailwindCSS 等等。
MistCSS 的典型特征包括:
與 CSS-in-JS 工具不同,MistCSS 不需要代碼編輯器擴展,沒有 API 限制,也沒有學習曲線,可以完全訪問 CSS 的強大功能。
MistCSS 允許編寫更簡潔的代碼,樣式的作用域類似于 CSS Module,并且視覺行為位于同一位置,類似于 CSS-in-JS。同時,MistCSS 的運行時為零,不會給項目增加任何開銷。
目前 MistCSS 在 Github 通過 MIT 協議開源,是一個值得關注的前端開源項目。
通過示例可以更好地理解 MistCSS,以下代碼創建一個接受兩個 props 的經典 Button 組件:
// 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 中的類在項目中必須是唯一的,后續會添加自動檢查功能
上面的 CSS 代碼是 標準且有效的, MistCSS 沒有引入任何專有語法。因此,代碼編輯器本身就支持。然后執行下面的命令進行編譯:
npx mistcss ./src
// Button.mist.tsx will be created
此時編譯器會自動生成如下圖所示的代碼,和往常自己寫 Button 組件非常類似,但是思路卻完全反過來,即通過寫樣式文件來反向生成組件!
接著就可以像下面一樣導入 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>
)
通過上面的步驟,一個視覺和類型安全的 React 組件就完成了,無需任何額外 JS 代碼?。
由于 MistCSS 使用純 CSS,因此開發者不受限制可以直接使用所有 CSS 功能:
當然,也可以在 MistCSS 組件中使用 TailwindCSS 實用程序類。
https://github.com/typicode/mistcss
https://typicode.github.io/mistcss/
https://twitter.com/argyleink/status/1769741521270583393/photo/4
2024年選擇適合項目的CSS框架至關重要。這將為構建新的用戶界面(UI)組件所需的總體努力定下基調。目前,最重要的是更快地發布新功能,以保持客戶的滿意度。因此,你需要一個易于使用的CSS框架,它能夠提供現成的UI元素。
下面,我們來看看2024年值得嘗試的最佳CSS框架。
在今天的數字時代,網頁設計和開發已經成為創造令人印象深刻在線體驗的關鍵。為了滿足這一需求,Bootstrap 應運而生,它是一款以移動為先的 CSS 框架,不僅能幫助你構建外觀優雅的響應式網頁界面,還大大簡化了開發過程。
Bootstrap 的核心在于其強大的柵格系統,這一系統使得開發者可以為各種屏幕尺寸創建靈活的布局。更重要的是,Bootstrap 提供了大量現成的組件,比如導航欄、卡片和模態框,這些都讓開發變得更加迅速和高效。
Bootstrap 的獨特之處
如何將 Bootstrap 與現代框架結合使用
如果你在使用 React 開發項目,可以輕松地將 React Bootstrap 庫安裝到你的項目中,通過這種方式,你可以在保持 React 的組件化開發模式的同時,享受 Bootstrap 提供的樣式和組件優勢。
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>
);
}
Tailwind CSS 以其獨樹一幟的“工具優先”設計理念,在前端開發社區中引起了廣泛關注。它與傳統的 CSS 框架不同,不提供預設樣式的組件,而是通過提供大量的低級實用類(utility classes),讓開發者能夠構建出完全定制的設計。這種方法提供了前所未有的靈活性和可擴展性,使得開發者可以精準控制網頁的每一個細節。
Tailwind CSS 的獨特特點
如何集成 Tailwind CSS
集成 Tailwind CSS 到項目中并非一蹴而就,首先需要設置 Tailwind 編譯器。通過在項目的配置文件中指定要處理的內容和自定義主題,然后通過插件來擴展功能,你可以開始使用 Tailwind 提供的實用類來編寫 CSS。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{html,js}"],
theme: {
extend: {},
},
plugins: [],
}
以下是相關的使用示例
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>
);
}
Foundation 是一款開源的、響應式的前端框架,它極大地簡化了創建在任何設備上都能完美運行的響應式網站、應用程序和電子郵件的過程。由于其出色的靈活性和易用性,Foundation 已被包括 Facebook、eBay、Mozilla、Adobe 乃至 Disney 在內的許多公司采用于他們的項目中。
Foundation 提供了一個強大而靈活的響應式柵格系統,并且包括了許多方便的選項、模態框(modals)、排版(typography)、導航組件以及表單元素,設計師可以快速將這些元素集成到他們的產品中。此外,Foundation 的模塊化架構意味著你可以根據需要,使用它的部分或全部功能。
Foundation 的獨特特性
如何在項目中集成 Foundation
通過如下示例代碼,可以看到如何在 React 項目中使用 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>
);
}
這個例子展示了如何使用 Foundation 的 Menu 和 MenuItem 組件來創建一個簡單的導航菜單。這種集成方式使得在保持 React 組件化開發模式的同時,還能享受 Foundation 提供的樣式和組件優勢。
Bulma 是一個輕量級的 CSS 框架,以其簡單性、響應性和定制選項著稱。它與其他 UI 框架的不同之處在于,Bulma 是基于 Flexbox 構建的,Flexbox 是一種 CSS 布局模型,能夠根據容器的寬度調整頁面元素的寬度,這使得創建網格等任務變得非常簡單,并且是框架輕量化的原因之一。
Bulma 的主要特點
如何在項目中集成 Bulma
將 Bulma 集成到項目中相當簡單,只需導入 Bulma 的 CSS 文件即可開始使用它提供的各種樣式和組件。以下是一個使用 Bulma 創建分頁導航的示例:
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>
);
}
這個例子展示了如何利用 Bulma 的分頁組件來創建一個簡潔美觀的分頁導航。通過使用 Bulma,開發者可以節省大量的時間來設計和編寫 CSS,專注于實現更好的用戶體驗和界面設計。
UIKit 是一個開源的框架,專門用于構建 Web 應用程序的用戶界面。它與其他 UI 框架在結構和設計哲學上有所不同。不同于其他遵循傳統 BEM 方法論的框架,UIKit 采用了基于組件的結構。這種方式為組件的靈活性和可重用性提供了更大的空間,可以顯著減少構建復雜用戶界面所需的代碼量。
UIKit 的主要特性
如何在項目中集成 UIKit
將 UIKit 集成到項目中非常直接,僅需導入 UIKit 的 CSS 文件即可開始使用其提供的樣式和組件。以下是一個使用 UIKit 創建按鈕的示例:
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>
);
}
這個例子演示了如何利用 UIKit 的按鈕(Button)組件來創建一個簡單的按鈕,并使用 Flexbox 實現居中布局。通過 UIKit,開發者可以享受到高度靈活和易用的界面構建體驗,同時也能保持代碼的整潔和模塊化。
選擇合適的 CSS 框架對于項目的成功至關重要。每個框架都有其獨特的特點、優勢和可能的限制,因此了解如何根據項目的具體需求挑選合適的框架是一項重要的技能。除了我們討論的 Bootstrap、Tailwind CSS、Foundation、Bulma 和 UIKit 外,市面上還有許多其他的 CSS 框架,每個都有可能成為你項目的理想選擇。
創建概念驗證
創建概念驗證(Proof-of-Concept,PoC)是評估 CSS 框架是否適合你項目的一個極好方法。通過這種方式,你可以實際操作并體驗每個框架的學習曲線、靈活性、易用性以及它們如何適應你的項目需求。以下是一些建議,幫助你通過創建概念驗證來選擇正確的 CSS 框架:
通過這種綜合評估方法,你可以更全面地理解每個框架如何適應你的項目需求,從而做出明智的選擇。記住,最適合項目的框架不一定是最流行或最新的,而是最能滿足你項目特定需求的那一個。分享你的概念驗證經驗和框架選擇理由,不僅能幫助團隊成員理解決策過程,也能為面臨相似選擇的其他開發者提供參考。
這里是云端源想IT,幫你輕松學IT”
嗨~ 今天的你過得還好嗎?
誰見過風呢
勿論你和我
但當樹木俯首
風正經過
- 2024.03.05 -
在這個數字化的時代,我們每天都在與網頁打交道。你是否曾經好奇過,這些充滿魔力的網頁是如何誕生的呢?今天,我們就來揭開構成這些網頁的神秘面紗——HTML(超文本標記語言)。
網頁的基本組成
網頁是構成網站的基本元素,通常由圖片、鏈接、文字、聲音、視頻等元素組成,通常我們看見的網頁都是.htm和.html后綴結尾的文件,因為都稱為HTML文件。
什么是HTML
HTML 英文全稱是 Hyper Text Markup Language,中文譯為“超文本標記語言”,專門用來設計和編輯網頁。
使用 HTML 編寫的文件稱為“HTML 文檔”,一般后綴為.html(也可以使用.htm,不過比較少見)。HTML 文檔是一種純文本文件,您可以使用 Windows 記事本、Linux Vim、Notepad++、Sublime Text、VS Code 等文本編輯來打開或者創建。
每個網頁都是一個 HTML 文檔,使用瀏覽器訪問一個鏈接(URL),實際上就是下載、解析和顯示 HTML 文檔的過程。將眾多 HTML 文檔放在一個文件夾中,然后提供對外訪問權限,就構成了一個網站。
HTML的故事始于1989年,當時蒂姆·伯納斯-李在歐洲核子研究中心(CERN)提出了一個名為“萬維網”的概念。
為了實現這一概念,他發明了HTML,并隨后與羅伯特·卡里奧一起發明了HTTP協議。從那時起,HTML就成為了互聯網不可或缺的一部分。
上圖簡單羅列了HTML的發展歷史,大家可以簡單了解一下。
什么是標簽
HTML 標記通常被稱為 HTML 標簽 (HTML tag)。 HTML 標簽是由尖括號包圍的關鍵詞,比如<html/>。
<標簽>內容<標簽/>
什么是元素
"HTML 標簽" 和 "HTML 元素" 通常都是描述同樣的意思。但是嚴格來講,一個HTML 元素包含了開始標簽與結束標簽,如下實例。
HTML 元素:
<p>這是一個段落</p>
web瀏覽器
Web 瀏覽器(如谷歌瀏覽器,Internet Explorer,Firefox,Safari)是用于讀取 HTML 文件,并將其作為網頁顯示。 瀏覽器并不是直接顯示的 HTML 標簽,但可以使用標簽來決定如何展現 HTML頁面的內容給用戶:
HTML 屬性
屬性是用來修飾元素的,屬性必須位于開始標簽里,一個元素的屬性可能不止一個,多個屬性之間用空格隔開,多個屬性之間不區分先后順序。
每個屬性都有值,屬性和屬性的值之間用等號鏈接,屬性的值包含在引號當中,屬性總是以名稱/值對的形式出現。
一個典型的HTML文檔由以下幾個基本元素構成:
這是文檔類型聲明,告訴瀏覽器這個文檔使用的是HTML5標準。
這是整個HTML文檔的根元素,其他所有元素都包含在這個標簽內。
這個部分包含了所有關于網頁的元信息,如標題、字符集聲明、引入的CSS樣式表和JavaScript文件等。
這個標簽定義了網頁的標題,它顯示在瀏覽器的標題欄或標簽頁上。
這個部分包含了網頁的所有內容,如文本、圖片、鏈接、表格、列表等。
HTML的結構示例
讓我們通過一個簡單的例子來具體了解HTML的結構:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>我的第一個HTML頁面</title>
</head>
<body>
<h1>歡迎來到我的網頁!</h1>
<p>這是一個簡單的段落。</p>
<a href="https://www.example.com">點擊這里訪問示例網站</a>
</body>
</html>
在這個例子中,我們可以看到一個完整的HTML文檔結構,從<!DOCTYPE html>開始,到最后一個</html>結束。
想象一下,如果HTML是一棵樹,那么<html>就是樹干,<head>和<body>就像是樹的兩個主要分支。<head>中的標簽好比是樹葉,它們雖然不起眼,但卻至關重要,為樹木提供營養。而<body>中的標簽則像是樹枝和果實,它們構成了樹的主體,吸引人們的目光。
想要快速入門HTML嗎?推薦一個前端開發基礎課程,這個老師講的特別好,零基礎學習無壓力,知識點結合代碼,邊學邊練,可以免費試看試學,還有各種輔助工具和資料,非常適合新手!搜索【云端源想】前往學習哦!
HTML的特點主要包括簡易性、可擴展性、平臺無關性和通用性等。具體如下:
1、簡易性:
HTML是一種相對容易學習和使用的語言,它的版本升級通常采用超集方式,使得新版本能夠兼容舊版本的標簽和功能,這樣既保持了向后兼容性,又能夠靈活方便地引入新的功能。
2、可擴展性:
隨著互聯網的發展,HTML也在不斷增加新的元素和屬性來滿足新的需求,如支持多媒體內容的嵌入、更豐富的表單控件等。這種設計使得HTML能夠適應不斷變化的網絡環境。
3、平臺無關性:
HTML編寫的網頁可以在不同的操作系統和瀏覽器上顯示,這是因為HTML是一種與平臺無關的語言。這意味著無論用戶使用什么設備或瀏覽器,都能夠訪問和瀏覽HTML頁面。
4、通用性:
HTML是網絡的通用語言,它是一種簡單的標記語言,用于創建和結構化網頁內容。由于其廣泛的支持和普及,幾乎所有的設備和瀏覽器都能夠解析和顯示HTML內容。
5、支持多種媒體格式:
HTML不僅支持文本內容,還能夠嵌入圖片、音頻、視頻等多種媒體格式,這使得網頁可以提供豐富的用戶體驗。
6、標準化:
HTML遵循萬維網聯盟(W3C)制定的國際標準,這意味著網頁開發者可以根據這些標準來創建網頁,確保網頁的互操作性和可訪問性。
7、標簽豐富:
HTML提供了一系列的標簽,如標題、列表、鏈接、表格等,這些標簽使得開發者能夠創建出結構清晰、功能豐富的網頁。
綜上所述,HTML作為一種基礎的網頁開發語言,因其易學易用、跨平臺、多功能和高度標準化的特點,成為了構建現代網絡內容的核心工具。
HTML作為連接世界的紐帶,其重要性不言而喻。它是數字世界的基石,也是每個想要進入互聯網領域的人必須掌握的技能。無論你是夢想成為前端開發者,還是僅僅想要更好地理解這個由代碼構成的世界,學習HTML都是一個不錯的開始。
今天就先講到這里了,
更多前端開發基礎知識點擊文末閱讀原文查看哦!
記得關注【云端源想IT】一起學編程!
我們下期再見!
END
文案編輯|云端學長
文案配圖|云端學長
內容由:云端源想分享
*請認真填寫需求信息,我們會在24小時內與您取得聯系。