首頁 web前端 css教學 一些編寫css的建議

一些編寫css的建議

Jan 23, 2017 pm 03:08 PM
css

javascripty已經走上工程化的道路了,各種mvm,mvvm框架已經讓人目不暇接了,這裡就不討論js了。我來講下我在實際工作中編寫CSS的一些經驗吧,當然很多人也總結過這樣的經驗,我說的肯定沒有哪些大牛寫的好,我只是簡單的把自己的工作經驗拿出來與大家分享下。

工欲善其事,必先利其器

在編寫css的時候,你需要至少掌握一個開發工具,無論是SASS,還是LESS,本質上來說他們一樣的,只是語法有點不一樣。如果你還是在純手寫css,那麼請盡快了解它們,並根據自己的習慣選擇其中一個並使用他們。我個人而言,我比較喜歡sass,比較符合我的書寫習慣。也有很多人喜歡Less,他們覺得less語法比較方便。

什麼SASS/LESS

SASS(LESS)是CSS3的一個擴展,增加了規則嵌套、變數、混合、選擇器繼承等等。透過使用命令列的工具或WEB框架插件把它轉換成標準的、格式良好的CSS程式碼。

為什麼需要SASS/LESS

它們作為一個開發工具,提供了許多便利的寫法,大大節省了設計者的時間,使得CSS的開發,變得簡單和可維護。
它們也是編寫模組化、可維護的CSS的基石。

該如何使用

網上關於SASS/LESS的教程一大堆,我這裡不浪費篇幅寫基本語法了。
可以自己去網上搜索,它們都差不多,學了一個基本上都可以使用了:

下面的內容我用SASS舉例,內容不限於SASS,LESS同樣適用!

神說,無規矩不成方圓

是的,無規矩不成方圓,你需要了解一種css命名規範或者製定自己的規範(不建議自定義,不利於團隊合作);

為什麼需要有一種命名規範呢?

當你寫過大量css時候,你發現沒有一種有效的命名規範會讓你痛不欲生。如果你在一個稍微大一點的專案中,或是在與其他人合作開發的過程,這種感覺特別明顯。因為當你為css命名的時候會發現這個命名在別的地方使用了,或者隊友已經使用過了,你必須重新命名。久而久之,css的命名就會雜亂無章而且又臭又長,一眼望去根本猜不到這個命名的意義。

BEM命名規範

各種命名規範是仁者見仁,智者見智,在這裡我介紹下BEM命名規範,我介紹的不一定就是適合你的,你需要自己思考何種命名規範適合自己。 。

BEM是由Yandex團隊提出的一種CSS Class 命名方法,旨在更好的創建CSS/Sass模組。

BEM的意思是塊(block)、元素(element)、修飾符(modifier)。

●block: 可以理解為一個區域、一個組件或一個區塊級元素,具體如何區分需要根據實際情況具體分析;

●block__element: 就是一個上面的block裡面的元素,比如說導航(nav:block )裡面有a標籤(a: element)就是一個元素, block與element使用兩個下劃線連結;

●block__element–modifier: 我的理解是狀態或屬性。例如element裡面的a標籤,它有active、hover、normal三種狀態,這三種狀態就是modifier。 midifier是使用兩個「–」中橫線連接

就上面所說的例子我用實際的程式碼來示範下:

<!-- HTML结构 --><nav class="nav">
  <a href="#" class="nav__item nav__item--active">当前页:active</a>
  <a href="#" class="nav__item nav__item--hover">假设鼠标在这里要加个hover的class</a>
  <a href="#" class="nav__item nav__item--normal">假设需要加个normar的状态</a></nav>
登入後複製
// SASS写法.nav{
  &__item{
    &--active{
      <!-- active样式 -->
    }
    &--hover{
      <!-- hover样式 -->
    }
    &--normal{
      <!-- normal样式 -->
    }
  }}
登入後複製
/* 编译后的css */
.nav{ }
.nav__item{ }
.nav__item--active{ }
.nav__item--hover{ }
.nav__item--normal{ }
登入後複製

從上面的例子可以一眼看出css的含義,而且編譯後的css沒有任何的嵌套,但是SASS的結構卻很清晰,一目了然。

由此可見,使用SASS配合BEM可以寫出一份易讀、可維護、模組化的程式碼;

神說,我不認識你

一份可讀性的SASS必須有一份說明,一個文件,一個函數都需要一份說明。

對於一份SASS文件,你至少需要說明兩點,這份SASS是公用還是私有、哪個頁面哪個部分

@charset "utf-8"/** 预定义函数* author:xxx* time:xxxx-xx-xx*//** 清除浮动* use: @include clearfix();* author: xxx* time: xxxx-xx-xx*/@mixin clearfix(){
  *zoom: 1;
  &:before,
  &:after {
      content: "";
      display: table;
  }
  &:after {
      clear: both;
      overflow: hidden;
  }}
登入後複製

神說,世界要統一

●reset

