本来想自己写一篇关于vue入门的文章。但是看到链接的文章后,觉得写得太详细了,实在有保存下来的必要。后面可能在这篇文章基础上,有所内容的增加。

  1. CSS预处理器

定义了一种新的专门的编程语言,编译后成正常的CSS文件。为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代码的维护等诸多好处。
CSS预处理器语言:scss(sass)、LESS等;
2.Sass和SCSS的区别
文件扩展名不同:“.sass”和“.scss”;
Sass是以严格缩进式语法规则来书写的,不带大括号和分号;而SCSS的语法和CSS书写语法类似。
3.Sass安装(Windows版)
先安装ruby:Ruby 的官网(http://rubyinstaller.org/down...)下载对应需要的 Ruby 版本
Paste_Image.png
安装sass:
方法一(通过命令安装sass):打开命令终端,输入:gem install sass
方法二(本地安装sass):从http://rubygems.org/gems/sass 下载sass安装包,然后在终端输入: “gem install <把下载的安装包拖到这里>” 然后直接额回车即可安装成功。
4.scss语法格式
css代码:

  1. body {
  2. font: 100% Helvetica, sans-serif;
  3. color: #333;
  4. }

使用scss代码:

  1. $font-stack: Helvetica, sans-serif;
  2. $primary-color: #333;
  3. body {
  4. font: 100% $font-stack;
  5. color: $primary-color;
  6. }

tip:如果使用sass旧语法(sass语法),文件后缀名应为“.sass”;如果使用sass新语法(scss语法),文件后缀名应为".scss“语法,否则编译时编译不出来。

  1. sass编译

5.1 sass编译的方法:
命令编译
GUI工具编译
自动化编译
5.1.1 sass命令编译(在命令终端输入sass指令来编译sass,最直接,最简单)
单文件编译:

  1. sass <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

多文件编译:

  1. sass sass/:css/

上面的命令表示将项目中“sass”文件夹中所有“.scss”(“.sass”)文件编译成“.css”文件,并且将这些 CSS 文件都放在项目中“css”文件夹中。

缺点及解决方法:
缺点:每次保存scss文件后都要重新编译太麻烦;
解决方法:开启“watch”功能:

  1. sass --watch <要编译的Sass文件路径>/style.scss:<要输出CSS文件路径>/style.css

tip:文件路径不要带中文,如果有中文,watch功能无法正常使用。
6.sass嵌套输出方式nested
只要在编译的时候带上参数“ --style nested”:

  1. sass --watch test.scss:test.css --style nested

7.sass展开输出方式expanded
在编译的时候带上参数“ --style expanded”:

  1. sass --watch test.scss:test.css --style expanded

8.sass展开输出方式compact

在编译的时候带上参数“ --style compact”:

  1. sass --watch test.scss:test.css --style compact

9.sass展开输出方式compressed
在编译的时候带上参数“ --style compressed”:

  1. sass --watch test.scss:test.css --style compressed

10.sass变量声明
$+变量名+:+变量值;

$width:200px;
11.普通变量和默认变量
普通变量声明后可以在全局范围内使用;
默认变量仅需在值后面加上!default 即可;
默认变量一般是用来设置默认值,然后根据需求来覆盖的,覆盖的方式是在默认变量之前重新声明下变量即可。默认变量的价值在进行组件化开发的时候会非常有用。

  1. $baseLineHeight: 2;
  2. $baseLineHeight: 1.5 !default;
  3. body {
  4. line-height: $baseLineHeight;
  5. }

编译后的CSS代码:

  1. body {
  2. line-height:2;
  3. }

12.局部变量和全局变量
局部变量:在元素里面声明的变量;
全局变量:在元素外面定义的变量;
全局变量的影子:和全局变量名字相同的局部变量叫做全局变量的影子。

  1. $color:green;//全局变量
  2. $width:200px;//全局变量
  3. $height:200px;//全局变量
  4. body {
  5. background-color:$color;//调用全局变量
  6. }
  7. div {
  8. $color:yellow;//定义局部变量,全局变量$color的影子
  9. .div {
  10. background-color:$color;//调用局部变量
  11. width:$width;//调用全局变量
  12. height:$height;//调用全局变量
  13. }
  14. }

13.sass嵌套
13.1 选择器嵌套

  1. <header>
  2. <nav>
  3. <a href="#">home</a>
  4. <a href="#">page</a>
  5. </nav>
  6. </header>
  7. css:
  8. nav a {
  9. color:red;
  10. }
  11. header nav a {
  12. color:green;
  13. }
  14. scss:
  15. nav {
  16. a {
  17. color: red;
  18. header & {
  19. color:green;
  20. }
  21. }
  22. }

13.2 属性嵌套(有相同的属性前缀)

  1. css:
  2. .box {
  3. font-size: 12px;
  4. font-weight: bold;
  5. }
  6. scss:
  7. .box {
  8. font: {
  9. size: 12px;
  10. weight: bold;
  11. }
  12. }

13.3 伪类嵌套

  1. scss:
  2. .clearfix{
  3. &:before,
  4. &:after {
  5. content:"";
  6. display: table;
  7. }
  8. &:after {
  9. clear:both;
  10. overflow: hidden;
  11. }
  12. }
  13. css:
  14. clearfix:before, .clearfix:after {
  15. content: "";
  16. display: table;
  17. }
  18. .clearfix:after {
  19. clear: both;
  20. overflow: hidden;
  21. }
  1. sass混合宏

14.1 声明混合宏

  1. @mixin border-radius {
  2. -webkit-border-radius: 5px;
  3. border-radius: 5px;
  4. }

@mixin :声明混合宏的关键词;
border-radius:混合宏的名称;
大括号内:复用的样式代码;

14.2 调用混合宏

  1. @mixin border-radius{
  2. -webkit-border-radius: 3px;
  3. border-radius: 3px;
  4. }//声明混合宏border-radius
  5. button {
  6. @include border-radius;
  7. }//调用混合宏border-radius

编译为CSS:

  1. button {
  2. -webkit-border-radius: 3px;
  3. border-radius: 3px;
  4. }

14.3 混合宏的参数
不带任何值的参数

  1. @mixin border-radius($radius){
  2. -webkit-border-radius: $radius;
  3. border-radius: $radius;
  4. }//声明一个带有参数$radius的混合宏
  5. .box {
  6. @include border-radius(3px);//调用混合宏并给混合宏传参数“3px”
  7. }
  8. 传一个带值参数(传入一个默认值)
  9. @mixin border-radius($radius:3px){
  10. -webkit-border-radius: $radius;
  11. border-radius: $radius;
  12. }//声明一个传入了默认参数值的混合宏
  13. .btn {
  14. @include border-radius;//使用默认参数值的混合宏
  15. }
  16. .box {
  17. @include border-radius(50%);//可以自己传入参数值
  18. }

编译出来的CSS:

  1. .btn {
  2. -webkit-border-radius: 3px;
  3. border-radius: 3px;
  4. }
  5. .box {
  6. -webkit-border-radius: 50%;
  7. border-radius: 50%;
  8. }

传多个参数值

  1. @mixin size($width,$height){
  2. width: $width;
  3. height: $height;
  4. }
  5. .box-center {
  6. @include size(500px,300px);
  7. }

编译出来的css:

  1. .box-center {
  2. width: 500px;
  3. height: 300px;
  4. }

15.sass 继承
scss:

  1. .btn {
  2. border: 1px solid #ccc;
  3. padding: 6px 10px;
  4. font-size: 14px;
  5. }
  6. .btn-primary {
  7. background-color: #f36;
  8. color: #fff;
  9. @extend .btn;
  10. }

编译出来后:

  1. .btn, .btn-primary {
  2. border: 1px solid #ccc;
  3. padding: 6px 10px;
  4. font-size: 14px;
  5. }
  6. .btn-primary {
  7. background-color: #f36;
  8. color: #fff;
  9. }

在sass中的继承,可以继承类样式块中所有样式代码,而且编译出来的css会将选择器合并在一起,形成组合选择器。

16.sass占位符%
用占位符声明的代码,如果不被@extend调用就不会被编译。

  1. %mt5 {
  2. margin-top: 5px;
  3. }
  4. %pt5{
  5. padding-top: 5px;
  6. }
  7. .btn {
  8. color:red;
  9. }

编译后:

  1. .btn {
  2. color:red;
  3. }//%占位符声明的代码没有被编译产生css代码

使用@extend调用:

  1. %mt5 {
  2. margin-top: 5px;
  3. }
  4. %pt5{
  5. padding-top: 5px;
  6. }
  7. .btn {
  8. @extend %mt5;//使用@extend调用占位符代码
  9. @extend %pt5;
  10. }
  11. .block {
  12. @extend %mt5;
  13. span {
  14. @extend %pt5;
  15. }
  16. }

编译后的css代码:

  1. .btn, .block {
  2. margin-top: 5px;
  3. }
  4. .btn, .block span {
  5. padding-top: 5px;
  6. }

通过@extend调用的占位符,编译出来的代码会将相同的代码合并在一起,代码变得十分简洁。

17.sass插值

  1. $properties: (margin, padding);
  2. @mixin set-value($side, $value) {
  3. @each $prop in $properties {//对每个在$properties中的$prop,即$properties中的margin、padding
  4. #{$prop}-#{$side}: $value;//$prop连接参数$side,值为参数$value
  5. }
  6. }
  7. .login-box {
  8. @include set-value(top, 14px);//调用混合宏
  9. }

编译出来的css:

  1. .login-box {
  2. margin-top: 14px;
  3. padding-top: 14px;
  4. }

不可以:

  1. $margin-big: 40px;
  2. $margin-medium: 20px;
  3. $margin-small: 12px;
  4. @mixin set-value($size) {
  5. margin-top: $margin-#{$size};
  6. }
  7. .login-box {
  8. @include set-value(big);
  9. }

也不可以:

  1. @mixin updated-status {
  2. margin-top: 20px;
  3. background: #F00;
  4. }
  5. $flag: "status";
  6. .navigation {
  7. @include updated-#{$flag};
  8. }

可以在使用@extend时使用插值:

  1. %updated-status {
  2. margin-top: 20px;
  3. background: #F00;
  4. }
  5. .selected-status {
  6. font-weight: bold;
  7. }
  8. $flag: "status";
  9. .navigation {
  10. @extend %updated-#{$flag};
  11. @extend .selected-#{$flag};
  12. }
  1. sass 注释

    /注释内容/ :会在编译出来的css文件中显示
    //注释内容 :不会在编译出来的css文件中显示
    //定义一个占位符
    %mt5 {
    margin-top: 5px;
    }
    /调用一个占位符/
    .box {
    @extend %mt5;
    }

编译出来的css:

  1. .box {
  2. margin-top: 5px;
  3. }

/调用一个占位符/

  1. sass运算

19.1 sass 加法/减法
变量或属性中都可以做加法/减法运算

  1. .box {
  2. width: 20px + 8in;
  3. height:20px - 5px;
  4. }

编译出来的css:

  1. .box {
  2. width: 788px;
  3. height:25px;
  4. }

不用类型的单位做加法/减法会报错:

  1. .box {
  2. width: 20px + 1em;//不同类型单位不能做加法
  3. }

19.2 sass 乘法
这样子会有问题:

  1. .box {
  2. width:10px * 2px;
  3. }

应该这样子:

  1. .box {
  2. width: 10px * 2;
  3. }

编译出来的css:

  1. .box {
  2. width: 20px;
  3. }

同加法减法一样,不同类型单位做乘法也会报错。
19.3 sass除法
如果除式中没有变量或者不是在一个数学表达式中(有加法减法等),就要将除式运算用小括号括起来,否则“/”不会被当做除号运算。

  1. p {
  2. font: 10px/8px; // 纯 CSS,不是除法运算
  3. $width: 1000px;
  4. width: $width/2; // 使用了变量,是除法运算
  5. width: round(1.5)/2; // 使用了函数,是除法运算
  6. height: (500px/2); // 使用了圆括号,是除法运算
  7. margin-left: 5px + 8px/2px; // 使用了加(+)号,是除法运算
  8. }

编译出来的css:

  1. p {
  2. font: 10px/8px;//这种是无意义的css
  3. width: 500px;
  4. height: 250px;
  5. margin-left: 9px;
  6. }

除法中相同单位相除不会报错,会产生一个无单位的值:

  1. .box {
  2. width: (1000px / 100px);
  3. }

编译出来的css:

  1. .box {
  2. width: 10;
  3. }

19.4 sass 变量计算

  1. $content-width: 720px;
  2. $sidebar-width: 220px;
  3. $gutter: 20px;
  4. .container {
  5. width: $content-width + $sidebar-width + $gutter;
  6. }

编译出来的css:

  1. .container {
  2. width: 960px;
  3. }

19.5 sass数字运算

  1. .box {
  2. width: ((220px + 720px) - 11 * 20 ) / 12 ;
  3. }

编译出来的css:

  1. .box {
  2. width: 60px;
  3. }

19.6 sass颜色运算
所有算术运算都支持颜色值,并且是分段计算的。

  1. p {
  2. color: #010203 + #040506;
  3. }

计算公式为 01 + 04 = 05、02 + 05 = 07 和 03 + 06 = 09, 并且被合成为:

  1. p {
  2. color: #050709;
  3. }

数字和颜色一起运算:

  1. p {
  2. color: #010203 * 2;
  3. }

计算公式为 01 2 = 02、02 2 = 04 和 03 * 2 = 06, 并且被合成为:

  1. p {
  2. color: #020406;
  3. }

19.7 sass 字符运算
用“+”对字符串进行连接:

  1. $content: "Hello" + "" + "Sass!";
  2. .box:before {
  3. content: " #{$content} ";
  4. }

编译出来的css:

  1. .box:before {
  2. content: " Hello Sass! ";
  3. }

可以使用“+”直接连接字符:

  1. div {
  2. cursor: e + -resize;
  3. }

编译出来的css:

  1. div {
  2. cursor: e-resize;
  3. }

有引号的字符串和没有引号的字符串相加,看哪个在“+”号的左边,如果有引号的在左边,结果为有引号的;如果没有引号的在左边,结果为没有引号的:

  1. p:before {
  2. content: "Foo " + Bar;
  3. font-family: sans- + "serif";
  4. }

编译出来的css:

  1. p:before {
  2. content: "Foo Bar";
  3. font-family: sans-serif; }

作者:恰皮
链接:https://www.jianshu.com/p/fa3...
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

本文转载于:猿2048➻https://www.mk2048.com/blog/blog.php?id=hcakb11bi1j

vue入门文章的更多相关文章

  1. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  2. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  3. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  4. Vue 入门指南 JS

    Vue 入门指南 章节导航 英文:http://vuejs.org/guide/index.html 介绍 vue.js 是用来构建web应用接口的一个库 技术上,Vue.js 重点集中在MVVM模式 ...

  5. webpack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  6. webpack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  7. webpack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  8. Vue 入门之组件化开发

    Vue 入门之组件化开发 组件其实就是一个拥有样式.动画.js 逻辑.HTML 结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue 的组件和也做的非常 ...

  9. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

随机推荐

  1. Qt:QMap

    0.说明 QMap < Key , T > 一个QMap就是一个K-V对,也可以说是字典对象. 1)构造 构造一个Key是QString,Value是int的QMap: QMap<Q ...

  2. LeetCode-073-矩阵置零

    矩阵置零 题目描述:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解决方案是使用 O(mn) 的额外空间,但这并不 ...

  3. 使用Three.js实现神奇的3D文字悬浮效果

    声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 在 Three.js Journey 课程示例中,提供了一个使用 Thre ...

  4. ArcGIS提取水系并进行生态敏感性分析

    1.前言 此前已经发表过一篇名为<ENVI提取水系并进行生态敏感性分析>的随笔,这篇是用ArcGIS进行水系提取,与前者的区别是上篇一般是对遥感影像进行处理,准确性较高:这篇是讲在没有遥感 ...

  5. 前端经典面试题vue面试题

    1.什么是MVVM? MVVM是一种设计思想. Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑: View 代表UI 组件,它负责将数据模型转化成UI 展现出来,View ...

  6. Linux----虚拟机克隆、快照、删除、

    克隆 已经安装一台linux系统 还想要更多的,直接克隆CentOS即可 使用vm ware 的克隆操作 注意: 使用前先关闭目前已开启的虚拟机 快照 作用: 虚拟系统出现异常,需要回到原先的状态,此 ...

  7. Golang 常见设计模式之装饰模式

    想必只要是熟悉 Python 的同学对装饰模式一定不会陌生,这类 Python 从语法上原生支持的装饰器,大大提高了装饰模式在 Python 中的应用.尽管 Go 语言中装饰模式没有 Python 中 ...

  8. SQL语句大全,所有的SQL都在这里

    转自微信公众号-我是程序汪 一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  9. JDK8的 CHM 为何放弃分段锁

    概述 我们知道, 在 Java 5 之后,JDK 引入了 java.util.concurrent 并发包 ,其中最常用的就是 ConcurrentHashMap 了, 它的原理是引用了内部的 Seg ...

  10. CentOS 7.5 安装配置tigervnc-server

    系统版本: [root@s10 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 1.安装 Gnome 包 [root@ ...