幾種自動處理css字首的方法總結
我們知道在寫css的時候由於要相容不同廠商瀏覽器,一些比較新的屬性需要給它們新增廠商字首來相容。移動端還好,基本只要相容webkit核心的即可,pc端就虐心了,ff、ie、Opera……可以說五花八門,應有盡有,每次要使用例如一些css3屬性的時候,就要考慮到新增字首相容的問題,那麼多屬性那麼多字首,簡直是泯滅人性!
不過好在現在各種工具的出現,已經可以很好地解決這個問題了,下面就簡單介紹幾個吧。
1. postcss
postcss是一個用JS外掛轉化樣式的工具。這些外掛可以檢查CSS,支援變數和mixin,轉譯未來的CSS語法,內聯影象等等……總之是一個非常強大的css處理工具。
在本文中我們主要介紹postcss裡面使用率最高的一個外掛
使用效果
編譯前:
.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 地址對應關係資料庫太