css reset必不可少,網路上有很多css reset的程式碼,compass也有reset的module,只需要@import 「compass/reset」。如果你覺得這些程式碼太冗餘,太多,你至少要確保你的css有margin和padding的reset,這樣才可以確保在各個瀏覽器中css有相同的樣式。

*{
  margin: 0;
  padding: 0;}
登入後複製

●間距/行距/邊距

●字號

●顏色

●層級

●高度

,好處很多,最大的好久就是可維護性,誰用誰知道!

可維護性

●等你開發完了,拿給設計師驗收,設計師說這裡不好,換個顏色! —— 沒事,我改個變數!

●产品说,这里不好,列表间距太大了,小屏幕只显示那么一点点!—— 没事,我改个变量!

●来来来,产品说我们换一套皮肤! —— 没事,我重新定义一份变量!

……

这些例子可以让你明白有一份variables是多么重要了吧。其实这些只是在可维护方面的好处。作为一名前端,我们是最接近用户的工程师,我们不能仅仅停留在代码层面,更需要的是站在用户体验的角度思考问题,而variables可以让我们有一套规范,确保页面一致性

一致性

FE是面向用户的,我们需要对用户负责。设计师在设计页面的时候,不能所有的像素的都很精确,不可能每次的颜色都是毫无差错的。所以在这时候,就需要规范了,如果设计师没有规范,那我们自己制定一套规范。例如:

●同一个项目,一个页面的列表高度是20px,另一个页面的列表是21px,这时我们无需理会,直接使用我们之前定义的列表高度进行开发。

●同一个页面,有两个error的颜色#dc4c4c和#d84a4a,我们也无需理会,使用统一的error颜色变量;

这些是用户体验的细节,通过一份variables可以让我们保持页面的一致性。
这里只是略微提下用户体验,之后我再写一篇《前端工程师必须重视的用户体验》来详细讲解下用户体验。

module(模块化,基于SASS/LESS)

模块化在js中经常听到,对于css来说,模块化对于易读性和可维护性同样重要。那么如何来做模块化呢?

多文件夹

建立多个文件夹,分类存放sass文件。例如:将variables、mixin、公共样式、私有样式分成多个文件夹存放;

多文件

同一个文件夹的sass可以按模块、功能等等分成多个文件,最终用@import 导入

这样说的有点粗糙,我举个例子吧(下划线开头的sass文件不会编译单独css文件)

——sass
  ——config                //基本变量
  ——mixin                 //函数
  ——common                //公用
    ——header
    ——aside
      ——_list.scss
      ——_nav.scss
      ——_base.scss
  ——compoment             //组件样式
    ——dropdown
    ——lightbox
  ——page
    ——index               //首页
      ——_ad.scss           //广告样式
      ——_content.scss      //内容信息
      ——_info.scss         //个人信息样式
      ——_base.scss         //index样式,@import &#39;ad&#39;;@import &#39;content&#39;;@import &#39;info&#39;;
    ——write               
    ——preview        
      ——_aside.scss       //preview页面独有侧边栏
    ——about
  ——main.scss             //导入所需要的样式,最终生成一个main.css
登入後複製

如上面所示的目录结构,能让人一目了然sass的目录的结构,维护的时候可以快速准确的找到文件。
如果是多页面的项目,也可以最大限度复用代码,而且可以导出公用样式,利用缓存提高加载速度,不用每个页面都重复写一样的代码。

注意:common文件夹的公共样式必须是其他页面所共有的样式,如果有些页面有特殊的样式,应该将会覆盖的css抽取出来,在页面中分别导入不同的私有样式。

根据命名规则限定使用样式

比如说preview页面有一个私有aside样式,可以在这样写preview里面的_aside.scss:

@charset "utf-8"/** 预览页面侧边栏* author:xxx* time:xxxx-xx-xx*/@import &#39;../../common/aside/base&#39;.preview{
  .aside{
    /* css */
    &__item{
      /* css */
    }
  }}
登入後複製

这里需要注意的是,css覆盖会导致重新渲染,影响性能。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

bootstrap怎麼設置框架 bootstrap怎麼設置框架 Apr 07, 2025 pm 03:27 PM

要設置 Bootstrap 框架,需要按照以下步驟:1. 通過 CDN 引用 Bootstrap 文件;2. 下載文件並將其託管在自己的服務器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根據需要編譯 Sass/Less;5. 導入定製文件(可選)。設置完成後,即可使用 Bootstrap 的網格系統、組件和样式創建響應式網站和應用程序。

bootstrap怎麼寫分割線 bootstrap怎麼寫分割線 Apr 07, 2025 pm 03:12 PM

創建 Bootstrap 分割線有兩種方法:使用 標籤,可創建水平分割線。使用 CSS border 屬性,可創建自定義樣式的分割線。

bootstrap怎麼插入圖片 bootstrap怎麼插入圖片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

bootstrap按鈕怎麼用 bootstrap按鈕怎麼用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

bootstrap怎麼調整大小 bootstrap怎麼調整大小 Apr 07, 2025 pm 03:18 PM

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

See all articles