精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用原生JS進行CSS格式化和壓縮

開發 前端
一直比較喜歡收集網頁特效,很多時候都會遇到CSS被壓縮過的情況,這時查看起來就會非常不方便,有時為了減少文件大小,也會對自己的CSS進行壓縮,網上提供這樣服務的很多,但都不盡如人意,因此打算自己動手寫一個JS來進行CSS的格式化和壓縮。

前  言

一直比較喜歡收集網頁特效,很多時候都會遇到CSS被壓縮過的情況,這時查看起來就會非常不方便,有時為了減少文件大小,也會對自己的CSS進行壓縮,網上提供這樣服務的很多,但都不盡如人意,因此打算自己動手寫一個JS來進行CSS的格式化和壓縮。

原  理

CSS的結構如下:

  1. 選擇器{  
  2.   css屬性聲明:值;  

所以對CSS格式化也就比較簡單,大致分為以下幾步;

1、把多個空格合并成一個,去掉換行

2、對處理后的字符串按"{"進行分組

3、遍歷分組,對含有"}"的部分再次以"}"進行分組

4、對分組后的數據進行處理,主要是加上空格和換行

對CSS壓縮就比較簡單了,把空格合并,去掉換行就可以了

 

格式化

下面分步對以上步驟進行實現。

初始化:

  1. function formathtmljscss(source, spaceWidth, formatType) {  
  2.     this.source = source;  
  3.     this.spaceStr = "    ";  
  4.     if (!isNaN(spaceWidth)) {  
  5.         if (spaceWidth > 1) {  
  6.             this.spaceStr = "";  
  7.             for (var i = 0; i < spaceWidth; i++) {  
  8.                 this.spaceStr += " ";  
  9.             }  
  10.         }  
  11.         else {  
  12.             this.spaceStr = "\t";  
  13.         }  
  14.     }  
  15.     this.formatType = formatType;  
  16.     this.output = [];  

這里幾個參數分別是要格式化的CSS代碼、CSS屬性聲明前空格寬度,類型(格式化/壓縮)

1、把多個空格合并成一個,去掉換行:

  1. formathtmljscss.prototype.removeSpace = function () {  
  2.     this.source = this.source.replace(/\s+|\n/g, " ")  
  3.         .replace(/\s*{\s*/g, "{")  
  4.         .replace(/\s*}\s*/g, "}")  
  5.         .replace(/\s*:\s*/g, ":")  
  6.         .replace(/\s*;\s*/g, ";");  

2、對處理后的字符串按"{"進行分組

  1. formathtmljscss.prototype.split = function () {  
  2.     var bigqleft = this.source.split("{");  

3、遍歷分組,對含有"}"的部分再次以"}"進行分組

  1. formathtmljscss.prototype.split = function () {  
  2.     var bigqleft = this.source.split("{");  
  3.     var bigqright;  
  4.     for (var i = 0; i < bigqleft.length; i++) {  
  5.         if (bigqleft[i].indexOf("}") != -1) {  
  6.             bigqright = bigqleft[i].split("}");  
  7.         }  
  8.         else {  
  9.              
  10.         }  
  11.     }  

4、對分組后的數據進行處理,主要是加上空格和換行

這里的處理主要分為,把CSS屬性聲明和值部分取出來,然后加上空格和換行:

  1. formathtmljscss.prototype.split = function () {  
  2.     var bigqleft = this.source.split("{");  
  3.     var bigqright;  
  4.     for (var i = 0; i < bigqleft.length; i++) {  
  5.         if (bigqleft[i].indexOf("}") != -1) {  
  6.             bigqright = bigqleft[i].split("}");  
  7.             var pv = bigqright[0].split(";");  
  8.             for (var j = 0; j < pv.length; j++) {  
  9.                 pv[j] = this.formatStatement(this.trim(pv[j]),true);  
  10.                 if (pv[j].length > 0) {  
  11.                     this.output.push(this.spaceStr + pv[j] + ";\n");  
  12.                 }  
  13.             }  
  14.             this.output.push("}\n");  
  15.             bigqright[1] = this.trim(this.formatSelect(bigqright[1]));  
  16.             if (bigqright[1].length > 0) {  
  17.                 this.output.push(bigqright[1], " {\n");  
  18.             }  
  19.         }  
  20.         else {  
  21.             this.output.push(this.trim(this.formatSelect(bigqleft[i])), " {\n");  
  22.         }  
  23.     }  

這里調用了幾個方法:trim、formatSelect、formatStatement,下面一一說明。

trim:從命名就可以看出是去除首尾空格;

  1. formathtmljscss.prototype.trim = function (str) {  
  2.     return str.replace(/(^\s*)|(\s*$)/g, "");  

formatSelect:是處理選擇器部分語法,做法就是給"."前面加上空格,把","前后的空格去掉,把多個空格合并為一個:

  1. formathtmljscss.prototype.formatSelect = function (str) {  
  2.     return str.replace(/\./g, " .")  
  3.         .replace(/\s+/g, " ")  
  4.         .replace(/\. /g, ".")  
  5.         .replace(/\s*,\s*/g, ",");  

formatStatement:是處理“css屬性聲明:值;”部分的語法,做法就是給":"后面加上空格,把多個空格合并為一個,去掉“#”后面的空格,去掉"px"前面的空格,去掉"-"兩邊的空格,去掉":"前面的空格:

  1. formathtmljscss.prototype.formatStatement = function (str, autoCorrect) {  
  2.     str = str.replace(/:/g, " : ")  
  3.         .replace(/\s+/g, " ")  
  4.         .replace("# ""#")  
  5.         .replace(/\s*px/ig, "px")  
  6.         .replace(/\s*-\s*/g, "-")  
  7.         .replace(/\s*:/g, ":");  
  8.  
  9.     return str;  

調  用

調用部分比較簡單,對于格式化來說就是去掉空格和換行,然后分組處理,對于壓縮來說就是去掉空格和換行:

  1. formathtmljscss.prototype.formatcss = function () {  
  2.     if (this.formatType == "compress") {  
  3.         this.removeSpace();  
  4.     }  
  5.     else {  
  6.         this.removeSpace();  
  7.         this.split();  
  8.         this.source = this.output.join("");  
  9.     }  

界面HTML代碼:

  1. <div id="content"> 
  2.         <div class="container"> 
  3.             <div class="box"> 
  4.                 <div class="main"> 
  5.                     <h2>CSS格式化/壓縮</h2> 
  6.                     <div id="blurb"> 
  7.                         <fieldset id="options"> 
  8.                             <button id="submit"> 
  9.                                 <span>格式化 / 壓縮&nbsp;&nbsp;<img alt="格式化" src="/images/29.png"/></span> 
  10.                             </button><br/> 
  11.                             <span>縮進:</span> 
  12.                             <ul> 
  13.                                 <li> 
  14.                                     <select name="tabsize" id="tabsize"> 
  15.                                         <option value="1">tab鍵縮進</option> 
  16.                                         <option value="2">2空格縮進</option> 
  17.                                         <option selected="selected" value="4">4空格縮進</option> 
  18.                                     </select> 
  19.                                 </li> 
  20.                             </ul><br /> 
  21.                             <span>類型:</span><br /> 
  22.                             <input type="radio" name="format_type" value="format" checked="checked" id="format_format" /><label for="format_format">格式化</label> 
  23.                             <input type="radio" name="format_type" value="compress" id="format_compress" /><label for="format_compress">壓縮</label> 
  24.                         </fieldset> 
  25.                     </div> 
  26.                     <div id="beauty"> 
  27.                         <fieldset id="textarea-wrap"> 
  28.                             <textarea rows="20" cols="40" id="source"></textarea> 
  29.                         </fieldset> 
  30.                     </div> 
  31.                 </div> 
  32.             </div> 
  33.         </div> 
  34.     </div> 

跟頁面元素按鈕綁定事件:

  1. window.onload = function () {  
  2.     var submitBtn = document.getElementById("submit");  
  3.     var tabsize = document.getElementById("tabsize");  
  4.     var sourceCon = document.getElementById("source");  
  5.     var size = 4;  
  6.     var formatType = "format";  
  7.     submitBtn.onclick = function () {  
  8.         var radios = document.getElementsByName("format_type");  
  9.         for (i = 0; i < radios.length; i++) {  
  10.             if (radios[i].checked) {  
  11.                 formatType = radios[i].value;  
  12.                 break;  
  13.             }  
  14.         }  
  15.         var format = new formathtmljscss(sourceCon.value, size, formatType);  
  16.         format.formatcss();  
  17.         sourceCon.value = format.source;  
  18.     }  
  19.     tabsize.onchange = function () {  
  20.         size = this.options[this.options.selectedIndex].value;  
  21.         submitBtn.click();  
  22.         return false;  
  23.     }  

演示(請進原文)

原文鏈接:http://www.cnblogs.com/artwl/archive/2012/03/25/2416909.html

【編輯推薦】

  1. 10件有關JavaScript讓人費解的事情
  2. 面向對象的JavaScript基本知識指南大全
  3. 是時候開始使用JavaScript嚴格模式了
  4. 好用的高質量JavaScript庫一覽
  5. 一位反JavaScript主義者的覺醒
責任編輯:林師授 來源: Artwl的博客
相關推薦

2012-03-26 10:45:34

CSS

2018-12-03 09:10:07

Linux驅動器命令

2020-11-03 10:21:33

MySQL

2009-08-03 14:25:59

C#日期格式化

2013-02-01 10:14:14

Visual Stud

2024-01-08 22:03:22

python代碼開發

2022-05-09 08:17:37

InstantJava字符

2025-07-22 09:17:42

2010-08-03 15:36:38

FlexBuilder

2024-12-09 08:10:00

Python字符串格式化

2009-08-03 16:24:05

C#格式化

2010-07-29 11:12:30

Flex日期格式化

2013-07-08 17:41:53

Linux 系統U盤格式化

2023-06-13 07:50:49

Gopher格式化時間

2018-11-02 10:45:35

windowsU盤格式化

2015-01-07 15:21:30

Android Stu代碼格式化

2010-07-16 16:00:08

Perl格式化輸出

2010-07-16 15:44:57

Perl格式化輸出

2010-07-29 11:03:53

Flex代碼格式化

2010-10-28 15:32:42

oracle日期格式化
點贊
收藏

51CTO技術棧公眾號

国内精品国产成人国产三级| 在线看片中文字幕| 18aaaa精品欧美大片h| 不卡的av网站| 日韩男女性生活视频| 国产毛片欧美毛片久久久| 亚洲高清国产拍精品26u| 亚洲国产视频一区| 天堂资源在线亚洲视频| av中文字幕免费在线观看| 亚洲欧洲日本一区二区三区| 国产亚洲欧美日韩一区二区| 日本中文字幕在线不卡| 中文字幕在线免费观看视频| 国产精品国产精品国产专区不蜜 | av高清不卡| 最新国产成人在线观看| 国产一区二区三区av在线| 中文字幕av第一页| 99精品国产在热久久| 日韩有码在线观看| 中文字幕丰满乱子伦无码专区| 亚洲一区二区av| 疯狂蹂躏欧美一区二区精品| 中文字幕一区二区三区有限公司| 午夜国产在线观看| 国模少妇一区二区三区| 国产成人精品a视频一区www| 久久午夜无码鲁丝片| 日韩国产一区二区三区| 日韩电影第一页| 337p日本欧洲亚洲大胆张筱雨| 外国成人直播| 欧美日韩精品在线播放| 久操手机在线视频| 高潮毛片在线观看| 国产精品美女久久久久久 | 超碰av在线免费观看| av在线不卡免费| 亚洲美女视频在线| 一区二区精品在线观看| 国产粉嫩一区二区三区在线观看| 91免费视频网| 精品欧美日韩在线| 亚洲精品无码久久久| 国产美女主播视频一区| 国产伦精品一区二区三区精品视频| 国产91精品一区| 91久久视频| 久久久久久免费精品| 欧美另类视频在线观看| 亚洲欧美一级二级三级| 久国内精品在线| 欧美精品xxxxx| 欧美日韩亚洲一区在线观看| 三级精品视频久久久久| 成年人免费视频播放| 日韩一区二区中文| 色噜噜国产精品视频一区二区 | 1区2区3区国产精品| 亚洲mv在线看| 生活片a∨在线观看| 国产欧美日韩视频在线观看| 日韩偷拍一区二区| 91网页在线观看| 中文字幕制服丝袜成人av | av影片免费在线观看| 国产亚洲美州欧州综合国| 日韩国产美国| 免费不卡视频| 一区二区国产视频| 久久综合久久网| 日本在线高清| 91久久精品国产91性色tv| 日本a√在线观看| 亚洲成人毛片| 欧美va天堂va视频va在线| 无码国产精品久久一区免费| 国产人妖ts一区二区| 日韩国产精品视频| 精品国产人妻一区二区三区| 亚州综合一区| 夜夜嗨av一区二区三区四区| 日本伦理一区二区三区| 欧美成人一品| 欧美又大又硬又粗bbbbb| 久久久精品毛片| 国产一区二区免费看| 国产伦精品一区二区三区免| 男女污污视频在线观看| 最近中文字幕一区二区三区| 免费高清一区二区三区| 桃子视频成人app| 91精品免费在线| 在线观看av中文字幕| 日本女优一区| 欧美精品videossex88| 一级成人黄色片| 国产在线播放一区三区四| 加勒比在线一区二区三区观看| 第一页在线观看| 亚洲自拍偷拍欧美| 天天操天天爱天天爽| av不卡一区| 中文字幕一精品亚洲无线一区| 久久精品www| 日本不卡一区二区三区| 岛国视频一区| 麻豆视频在线播放| 欧美午夜激情在线| 中文字幕在线观看视频www| 色综合中文网| 97视频免费看| www.黄色片| 国产精品免费视频网站| 大肉大捧一进一出好爽视频| 日韩影片在线观看| 日韩网站免费观看| 亚洲 国产 日韩 欧美| 成人精品一区二区三区四区| 亚洲国产精品一区二区第一页| caoporn视频在线| 91精品久久久久久久久99蜜臂| xxxx日本免费| 夜夜精品视频| 国产66精品久久久久999小说| 欧美一区二区三区| 在线免费观看日韩欧美| 强迫凌虐淫辱の牝奴在线观看| 欧美在线国产| 成人午夜两性视频| eeuss影院www在线观看| 色美美综合视频| 老司机免费视频| 欧美日韩精品一本二本三本| 国产在线视频不卡| 三区四区电影在线观看| 欧美亚洲图片小说| 亚洲AV无码片久久精品| 亚洲一区二区动漫| 国产一区二区三区高清视频| bl在线肉h视频大尺度| 日韩精品中文字幕一区| 中文字幕影音先锋| 国产精品12区| 中国女人做爰视频| 国产精品一区免费在线| 久久色免费在线视频| 国产精品毛片一区视频播| 亚洲欧洲三级电影| 日韩av.com| 99久久99视频只有精品| 成人午夜黄色影院| 丝袜美女在线观看| 亚洲成人动漫在线播放| 日本一级淫片色费放| 成人视屏免费看| 免费在线观看视频a| 精品久久97| 欧美在线国产精品| 天堂网www中文在线| 一本久道久久综合中文字幕| 91成人在线免费视频| 男人操女人的视频在线观看欧美| 亚洲国产精品www| 国产一区二区三区国产精品| 欧美另类极品videosbestfree| 成 人 免费 黄 色| 亚洲va国产天堂va久久en| 日本护士做爰视频| 久久夜色精品| 在线国产精品网| 日本少妇精品亚洲第一区| 久久久爽爽爽美女图片| 欧美成人综合在线| 欧美精品久久99| 妺妺窝人体色www聚色窝仙踪| 懂色av一区二区三区免费看| 日本免费一级视频| 久久高清精品| 国产精品大全| 美女福利一区二区 | 在线三级中文| 亚洲激情视频网站| 中文字幕无线码一区| 亚洲激情男女视频| 亚洲熟妇一区二区三区| 蜜臀a∨国产成人精品| 国产欧美久久久久| 精品免费在线| 99久热re在线精品996热视频| 蜜桃视频www网站在线观看| 中文字幕亚洲综合| 特级丰满少妇一级aaaa爱毛片| 精品视频在线看| 国产亚洲自拍av| 欧美国产日韩在线观看| 国产免费无码一区二区| 日韩av电影天堂| 亚洲精品蜜桃久久久久久| 日韩精品影视| 韩国成人一区| 国产精品久久久久久久久久久久久久久 | 手机在线免费毛片| 亚洲综合社区| 日本xxxxx18| 国产一区二区亚洲| 国产不卡一区二区三区在线观看| 国产精品99| 91超碰中文字幕久久精品| 黄色免费在线观看网站| 亚洲免费小视频| www.com在线观看| 欧美日韩不卡一区| 黄色片网站在线免费观看| 亚洲精品美腿丝袜| 狂野欧美性猛交| 久久久99久久| 久久偷拍免费视频| 岛国av在线一区| 中文字幕第一页在线视频| 亚洲欧美春色| 久久99久久99精品| 欧美黄色aaaa| 国产精品jizz在线观看老狼| 欧美一站二站| 欧美资源一区| 亚洲精品播放| 久久99精品久久久久久水蜜桃| 国产精品**亚洲精品| 成人精品久久av网站| 欧美成a人片在线观看久| 91av视频在线免费观看| 丰满的护士2在线观看高清| 久热精品视频在线观看| 一级日本在线| 色多多国产成人永久免费网站 | 久久精品小视频| 91官网在线| 色av吧综合网| 黄色网在线播放| 另类图片亚洲另类| 福利视频在线| 免费99精品国产自在在线| 黄网页免费在线观看| 久久久精品一区| a免费在线观看| 欧美成人午夜影院| 亚洲第一图区| 欧美激情在线狂野欧美精品| 激情av在线| 国内精品视频久久| 精精国产xxxx视频在线野外| 久久久久中文字幕2018| 国产精品yjizz视频网| 91精品国产91久久久| 狠狠操一区二区三区| 日本免费在线精品| 无人区在线高清完整免费版 一区二| 日本亚洲精品在线观看| 亚洲第一会所| yourporn久久国产精品| 蜜桃导航-精品导航| 亚洲肉体裸体xxxx137| 欧美精品人人做人人爱视频| 香蕉久久精品日日躁夜夜躁| 欧美日韩免费观看一区| 国产欧美日韩| 在线观看日韩片| 这里只有精品在线| 久久久久久免费看| 免费精品视频| 岛国av在线免费| 国产一区二区精品久久99| 国产成人精品一区二区在线小狼| 成人av免费在线| 天天躁日日躁aaaxxⅹ| 国产精品久久久久婷婷二区次| av激情在线观看| 性做久久久久久免费观看| 日本中文字幕在线| 欧美精品乱码久久久久久| 丰满肉嫩西川结衣av| 日韩精品视频免费专区在线播放| av在线播放网站| 欧美大肥婆大肥bbbbb| 波多野结衣视频一区二区| 国产成人精品在线观看| 精品视频国内| 久久99蜜桃综合影院免费观看| 狠狠做六月爱婷婷综合aⅴ| 久久最新免费视频| 在线亚洲一区| 欧美一级小视频| 99久久er热在这里只有精品15| 99久久99久久精品免费看小说.| 一区二区三区精品视频在线| 探花视频在线观看| 日韩精品在线网站| 国产三级在线看| 久久免费福利视频| 久久久久久久性潮| 韩国一区二区三区美女美女秀| 成人网18免费网站| 国产精品无码人妻一区二区在线| 九九九久久久精品| 黄色在线观看av| 一区二区三区不卡在线观看| 成人毛片一区二区三区| 精品国产亚洲一区二区三区在线观看 | caoporn免费在线| 日韩av免费看| 波多野结衣欧美| 中文字幕综合在线观看| 久久久久久网| 国产十八熟妇av成人一区| 亚洲欧美另类在线| 特级西西444www大胆免费看| 亚洲国产高清自拍| 在线免费观看a视频| 国产精品日韩在线观看| 日本欧美高清| 亚洲人成无码网站久久99热国产| 精东粉嫩av免费一区二区三区| 精品欧美一区二区久久久| 亚洲福利一二三区| 99久久精品无免国产免费 | 日本性爱视频在线观看| 国产精品日韩久久久久| 亚洲人成精品久久久| 欧美精品久久久久久久自慰| 国产麻豆午夜三级精品| 少妇愉情理伦三级| 欧洲中文字幕精品| 九色在线免费| 日韩av免费在线| 亚洲裸色大胆大尺寸艺术写真| 日本人体一区二区| 成人久久18免费网站麻豆| 九九热国产在线| 日韩欧美一二区| 色帝国亚洲欧美在线| 亚洲一区国产精品| 欧美一区二区三区免费看| 激情在线观看视频| 成人免费在线视频观看| 国产农村妇女毛片精品久久| 日韩在线播放视频| 久久久噜噜噜久噜久久| 日本在线xxx| 在线观看wwwxxxx| 欧美—级a级欧美特级ar全黄| 亚洲国产aⅴ精品一区二区三区| 亚洲国产高清国产精品| 日本网站在线观看一区二区三区 | 亚洲精品少妇网址| 午夜影院在线播放| 蜜桃成人免费视频| 日韩精品一级中文字幕精品视频免费观看 | abab456成人免费网址| 欧美在线激情| 蜜臀av一区二区在线免费观看 | 91看片破解版| 亚洲欧美偷拍另类a∨色屁股| www.黄色国产| 7777免费精品视频| 精品国产一区二区三区av片| 婷婷丁香激情网| 一区在线观看视频| 精品国产18久久久久久| 午夜精品久久久久久久久久久久| 亚洲免费成人av在线| 五月婷婷激情久久| 亚洲婷婷综合色高清在线| 亚洲欧美黄色片| 日本精品在线视频| 97久久夜色精品国产| 在线观看你懂的视频| 午夜电影一区二区三区| 黑人与亚洲人色ⅹvideos| 成人在线视频网站| 亚洲高清电影| 亚洲无人区码一码二码三码的含义| 欧美日韩1区2区| 国产区美女在线| 日韩高清三级| 国产91精品久久久久久久网曝门 | 成人黄动漫网站免费| 久久av一区| 国产真实乱在线更新| 亚洲国产精品女人久久久| 国产成人免费9x9x人网站视频| 日韩精品第1页| 26uuu成人网一区二区三区| 97成人在线观看| 5566日本婷婷色中文字幕97| 久久在线免费| 99久久国产精| 日韩一区二区免费在线观看| 91久久国产综合久久91猫猫|