发表于: 2019-04-01 22:13:31

1 768


今天完成的事情

 

      1.task11任务介绍

基于css的更高级语言——使用less/sass重写任务4(登录页),并编译

      2.安装ruby,并搭建sass环境

      3.学习SASS基础知识


遇到的问题

     

      1.浏览器下载总是很慢很慢很慢,一百多兆跟我讲要三天?搞不懂哪里出了问题,最后从百度云盘下载到

1.安装ruby

安装过程没什么麻烦的地方,按提示来就可以。 安装 Ruby 时一定要勾选 Add Ruby executables to your PATH

  进入运行cmd进入命令提示符,输入ruby -v查看版本号,如果能正确显示版本号,则说明ruby安装成功。

  

2.切换gem源

因为gen sources地址是国外网络地址,所以在使用的过程中,获取类会很慢,而且经常出现类库资源无法获取的问题。因此,国内开发的时候经常把源换到淘宝源,这样就用国内的镜像服务器,从而获得更加稳定、更加快速的源

1.win+R进入命令提示符工具

2.查看当前使用的源地址。

◆输入:gem sources

3.删除默认的源地址。

◆输入:gem sources -r url地址

注:默认的url地址后必须有”/”,否则删不掉。


4.添加新的源地址。

◆输入:gem sources -a url地址

注:这里本来应该添加淘宝的源地址。因为国内使用淘宝的源比较稳定,且安装或更新网速都比较快。

但我在网上有看到18后半年的文章中说sass的中文镜像,从淘宝交给了ruby-china,然后他的org域名挂了。

所以现在的gem源是

https://gems.ruby-china.com/

5.更新源的缓存

◆输入:gem sources -u

更新源的缓存后即完成了Ruby的gem源修改。


3.安装SASS

       输入gem install sass进行安装。

  正常情况下显示的结果是这样的:

  

输入sass -v查看版本号,如果能正确显示版本号,则说明sass安装成功。

4.在vscode里安装“easy sass”安装成功后重启 VSCode。


收获

     1.什么是Sass和Less?

      Sass和Less都属于CSS预处理器,那什么是 CSS 预处理器呢?

       CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,提供了许多便利的写法、方法。将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行CSS的编码工作。

       转化成通俗易懂的话来说就是“用一种专门的编程语言,进行 Web 页面样式设计,再通过编译器转化为正常的 CSS 文件,以供项目使用”。

      2.为什么要使用CSS预处理器? 

     Js中可以自定义变量,而CSS仅仅是一个标记语言,非编程性的、描述性的语言,没有变量、函数及作用域,且不可以自定义变量,不可以引用等等。

       CSS有具体以下几个缺点:

  • 语法不够强大,比如无法嵌套书写,导致模块化开发中需要书写很多重复的选择器;
  • 没有变量和合理的样式复用机制,使得逻辑上相关的属性值必须以字面量的形式重复输出,导致难以维护。

       这就导致了我们在工作中无端增加了许多工作量。而使用CSS预处理器,提供 CSS 缺失的样式层复用机制、减少冗余代码,提高样式代码的可维护性。大大提高了我们的开发效率。

       但是,CSS预处理器也不是万金油,CSS的好处在于简便、随时随地被使用和调试。预编译CSS步骤的加入,让我们开发工作流中多了一个环节,调试也变得更麻烦了。更大的问题在于,预编译很容易造成后代选择器的滥用。

       所以我们在实际项目中衡量预编译方案时,还是得想想,比起带来的额外维护开销,CSS预处理器有没有解决更大的麻烦。

      3.Sass和Less的比较

不同之处

Less环境较Sass简单
Cass的安装需要安装Ruby环境,Less基于JavaScript,是需要引入Less.js来处理代码输出css到浏览器,也可以在开发环节使用Less,然后编译成css文件,直接放在项目中,有less.app、SimpleLess、CodeKit.app这样的工具,也有在线编辑地址。
Less使用较Sass简单
LESS 并没有裁剪 CSS 原有的特性,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的特性。只要你了解 CSS 基础就可以很容易上手。
从功能出发,Sass较Less略强大一些

①sass有变量和作用域。
- $variable,like php;
- #{$variable}like ruby;
- 变量有全局和局部之分,并且有优先级。

②sass有函数的概念;
- @function和@return以及函数参数(还有不定参)可以让你像js开发那样封装你想要的逻辑。
-@mixin类似function但缺少像function的编程逻辑,更多的是提高css代码段的复用性和模块化,这个用的人也是最多的。
-ruby提供了非常丰富的内置原生api。

③进程控制:
-条件:@if @else;
-循环遍历:@for @each @while
-继承:@extend
-引用:@import

④数据结构:
-$list类型=数组;
-$map类型=object;
其余的也有string、number、function等类型

Less与Sass处理机制不一样
前者是通过客户端处理的,后者是通过服务端处理,相比较之下前者解析会比后者慢一点
 
关于变量在Less和Sass中的唯一区别就是Less用@,Sass用$。
 相同之处

Less和Sass在语法上有些共性,比如下面这些:

