1. 程式人生 > >幾種自動處理css字首的方法總結

幾種自動處理css字首的方法總結

我們知道在寫css的時候由於要相容不同廠商瀏覽器,一些比較新的屬性需要給它們新增廠商字首來相容。移動端還好,基本只要相容webkit核心的即可,pc端就虐心了,ff、ie、Opera……可以說五花八門,應有盡有,每次要使用例如一些css3屬性的時候,就要考慮到新增字首相容的問題,那麼多屬性那麼多字首,簡直是泯滅人性!

不過好在現在各種工具的出現,已經可以很好地解決這個問題了,下面就簡單介紹幾個吧。

1. postcss

postcss是一個用JS外掛轉化樣式的工具。這些外掛可以檢查CSS,支援變數和mixin,轉譯未來的CSS語法,內聯影象等等……總之是一個非常強大的css處理工具。

在本文中我們主要介紹postcss裡面使用率最高的一個外掛

Autoprefixer。Autoprefixer是專門用來新增廠商字首的postcss外掛,它處理相容性的依據來源於caniuse

使用效果

編譯前:

.example {
  display: flex;
  transition: all .5s;
  user-select: none;
  background: linear-gradient(to bottom, white, black);
}

編譯後:

.example {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-transition: all .5s;
  transition: all .5s;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  background: -webkit-linear-gradient(top, white, black);
  background: linear-gradient(to bottom, white, black);
}

2. 使用構建工具gulp、webpack、grunt等

gulp

在gulp中,你可以安裝npm包gulp-postcss來啟用Autoprefixer。

var gulp = require('gulp');
gulp.task('autoprefixer', function () {
  var postcss      = require('gulp-postcss');
  var autoprefixer = require('autoprefixer');

  return gulp.src('./postcss/*.css')
    .pipe(postcss([ autoprefixer({ browsers: ['last 2 versions'] }) ]))
    .pipe(gulp.dest('./dist/postcss'));
});

webpack

在webpack中,你可以安裝npm包postcss-loader來啟用Autoprefixer。

var autoprefixer = require('autoprefixer');

module.exports = {
  module: {
    loaders: [
        {
            test:   /\.css$/,
            loader: "style-loader!css-loader!postcss-loader"
        }
    ]
  },
  postcss: [ autoprefixer({ browsers: ['last 2 versions'] }) ]
}

grunt

在grunt中,你可以安裝npm包grunt-postcss來啟用Autoprefixer。

module.exports = function(grunt) {
  grunt.loadNpmTasks('grunt-postcss');

  grunt.initConfig({
    postcss: {
        options: {
            map: true,
            processors: [
                require('autoprefixer')({
                    browsers: ['last 2 versions']
                })
            ]
        },
        dist: {
            src: 'css/*.css'
        }
    }
  });

  grunt.registerTask('default', ['postcss:dist']);
};

3.在less、sass等css前處理器中處理字首

less

在less中可以使用mixin來解決。

例如:

.animation(@args){
  -webkit-animation:@args;
  -moz-animation:@args;
  -ms-animation:@args;
  -o-animation:@args;
  animation:@args;
}

然後呼叫:

div{
  .animation(fadeIn  1s);
}

sass

在sass中可以使用工具庫compass來幫助我們。(安裝compass前需要先安裝Ruby,如何安裝自行百度)

然後我們在sass中引入compass模組中需要的部分,然後通過@include命令呼叫,例如:

@import "compass/css3";
.rounded {  
  @include border-radius(5px);
}

編譯後結果:

.rounded {
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -o-border-radius: 5px;
  -ms-border-radius: 5px;
  -khtml-border-radius: 5px;
  border-radius: 5px;
}

4.css預處理搭配構建工具使用Autoprefixer更酸爽

其實我們也看出來了,在預處理中新增字首其實還是有點麻煩的,但是在webpack等工具中同時使用它們會更為便捷,思路其實很簡單,就是:先用前處理器把less、sass轉為css,然後再通過Autoprefixer給編譯好的css加字首。以webpack為例:

var autoprefixer = require('autoprefixer');

module.exports = {
  module: {
    loaders: [
        {
            test:   /\.less$/,
            loader: "style-loader!css-loader!postcss-loader!less-loader"
        }
    ]
  },
  postcss: [ autoprefixer({ browsers: ['last 2 versions'] }) ]
}

首先我們先用less-loader編譯less為css,然後在通過postcss-loader給編譯後的css加字首,就是這麼簡單。
參考文章:

相關推薦

自動處理css字首方法總結

我們知道在寫css的時候由於要相容不同廠商瀏覽器,一些比較新的屬性需要給它們新增廠商字首來相容。移動端還好,基本只要相容webkit核心的即可,pc端就虐心了,ff、ie、Opera……可以說五花八門,應有盡有,每次要使用例如一些css3屬性的時候,就要考慮到新增字首相容的問

關於常用的脫殼方法總結

最近一直在學習殼的破解,和大家分享一下幾種常用的脫殼方法 1.esp定律 使用PEID查殼,瞭解殼的屬性 載入OD,F8單步執行,注意暫存器的視窗 這個時候會發現只有ESP後面對應得資料為紅色,我們就應該知道,可以使用ESP定律了,單擊紅色的ESP右鍵會出現HW brea

C#中常用的處理字串的方法總結

主要有以下幾種: string[i]所獲得的元素是隻讀的。 string.ToCharArray() (把string獲得一個可寫的字元陣列) string.Replace(old, new)(將字串中指定字元或者子字串做相應的替換) string.ToLower

