CSS-reset&規範
css reset 是什麼?css 預編譯器是什麼? 後編譯器(post css)是什麼?
css reset 即重置瀏覽器標籤的樣式表
現在所使用的主流瀏覽器對一些標籤的預設屬性上並沒有做到統一,所以我們偶爾會發現,某個頁面在chrome瀏覽器上很正常,到了firefox上面卻有意想不到的偏差。當然程式設計人員不喜歡這樣的相容性問題的,而reset.css就是解決預設樣式不相容問題的辦法之一。
* {
padding: 0;
margin: 0;
} /*這是最簡化的CSS Reset,會帶來效能問題*/
css 預編譯器
CSS 前處理器定義了一種新的語言,其基本思想是,用一種專門的程式語言,為 CSS 增加了一些程式設計的特性,將 CSS 作為目標生成檔案,然後開發者就只要使用這種語言進行編碼工作。
CSS 前處理器為 CSS 增加一些程式設計的特性,無需考慮瀏覽器的相容性問題”,例如你可以在 CSS 中使用變數、簡單的邏輯程式、函式(如右側程式碼編輯器中就使用了變數$color)等等在程式語言中的一些基本特性,可以讓你的 CSS 更加簡潔、適應性更強、可讀性更佳,更易於程式碼的維護等諸多好處。
目前主流的前處理器裡最常用的三種有:Sass,Less ,Stylus 。
後編譯器(post css)
PostCSS是一個使用JavaScript外掛來轉換CSS的工具。它將CSS轉換成抽象語法樹(AST),也就是JavaScript可以操作的一種資料形式。基於JavaScript的PostCSS外掛可以執行不同的程式碼操作。PostCSS本身並沒有改變你的CSS,它請允許外掛執行和轉換你的程式碼。
實際上,對於CSS的操作,PostCSS外掛並沒有任何限制。只要你有想得到的,你都可以寫一個PostCSS外掛來實現。
http://www.w3cplus.com/preprocessor/postcss-and-crazy-things-you-can-do-with-it.html
列舉CSS編碼規範
參考:
書寫規範:
- tab 用兩個空格表示
- css的
:
後加個空格,
{
前加個空格 - 每條宣告後都加上分號
;
- 換行,而不是放到一行
- 顏色用小寫,用縮寫,
#fff
- 小數不用寫字首, 0.5s -> .5s;0不用加單位
- 儘量縮寫,
margin: 5px 10px 5px 10px -> margin: 5px 10px
CSS命名技巧:
語義化:
- 語義化標籤優先
- 基於功能命名、基於內容命名、基於表現命名
- 簡略、明瞭、無後患
<!-- 不好 -->
<div class="left"></div>
<div class="red"></div>
<div class="s"></div>
<a class="link" href="#"></a>
<article class="blue">...</article>
<article class="redBg mt30 bigText">...</article>
<!-- 好 -->
<div class="success"></div>
<div class="theme-color"></div>
<a class="login" href="#"></a>
<article class="movies">...</article>
<article class="news">...</article>
常見命名:
.wrap或.wrapper -- 用於外側包裹
.container或 .ct -- 包裹容器
.header -- 用於頭部
.body -- 頁面 body
.footer -- 頁面尾部
aside、sidebar -- 用於側邊欄
.content -- 和header footer 對應,用於主要內容
.navigation -- 導航元素
.pagination -- 分頁
.tabs > .tab -- tab 切換
.breadcrumbs -- 導航列表、麵包屑
.dropdown -- 下拉選單
.article -- 文章
.main -- 用於主體
.thumbnail -- 頭像,小影象
.media -- 媒體資源
.panel -- 皮膚
.tooltip -- 滑鼠放置上去的提示
.popup -- 滑鼠點選彈出的提示
.button、.btn -- 按鈕
.ad -- 廣告
.subnav -- 二級導航
.menu -- 選單
.tag -- 標籤
.message或者.notice -- 提示訊息
.summary -- 摘要
.logo -- logo
.search -- 搜尋框
.login -- 登入
.register -- 註冊
.username -- 使用者名稱
.password -- 密碼
.banner -- 廣告條
.copyright -- 版權
.modal或者 .dialog -- 彈窗
如何使用偽元素來清楚浮動?補全程式碼
給父容器新增一個空的塊級元素,然後清除左右的浮動。
.clearfix::after {
content: '';
display: block;
clear: both;
}
實現如下效果,三角符號用偽元素實現
編碼規範的作用是什麼?列舉5條以上編碼規範
作用:
1. 提高可讀性
編碼規範,幫助我們寫出容易理解的程式碼,它為我們提供了最基本的模板,良好的編碼風格,使程式碼具有一定的描述性,可以通過名字來獲取一些需要IDE才能得到的提示,如可訪問性、繼承基類等。
2. 促進團隊協助
編碼規範,要求團隊成員遵守這一統一的全域性決策,這樣成員之間可以輕鬆地閱讀對方的程式碼,所有成員正以一種清晰而一致的風格進行編碼。而且,開發人員也可以集中精力關注他們真正應該關注的問題——自身程式碼的業務邏輯,與需求的契合度等區域性問題。
3. 有助於知識傳遞,加快工作交接
風格的相似性,能讓開發人員更迅速,更容易理解一些陌生的程式碼,更快速地理解別人的程式碼。因為,他和你的程式碼風格是一樣的,你沒有必要對他的一些個性化風格進行揣測。這樣的好處是開發人員可以很快的接手專案組其他成員的工作,快速完成工作交接。
4. 降低維護成本
在沒有規範的情況下,和容易為同一型別的例項起不同的名字。對於以後維護這些程式碼程式設計師來說會產生疑惑。
5. 強調變數之間的關係,降低缺陷引入的機會
命名可以表示一定的邏輯關係,是開發人員在使用時保持警惕,從而一定程度上減少缺陷被引人的機會。
6. 提高程式設計師個人能力
每個程式設計師都應該養成良好的編碼習慣,而編碼規範無疑是教材之一。即便是為了自身發展,作為程式設計師也沒有理由抵制這種規則的存在。你可能沒有認識到,我們正默默地得益於編碼規範。
規範
- 為每個 HTML 頁面的第一行新增標準模式(standard mode)的宣告,這樣能夠確保在每個瀏覽器中擁有一致的展現。
<!DOCTYPE html>
<html>
<head>
</head>
</html>
- 字元編碼
通過明確宣告字元編碼,能夠確保瀏覽器快速並容易的判斷頁面內容的渲染方式。這樣做的好處是,可以避免在 HTML 中使用字元實體標記(character entity),從而全部與文件編碼一致(一般採用 UTF-8 編碼)。
<head>
<meta charset="UTF-8">
</head>
實用為王
儘量遵循 HTML 標準和語義,但是不要以犧牲實用性為代價。任何時候都要儘量使用最少的標籤並保持最小的複雜度。布林(boolean)型屬性
布林型屬性可以在宣告時不賦值。XHTML 規範要求為其賦值,但是 HTML5 規範不需要。
<input type="text" disabled>
<input type="checkbox" value="1" checked>
<select>
<option value="1" selected>1</option>
</select>
- 減少標籤的數量
編寫 HTML 程式碼時,儘量避免多餘的父元素。很多時候,這需要迭代和重構來實現。
<!-- Not so great -->
<span class="avatar">
<img src="...">
</span>
<!-- Better -->
<img class="avatar" src="...">
編輯器配置
將你的編輯器按照下面的配置進行設定,以避免常見的程式碼不一致和差異:
- 用兩個空格代替製表符(soft-tab 即用空格代表 tab 符)。
- 儲存檔案時,刪除尾部的空白符。
- 設定檔案編碼為 UTF-8。
- 在檔案結尾新增一個空白行。
參照文件並將這些配置資訊新增到專案的.editorconfig
檔案中。例如:Bootstrap 中的 .editorconfig 例項。更多資訊請參考about EditorConfig。
相關文章
- 前端開發規範:命名規範、html規範、css規範、js規範前端HTMLCSSJS
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- 前端規範之javascript規範前端JavaScript
- 前端規範之CSS規範前端CSS
- 前端規範之HTML 規範前端HTML
- PHP 規範 - Symfony 程式碼規範PHP
- 前端規範之nodeJs 規範前端NodeJS
- 編碼規範系列:css規範CSS
- 『前端規範化』CSS命名規範化前端CSS
- 前端規範之vue 專案規範前端Vue
- 前端規範與思考(二)———css規範前端CSS
- 前端規範之CSS規範(Stylelint)前端CSS
- Android 程式碼規範 - 命名規範Android
- Android程式碼規範:命名規範Android
- 從規範看ECMAScript(一):規範基礎
- 前端規範之媒體檔案規範前端
- 前端規範之Git提交規範(Commitizen)前端GitMIT
- AMD規範與CMD規範的區別
- MySQL 規範MySql
- Git規範Git
- PHP規範PHP
- FastCGI規範AST
- JS規範JS
- SVG規範SVG
- 提交規範
- Servlet 規範Servlet
- MySQL 規範 (資料庫表設計規範)MySql資料庫
- 程式碼規範之前端編寫碼規範前端
- 資料庫規範之SQL規範寫法資料庫SQL
- Python語言規範及風格規範Python
- 資料探勘實驗(一)資料規範化【最小-最大規範化、零-均值規範化、小數定標規範化】
- 網易郵箱前端Javascript編碼規範:類規範前端JavaScript
- [規範] CSS BEMCSS
- PHP 命名規範PHP
- mysql基本規範MySql
- web前端規範Web前端
- mysqldump 使用規範MySql
- JavaScript 命名規範JavaScript