1、混入(Mixins)——class中的class;
2、参数混入——可以传递参数的class,就像函数一样;
3、嵌套规则——Class中嵌套class,从而减少重复的代码;
4、运算——CSS中用上数学;
5、颜色功能——可以编辑颜色;
6、名字空间(namespace)——分组样式,从而可以被调用;
7、作用域——局部修改样式;
8、JavaScript 赋值——在CSS中使用JavaScript表达式赋值。

为什么选择使用Sass而不是Less?
 
1、Sass在市面上有一些成熟的框架,比如说Compass,而且有很多框架也在使用Sass,比如说Foundation。
2、就国外讨论的热度来说,Sass绝对优于LESS。
3、就学习教程来说,Sass的教程要优于LESS。在国内LESS集中的教程是LESS中文官网,而Sass的中文教程,慢慢在国内也较为普遍。
4、Sass也是成熟的CSS预处理器之一,而且有一个稳定,强大的团队在维护。
5、同时还有Scss对sass语法进行了改良,Sass 3就变成了Scss(sassy css)。与原来的语法兼容,只是用{}取代了原来的缩进。
6、bootstrap(Web框架)最新推出的版本4,使用的就是Sass。

SASS是一款强化css的辅助工具。在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,有助于更好地组织管理样式文件,以及更高效地开发项目。

.scss和.sass都是SASS文件,二者的区别在于:.sass后缀名的是在SASS3.0之前的版本中使用的,其代码书写格式由于没有花括号和分号,而且需要做到完美的退格形式,所以不符合css书写规范而不被广为接受。 .scss后缀名的是SASS3.0之后一直很流行的格式,代码书写有花括号,分号等等,完全符合原生css格式


注:SASS文件的使用

SASS>(编译)>css>(引用)>HTML

即不能直接引用.sass文件

       4.SASS编译方式

1.命令行编译

命令编译是指使用你电脑中的命令终端,通过手动输入 Sass 指令来编译 Sass。这种编译方式是最直接也是最简单的一种方式。因为只需要在你的命令终端输入:

单文件编译:

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

监听:

在编译 Sass 时,开启“watch”功能,这样只要你的代码进行任保修改,都能自动监测到代码的变化,并且给你直接编译出来:

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

2.图形化工具编译

koala是一个前端预处理语言图形编译工具,支持Less,Sass,Compass,CoffeeScript.帮助web开发者更高效地使用它们进行开发,并且他可以跨平台运行,完美兼容Windows,Linux,Mac。

下载安装好软件后把scss 文件导入软件后即可执行编译;

3.自动化编译

编程软件(VScode)中配置sass的自动编译

       5.SASS的基本规则

sass的核心思想: 不要做重复的工作。

1.sass变量,以美元符号$开头。赋值方法与属性写法一样。直接使用可以调用变量。

例如$width:5px;  body{width:$width}就赋值body宽度为5px了。如果这个数值在一个部分被大量的调用,就可以给这个变量赋值,利于以后代码的维护,更改变量值就可以统一修改所以调用这个变量的属性。

              

2.嵌套 
 

   同样 :对伪类元素很友好

不仅可以标签嵌套,也可以属性嵌套。比如font全家桶有font-size;font-family;font-weight;直接

增加了代码可读性和易写性。

注:属性格式为 属性名称{ } 标签无

3.注释

/* */ 注释会被编译进css中。

//不会被编译进去。

如果想增加代码的可读性,但是不想在网页显示中被看到自己的注释,可以使用//注释。//注释是单行注释。

4.子选择器

article section { margin: 5px }这种写法会选 中article里所有的section标签;

 article > section { border: 1px solid #ccc }这种写法只选中article里的直接子元素为section的标签。(紧跟)

5..混合器

如果一个网站中需要大段的重用代码,可以通过SASS的混合器实现大段代码的重用。

混合器使用@mixin (迷信)定义。然后通过@include引用。混合器用起来感觉和类有些相似。类名是在html中应用的,而混合器是在样式表中用的。

6.选择器继承

extend。一个选择器可以继承另一个选择器的所有样式。要注意的是不仅会继承原本选择器的所有样式,与原本选择器有关的组合选择器样式也会被继承。例如 header a:hover{xxxx}; body继承了header的样式后,body a:hover也有同样的效果。

7.定义函数

if语句:@if的表达式返回值不是false的时候,则条件成立输出{}里的代码。

后面可以跟多个 else代码,SASS会逐条执行,如果全部失败,则执行最后else代码。

for: @for可以在限制的范围内重复输出格式。@for $var from <start> through <end>和@for $var from <start> to <end>。当使用 through 时,条件范围包含 <start> 与 <end> 的值,而使用 to 时条件范围只包含 <start> 的值不包含 <end> 的值

start和end必须是整数值。

each:@each的格式是$var in <list>  $var是变量名。 list的列表。

each会遍历列表中每一个var的项目输出结果。

while:指令重复输出格式直到不满足表达式。就像他的意思   在...期间。 


明天计划学习


       敲代码


注: 【unsolved】截日报发出前未解决的问题

        【solved】已解决现象但并未从根本上解决问题

        【solved】已解决



返回列表 返回列表
评论

    分享到