iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >怎么用原生JS进行CSS格式化和压缩
  • 887
分享到

怎么用原生JS进行CSS格式化和压缩

2024-04-02 19:04:59 887人浏览 八月长安
摘要

本篇内容介绍了“怎么用原生js进行CSS格式化和压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前&nb

本篇内容介绍了“怎么用原生js进行CSS格式化和压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

前  言

一直比较喜欢收集网页特效,很多时候都会遇到CSS被压缩过的情况,这时查看起来就会非常不方便,有时为了减少文件大小,也会对自己的CSS进行压缩,网上提供这样服务的很多,但都不尽如人意,因此打算自己动手写一个JS来进行CSS的格式化和压缩。

原  理

CSS的结构如下:

选择器{  css属性声明:值;  }

所以对CSS格式化也就比较简单,大致分为以下几步;

1、把多个空格合并成一个,去掉换行

2、对处理后的字符串按"{"进行分组

3、遍历分组,对含有"}"的部分再次以"}"进行分组

4、对分组后的数据进行处理,主要是加上空格和换行

对CSS压缩就比较简单了,把空格合并,去掉换行就可以了

格式化

下面分步对以上步骤进行实现。

初始化:

function fORMathtmljscss(source, spaceWidth, formatType) {      this.source = source;      this.spaceStr = "    ";      if (!isNaN(spaceWidth)) {          if (spaceWidth > 1) {              this.spaceStr = "";              for (var i = 0; i < spaceWidth; i++) {                  this.spaceStr += " ";              }          }          else {              this.spaceStr = "\t";          }      }      this.formatType = formatType;      this.output = [];  }

这里几个参数分别是要格式化的CSS代码、CSS属性声明前空格宽度,类型(格式化/压缩)

1、把多个空格合并成一个,去掉换行:

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

2、对处理后的字符串按"{"进行分组

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

3、遍历分组,对含有"}"的部分再次以"}"进行分组

formathtmljscss.prototype.split = function () {      var bigqleft = this.source.split("{");      var bigqright;      for (var i = 0; i < bigqleft.length; i++) {          if (bigqleft[i].indexOf("}") != -1) {              bigqright = bigqleft[i].split("}");          }          else {                       }      }  }

4、对分组后的数据进行处理,主要是加上空格和换行

这里的处理主要分为,把CSS属性声明和值部分取出来,然后加上空格和换行:

formathtmljscss.prototype.split = function () {      var bigqleft = this.source.split("{");      var bigqright;      for (var i = 0; i < bigqleft.length; i++) {          if (bigqleft[i].indexOf("}") != -1) {              bigqright = bigqleft[i].split("}");              var pv = bigqright[0].split(";");              for (var j = 0; j < pv.length; j++) {                  pv[j] = this.formatStatement(this.trim(pv[j]),true);                  if (pv[j].length > 0) {                      this.output.push(this.spaceStr + pv[j] + ";\n");                  }              }              this.output.push("}\n");              bigqright[1] = this.trim(this.formatSelect(bigqright[1]));              if (bigqright[1].length > 0) {                  this.output.push(bigqright[1], " {\n");              }          }          else {              this.output.push(this.trim(this.formatSelect(bigqleft[i])), " {\n");          }      }  }

这里调用了几个方法:trim、formatSelect、formatStatement,下面一一说明。

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

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

formatSelect:是处理选择器部分语法,做法就是给"."前面加上空格,把","前后的空格去掉,把多个空格合并为一个:

formathtmljscss.prototype.formatSelect = function (str) {      return str.replace(/\./g, " .")          .replace(/\s+/g, " ")          .replace(/\. /g, ".")          .replace(/\s*,\s*/g, ",");  }

formatStatement:是处理“css属性声明:值;”部分的语法,做法就是给":"后面加上空格,把多个空格合并为一个,去掉“#”后面的空格,去掉"px"前面的空格,去掉"-"两边的空格,去掉":"前面的空格:

formathtmljscss.prototype.formatStatement = function (str, autoCorrect) {      str = str.replace(/:/g, " : ")          .replace(/\s+/g, " ")          .replace("# ", "#")          .replace(/\s*px/ig, "px")          .replace(/\s*-\s*/g, "-")          .replace(/\s*:/g, ":");       return str;  }

调  用

调用部分比较简单,对于格式化来说就是去掉空格和换行,然后分组处理,对于压缩来说就是去掉空格和换行:

formathtmljscss.prototype.formatcss = function () {      if (this.formatType == "compress") {          this.removeSpace();      }      else {          this.removeSpace();          this.split();          this.source = this.output.join("");      }  }

界面HTML代码:

<div id="content">         <div class="container">             <div class="box">                 <div class="main">                     <h3>CSS格式化/压缩</h3>                     <div id="blurb">                         <fieldset id="options">                             <button id="submit">                                 <span>格式化 / 压缩&nbsp;&nbsp;<img alt="格式化" src="/images/29.png"/></span>                             </button><br/>                             <span>缩进:</span>                             <ul>                                 <li>                                     <select name="tabsize" id="tabsize">                                         <option value="1">tab键缩进</option>                                         <option value="2">2空格缩进</option>                                         <option selected="selected" value="4">4空格缩进</option>                                     </select>                                 </li>                             </ul><br />                             <span>类型:</span><br />                             <input type="radio" name="format_type" value="format" checked="checked" id="format_format" /><label for="format_format">格式化</label>                             <input type="radio" name="format_type" value="compress" id="format_compress" /><label for="format_compress">压缩</label>                         </fieldset>                     </div>                     <div id="beauty">                         <fieldset id="textarea-wrap">                             <textarea rows="20" cols="40" id="source"></textarea>                         </fieldset>                     </div>                 </div>             </div>         </div>     </div>