webpack4.x 處理less、sass檔案,分離編譯後的css自動新增css字首,自動消除冗餘css 第七節

處理less檔案 我們建立一個src/less/a.less檔案 @a:red; #div1{ color: @a; ul{ li{ list-style: none; height:30px;

NSSrting的經常使用的使用方法

from nil asc nsdata any equal bre tom zed 1.創建NSString字符串 NSString 與 char* 最大的差別就是 NSString是一個objective對象,而char* 是一個字節數組。@+" 字符串 " 這個符

js中實用的跨域方法原理詳解

自身 標簽 cdc 返回 屬性和方法 插入 實用 封裝 判斷 這裏說的js跨域是指通過js在不同的域之間進行數據傳輸或通信,比如用ajax向一個不同的域請求數據,或者通過js獲取頁面中不同域的框架中(iframe)的數據。只要協議、域名、端口有任何一個不同, 都被當作是不同

死鎖跟蹤:6跟蹤死鎖的方法總結

時間 mda msd count avi filesize microsoft win int 原文地址:http://blog.csdn.net/kk185800961/article/details/42504857 方法一:Windows 性能計數器監控 命令行輸

求逆元的方法

int 才有 gpo log swa class ++ 要求 1-n 一, 擴展歐幾裏得 1 void exgcd(int a,int b,int &x,int &y) 2 { 3 if(b==0) 4 { 5 x

構造對象的方法

rip call har gets 創建 get post set ret 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="

做好網站建設,這友鏈添加方法必須學會

餐飲 成功率 讓其 原創 百度搜 一個 就是 競爭對手 學會 小編在之前的文章中有提到,對於做網站優化推廣來講,友鏈是效果最好最穩定的一種外鏈了。做好了友鏈,可以引流,傳遞網站權重,吸引訪客和蜘蛛到網站瀏覽,進而做好網站建設。今天小編就來介紹下幾個實打實的友鏈交換技巧。一、

[轉載]Scikit-learn介紹常用的特徵選擇方法

#### [轉載]原文地址:http://dataunion.org/14072.html 特徵選擇(排序)對於資料科學家、機器學習從業者來說非常重要。好的特徵選擇能夠提升模型的效能,更能幫助我們理解資料的特點、底層結構,這對進一步改善模型、演算法都有著重要作用。 特徵選擇主要有兩個功能: 減少特

常見的CSS佈局

本文概要 本文將介紹如下幾種常見的佈局: 單列布局 兩列自適應佈局 聖飛佈局和雙飛翼佈局 偽等高佈局 粘連佈局 一、單列布局 常見的單列布局有兩種: header,content和footer等寬的單列布局 header與footer等寬,con

Android 進階13:程序通訊方式的對比總結

讀完本文你將瞭解: RPC 是什麼 IDL 是什麼 IPC 是什麼 Android 幾種程序通訊方式 如何選擇這幾種通訊方式 Thanks RPC 是什麼 RPC 即 Remote Procedure Call (遠端過程呼叫) 是一種計算機通訊協議,它為我們定義了計算機 C 中的程式如何呼叫另

JS 中實用的跨域方法原理詳解

這裡說的js跨域是指通過js在不同的域之間進行資料傳輸或通訊,比如用ajax向一個不同的域請求資料,或者通過js獲取頁面中不同域的框架中(iframe)的資料。只要協議、域名、埠有任何一個不同,都被當作是不同的域。 下表給出了相對http://store.company.com/dir/page

個實用的CSS程式碼段總結

    廢話不多說,直接上程式碼,希望能幫到有需要的小夥伴     ①:遮罩        position: fixed; background: rgba(0, 0, 0, .4); top: 0; left: 0; rig

常見的Graph Embedding方法

圖(Graph)是一個常見的資料結構,現實世界中有很多很多工可以抽象成圖問題,比如社交網路,蛋白體結構,交通路網資料,以及很火的知識圖譜等,甚至規則網路結構資料(如影象,視訊等)也是圖資料的一種特殊形式。針對graph的研究可以分成三類:1.簡單的graph演算法:如生成樹演算法,最短路演算

Java常見的四捨五入的方法

/* * 在上面簡單地介紹了銀行家舍入法,目前java支援7中舍入法: 1、 ROUND_UP:遠離零方向舍入。向絕對值最大的方向舍入,只要捨棄位非0即進位。 2、 ROUND_DOWN:趨向零方向舍入。向絕對

VxWorks嵌入式系統常用的延時方法

1 taskDelay     taskDelay(n)使呼叫該函式的任務延時n個tick(核心時鐘週期)。該任務在指定的時間內主動放棄CPU,除了taskDelay(0)專用 於任務排程(將CPU交給同一優先順序的其他任務)外,任務延時也常用於等待某一外部事件,作為一種定

影象處理庫的研究

                幾種影象處理庫的研究目前比較出名的影象處理庫有很多,比如LEADTOOLS,這個是功能非常強大的影象多媒體庫,但是這個是收費註冊的。開源的影象庫也有不少,比如:ImageStone、GIMP、CxImage等,雖然它們的功能沒有LEADTOOLS強大,但是一般的影象處理是可以應

DNS服務中常用服務的配置方法

DNS域名解析服務 域名作為替代IP地址的訪問名稱,構成是由頂級域名—代表國家,機構或組織等,二級域名—企業名稱或品牌名稱等,主機名—www或主機所提供的服務名稱等自主命名組成,相較於IP地址,域名更容易被理解和記憶。 鑑於網際網路中的域名和 IP 地址對應關係資料庫太