一、引言SCSS 是 Sass(Syntactically Awesome Stylesheets)的其中一种语法,是一种预处理器脚本语言,能够扩展 CSS 的功能,使其更加强大和高效。...SCSS 保留了 CSS 的原有语法,同时增加了变量、嵌套规则、混合宏(mixin)、继承等高级功能。本文将详细介绍 SCSS 的基本使用方法,帮助读者快速上手并掌握 SCSS 的核心概念和技巧。...插值插值允许将变量或表达式的结果插入到选择器名称、属性名称或属性值中。...// gulpfile.jsconst gulp = require('gulp');const sass = require('gulp-sass')(require('sass'));gulp.task...通过变量、嵌套、混合宏、继承等特性,SCSS 大大简化了样式表的编写和维护工作。本文详细介绍了 SCSS 的基本语法和使用方法,并提供了一些进阶技巧和工具,帮助读者更好地掌握和应用 SCSS。
BootStrap原本最常用的布局栅格化系统在做响应式开发的时候比较方便,但是只针对于移动端开发的时候并没有多大用处了,流行的Flex布局应用越来越广泛。...首先将变量改为true $enable-flex: true; 然后阅读源码可以发现有两个公用的scss文件是必须引入的。 variables和breakpoints,我们先将他们引入。...@import "variables"; @import "breakpoints"; 然后观察带有flex的代码,只发现了在utilities文件夹中有相关内容,跑不了了,那就是它,复制到同一路径,引入一下...然后生成一个.babelrc文件,因为我们要用es2015的语法,内容。...'; import sass from 'gulp-sass'; import sourcemaps from 'gulp-sourcemaps'; import del from 'del'; import
三、Sass的语法格式及编译调试 1 Sass 语法格式 1.1 概述 Sass 语法格式比较严格,没有大括号和分号 这里说的 Sass 语法是 Sass 的最初语法格式,他是通过 tab 键控制缩进的一种语法规则...另外其不带有任何的分号和大括号。常常把这种格式称为 Sass 老版本,其文件名以“.sass”为扩展名。 来看一个 Sass 语法格式的简单示例。...在此特别提醒新同学:“.sass”只能使用 Sass 老语法规则(缩进规则),“.scss”使用的是 Sass 的新语法规则,也就是 SCSS 语法规则(类似 CSS 语法格式)。...= require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('....样式风格的选择完全是个人喜好问题,可以根据自己喜欢的风格选择参数。
一旦包被找到,我们就将它里面内容赋值到变量gulp中。 我们现在可以开始使用gulp变量写一个gulp任务。...gulp.src告诉Gulp任务,所要使用的文件。gulp.dest`告知当任务完成后,Gulp输出文件的地址。 让我们来尝试构造一个真实的任务,将Sass文件编译成CSS文件。...这个文件将会被加入到sass任务中的gulp.src中。 我们想输出最后的styles.css文件到app/css文件夹,我们就要将其加入到gulp.dest的destination处。...second-stylesheet.png 我们现在可以通过一个命令,管理所有Sass文件编译成CSS文件。但是问题是,有什么可以让我们不用每次都手动运行gulp sass,将Sass编译成CSS?...开发者面对一个问题是,当自动化运行这个进程时,很难将你的脚本串联成正确的顺序。
我们在网站上引用的是生成的CSS。因此,使用CSS拓展语言并不会产生额外的浏览器兼容性问题。...或者可以参考该项目的做法:用Gulp及插件来做。 当启动Gulp的任务后,src下的scss文件变化时,就会将scss文件编译成对应的CSS。...Sass的基本语法 Sass语法规则有两种,一种是通过tab键控制缩进的语法规则(缩进要求非常严格),这种语法对于熟悉Ruby的同学来说会非常的方便和喜欢。...这种语法的Sass文件是以.sass后缀命名。另一种语法是SCSS,这是Sass的新的语法规则,他的外观和CSS的一模一样,文件后缀是.scss。...@import "path/filename.scss"; 输出调试信息 @debug, @warn, @error。 调试信息均输出在命令行里。他们的区别只是信息的等级不同而已。
css效率; 缺少统一的request拦截请求; 缺少统一的路由管理; 缺少集中式的API地址和ENV环境变量管理; 缺少统一的本地缓存读取管理; 重复的webview页面; 不支持ES7以上的高级语法...解决import导入问题 那如何解决import的导入问题呢,其实也比较简单,说白了就是sass处理的时候,让其不处理import部分的语句就可以了。...需要注意的一点是,如果需要在webvie链接拼接获取的参数,在某些安卓机型会因为提前渲染webview而src地址没有初始化而产生白屏,所以最好的方式是通过一个变量控制组件的展示隐藏,确保需要渲染组件时数据已经初始化完成以保证页面正常展示...如何解决多环境切换问题 小程序不像h5网页只要部署到对应环境,就可以随意输入指定的环境域名进行测试,而小程序像app一样没有网址这一说,它本身只会存在一个预览版本,普通的流程是每次当测试同学需要在不同环境中测试时就需要找到开发同学手动更改环境并重新发布体验版...如何自动打包部署环境,防止手动配置易出错的问题 在这里其实还是要用到gulp这个神器,来实现不同环境的代码打包,配置起来很容易,无非就是通过gulp-replace在打包的时候对app.js的环境变量进行配置
CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题 解决的问题 嵌套规则:通过花括号的方式解决复杂的css父子样式嵌套问题。...Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名 语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的...在书写 Sass 时不带有大括号和分号,其主要是依靠严格的缩进方式来控制的。...Sass 的变量包括三个部分: 声明变量的符号“$” 变量名称 赋予变量的值 变量定义之后可以在全局范围内使用。...,有点类似 CSS 中的 @media、@font-face 一样。
其次,你对 PostCSS 的插件机制一定要深入了解,因为整个迁移过程肯定会出现问题。 然后如果决定迁移,先调查下自己或团队的 Sass 使用习惯,然后对比 PostCSS 的实现。...一种是平稳迁移,保持 Sass 的风格不变(如变量、mixin等);另一种就是全部换成 PostCSS 格式。相对来说老的大项目建议使用平稳迁移,不然时间成本太大。...迁移步骤 1、确定使用什么构建 webpack:postcss-loader(推荐使用) gulp:gulp-postcss 2、挑选 PostCSS 插件 首先统计常用 Sass 功能,查找对应的 PostCSS...挑选未来语法的插件: postcss-preset-env (cssnext已经不再维护了,所以不推荐) 以下是我挑选的一些插件,挑选的原则是:优先 CSS 新标准,兼容 Sass 语法,插件之间不冲突...如果你的目的是平稳过度,且以后使用未来标准语法,那么对于一些基础的变量得使用新的标准语法重新定义一份。 下面是一些我迁移过程中遇到的部分不支持问题: ?
有用过Sass 这类CSS 预处理器都知道10s+ 意味着什么,你每保存一次.scss 文件,都必须等上10s 以上才能看到你所改动的效果。如此一来十分尴尬,因为你直接写原生的CSS 语法比这还快。...初级玩家的玩法 Gulp 工作流中集成Sass 编译一般都是用gulp-sass 这个模块,本质上gulp-sass 调用的是node-sass(C++ 版的Sass)。...如此如果按照上面的方案,当a.scss @import 了_c.scss,而当你改动了_c.scss,在上面的机制下,a.scss 的出口文件a.css 是没有被相应更新到的。...上面这种粗暴的增量更新机制并没有考虑到Sass 中存在的依赖关系。...Gulp 4 到现在两年多了一直都没有正式版(2018.1.1更新:已经发布,详情),但用在生产环境中其实是一点问题都没有(就是安装的时候麻烦些)。
Gulp侧重于前端开发的整个过程的控制管理(像是流水线),我们可以通过给gulp配置不通的task(通过Gulp中的gulp.task()方法配置,比如启动server、sass/less预编译、文件的合并压缩等等...)、编译(complie)、压缩、重命名等处理后输出(gulp.dest)到指定目录中去,为了构建而打包 | 对入口文件( entry )递归解析生成依赖关系图,然后将所有依赖打包在一起,在打包之前会将所有依赖转译成可打包的...但这个优点可能会随着 HTTP/2 的流行而变得不那么突出,因为 HTTP/2 的多路复用可以有效解决客户端并行请求时的瓶颈问题。...作为CSS的一种形式的扩展,它并没有减少CSS的功能,而是在现有的CSS语法上,为CSS加入程序式语言的特性。 在Webpack中可以使用less-loader加载器来打包处理Less文件。...,这些高级语法存在兼容性的问题。
gulp-notify": "^2.2.0", "gulp-rename": "^1.2.2", "gulp-ruby-sass": "^2.0.6", "gulp-sitemap...有一点需要注意的地方,gulp-ruby-sass需要有ruby语言环境,这是安装传送门Ruby,一般Mac会自带Ruby。...) imagemin = require('gulp-imagemin') sass = require('gulp-ruby-sass') minifycss = require...压缩,最后输出到指定到目录gulp.dest。...gulp.task 'styles', -> return sass('.
Gulp和Webpack功能实现对比 简单介绍了一下Gulp和Webpack的概念性的问题和大环境,接下来进入本文的主题,对比一下Gulp和Webpack的优缺点。.../build/prd/styles/'));//编译后的输出路径 }); //3.对sass文件的修改添加监听事件 gulp.task('watch',function()...文件后,就会利用我们配置的**sass-loader**去加载,然后用**node-sass**去解析编译成普通的css语法的样式文件,在然后就是利用**style-loader**将样式以内联样式的形式配置到...在命令行中启动server ```js $ webpack-dev-server ``` 然后你就会看见命令行输出内容很多,只要看看保证没有Error就说明成功了。 4..../prd/scripts目录下的bundle.js(合并压缩后的输出文件)文件,可以发现内容并没有编译(对于Webpack还是不熟悉,好多问题等待解决)。
Sass的原理 Sass本质就是在CSS的语法的基础上增加了自定义的变量、循环、分支、函数、mixin、继承、运算等功能,让CSS编程变得异常强大。 当然浏览器是不认识Sass语法。...开发人员写完了Sass的语法文件后需要通过工具转成原始的CSS代码。...Sass的编译环境 Sass代码的编译转换工具可以用sass命令行工具、gulp、开发工具插件、webpack等。 我推荐大家学习阶段直接用开发工具的插件自动生成即可。...//文件后缀名为sass的语法 body background: #eee font-size:12px p background: #0982c1 //文件后缀名为scss的语法 body...//sass style //------------------------------- %ir { // 定义占位符。没有选择器名字的一段代码而已。
没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。...是一种动态样式语言,Sass 语法属于缩排语法,比 CSS 多出变量、嵌套、运算、混入(Mixin)、继承、颜色处理、函数等功能,更容易阅读。 ...Less 并没有丢掉 CSS 原有的语法与特性,更不是用来取代 CSS 的,而是在现有 CSS 语法的基础上,为 CSS 加入动态语言的特性。 ...输出设置,Less 没有输出设置,Sass 提供 4 种输出选项:nested/compact/compressed/expanded,输出样式的风格可以有 4 种选择,默认为 nested。...Less 中的变量运算可以带或不带单位,Sass 需要带单位。
弱类型语言, 对语法要求没那么严格 # 一、注释 Sass 支持标准的 CSS 多行注释 /* */,以及单行注释 //,前者会被完整输出到编译后的 CSS 文件中,而后者则不会。 将 !...default 可以在变量的结尾添加 !default 给一个未通过 !default 声明赋值的变量赋值,此时,如果变量已经被赋值,不会再被重新赋值,但是如果变量还没有被赋值,则会被赋予新的值。...如果不在上述情况内,文件的拓展名是 .scss 或 .sass,则导入成功。没有指定拓展名,Sass 将会试着寻找文件名相同,拓展名为 .scss 或 .sass 的文件并将其导入。...@error 用于报错,按标准错误输出流输出 序列 @-rules 作用 1 @import 导入 sass 或 scss 文件 2 @media 用于将样式规则设置为不同的媒体类型 3 @extend...混合指令可以包含所有的 CSS 规则,绝大部分 Sass 规则,甚至通过参数功能引入变量,输出多样化的样式。 注意:这不是函数!没有返回值!!
")); } exports.default = build; gulp-rename: 可以便捷的在输出编译产物到文件中时对文件命名进行调整,已适应不同的场景。...: 可以在我们构建 JavaScript 代码后进行压缩来减小输出产物的体积。...(); return src("src/*.js") .pipe(uglify()) .pipe(dest("output")); } gulp-sass: 将我们编写的 sass 文件编译为浏览器可以正常识别的...css 文件,我们要同时安装 sass 和 gulp-sass 插件。...const sass = require('gulp-sass')(require('sass')); 下面的代码是 sass 教程的第一块内容,将变量插入到最后编译的结果中。
,每一任务文件不与其他文件产生直接交互,并通过赋值的方式在文件内部调用全局变量,下图是我们整个项目的目录结构,在文章的接下来部分,将会给大家详细讲解 图片 文件结构 我们先来简单介绍下我们的文件目录结构...这一插件集合,在这里想要跟大家介绍的是,PostCSS 是一个使用 JS 解析样式的插件集合,它可以用来审查 CSS 代码,也可以增强 CSS 的语法(比如变量和混合宏),还支持未来的 CSS 语法、...是一个代码审查插件,除了审查 CSS 语法外,还能审查类 CSS 语法,帮助我们审查出重复的 CSS 样式、不规范的代码、无效颜色值、无意义的浏览器前缀以及我们所配置的一些审查规则,我们可以根据自身项目的需求来设置不同的规则...使用 CSS 未来的语法 precss 预处理插件包,可实现像 Less、Sass 预处理器的功能 postcss-color-rgba-fallback 给 rgba() 颜色添加一个十六进制的颜色作为降级处理...}); 图片 我们之前介绍过 Less 在 Gulp 的用法,这里再贴一下 Sass 的部分,相对于直接将 Sass 转换成 CSS,我们还加入了 PostCSS 的一些插件 // sass.js const
常用Api gulp 的常用 API + 前提: 下载 gulp 第三方, 导入以后使用 1. gulp.task() => 语法: gulp.task(任务名称, 任务处理函数) =>.../abc') -> 把他接收到的内容放到 abc 目录下 4. gulp.watch() => 语法: gulp.watch(路径信息, 任务名称) => 作用: 监控指定目录下的文件...=> 直接再管道函数里面使用, 需要传递参数 -> { browsers: [要兼容的浏览器] } 3. gulp-sass => 下载: npm i gulp-sass -D...3. $ npm i gulp-sass -D => 导入: const sass = require('gulp-sass') => 导入以后得到一个可以处理流文件的函数, 直接再管道函数里面执行就可以了...') => 导入以后得到一个可以处理流文件的函数 => 直接再管道函数中使用就可以了 => 注意: 你不能写 ES6 语法, 一旦有了 ES6 语法就会报错 5. gulp-babel
领取专属 10元无门槛券
手把手带您无忧上云