跟页面元素按钮绑定事件:

window.onload = function () {      var submitBtn = document.getElementById("submit");      var tabsize = document.getElementById("tabsize");      var sourceCon = document.getElementById("source");      var size = 4;      var formatType = "format";      submitBtn.onclick = function () {          var radiOS = document.getElementsByName("format_type");          for (i = 0; i < radios.length; i++) {              if (radios[i].checked) {                  formatType = radios[i].value;                  break;              }          }          var format = new formathtmljscss(sourceCon.value, size, formatType);          format.formatcss();          sourceCon.value = format.source;      }      tabsize.onchange = function () {          size = this.options[this.options.selectedIndex].value;          submitBtn.click();          return false;      }  }

“怎么用原生JS进行CSS格式化和压缩”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么用原生JS进行CSS格式化和压缩

本文链接: https://www.lsjlt.com/news/77749.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 原生JS怎么进行CSS格式化和压缩
    这篇文章主要介绍“原生JS怎么进行CSS格式化和压缩”,在日常操作中,相信很多人在原生JS怎么进行CSS格式化和压缩问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”原生JS怎么...
    99+
    2024-04-02
  • 怎么用原生JS进行CSS格式化和压缩
    本篇内容介绍了“怎么用原生JS进行CSS格式化和压缩”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前&nb...
    99+
    2024-04-02
  • webpack中怎么打包压缩js和css文件
    这篇文章将为大家详细讲解有关webpack中怎么打包压缩js和css文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。打包压缩js与css由于webpack...
    99+
    2024-04-02
  • 怎么用Powerpoint进行视频压缩
    本篇内容主要讲解“怎么用Powerpoint进行视频压缩”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Powerpoint进行视频压缩”吧!下面是详细步骤。 创建一个空的powerpoin...
    99+
    2023-06-04
  • 利用Java怎么对文件进行压缩与解压缩
    今天就跟大家聊聊有关利用Java怎么对文件进行压缩与解压缩,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。用java压缩/解压文件: import java.io.*; im...
    99+
    2023-05-31
    java ava
  • 使用Java怎么对字符串进行压缩与解压缩
    本篇文章给大家分享的是有关使用Java怎么对字符串进行压缩与解压缩,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java可以用来干什么Java主要应用于:1. web开发;2....
    99+
    2023-06-06
  • 怎么利用Node进行图片压缩
    怎么利用Node进行图片压缩?下面本篇文章以PNG图片为例给大家介绍一下进行图片压缩的方法,希望对大家有所帮助!最近要搞图像处理服务,其中一个是要实现图片压缩功能。以前前端开发的时候只要利用canvas现成的API处理下就能实现,后端可能也...
    99+
    2023-05-14
    图片压缩 Node.js
  • 利用java怎么对图片进行压缩与缩放
    这篇文章将为大家详细讲解有关利用java怎么对图片进行压缩与缩放,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。压缩public static boolean c...
    99+
    2023-05-31
    java ava
  • 使用canvas怎么对图片进行压缩
    本篇文章为大家展示了使用canvas怎么对图片进行压缩,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前提的函数将file文件转化为base64function changeFileToBa...
    99+
    2023-06-09
  • java中怎么利用7zip对压缩包进行解压的
    java中怎么利用7zip对压缩包进行解压的?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。7zip命令行7z <command> [<switches&g...
    99+
    2023-05-31
    java ava 7zip
  • 使用java怎么对BigDecimal进行格式化
    使用java怎么对BigDecimal进行格式化?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合...
    99+
    2023-06-14
  • Android应用中怎么对图片进行压缩
    Android应用中怎么对图片进行压缩?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。为何要压缩体积的原因如果你的图片是要准备上传的,那动辄几M的大小肯定不行的,况且图片分辨率大...
    99+
    2023-05-31
    android roi
  • 怎么利用R语言解压与压缩.tar.gz.zip等格式文件
    这篇文章主要讲解了“怎么利用R语言解压与压缩.tar.gz.zip等格式文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么利用R语言解压与压缩.tar.gz.zip等格式文件”吧!.zi...
    99+
    2023-06-25
  • 怎么利用css进行首行缩进2个字符
    这篇文章主要介绍“怎么利用css进行首行缩进2个字符”,在日常操作中,相信很多人在怎么利用css进行首行缩进2个字符问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么利用css进行首行缩进2个字符”的疑惑有所...
    99+
    2023-06-07
  • 怎么使用python对图片进行批量压缩
    本篇内容主要讲解“怎么使用python对图片进行批量压缩”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用python对图片进行批量压缩”吧!使用Python和Pillow模块压缩图片Pil...
    99+
    2023-07-02
  • css怎么使用scale()方法进行缩放
    今天小编给大家分享一下css怎么使用scale()方法进行缩放的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、缩放是指缩放...
    99+
    2023-06-30
  • Python3中怎么对日期进行格式化
    这篇文章主要介绍“Python3中怎么对日期进行格式化”,在日常操作中,相信很多人在Python3中怎么对日期进行格式化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python3中怎么对日期进行格式化”的疑...
    99+
    2023-06-27
  • js中日期格式化format怎么用
    这篇文章主要介绍js中日期格式化format怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!javascript是一种什么语言javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对安全性并...
    99+
    2023-06-14
  • H5界面怎么生成PDF格式进行输出
    本文小编为大家详细介绍“H5界面怎么生成PDF格式进行输出”,内容详细,步骤清晰,细节处理妥当,希望这篇“H5界面怎么生成PDF格式进行输出”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • SpringBoot怎么对LocalDateTime进行格式化并解析
    这篇“SpringBoot怎么对LocalDateTime进行格式化并解析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sp...
    99+
    2023-07-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作