LESS SCSS 预编译语言
前 言
JRedu
LESS 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。
LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS 的编写,并且降低了 CSS 的维护成本,就像它的名称所说的那样,LESS 可以让我们用更少的代码做更多的事情。Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,这些拓展令 CSS 更加强大与优雅。使用 Sass 以及 Sass 的样式库(如 Compass)有助于更好地组织管理样式文件,以及更高效地开发项目。
| 1 LESS预编译语言 |
1.1LESS的基础语法
1、声明变量:@变量名:变量值;
使用变量:@变量名
>>>变量使用的原则:
多次频繁出现的值,后期需要统一修改的值,或者牵扯到数值运算的值,推荐使用变量
>>>LESS中的变量类型
在CSS中出现的属性值,在less中都可以用作变量名
① 数值类:不带单位的 123 带单位的 1px
② 字符串类型:带引号的"hahah" 不带引号的 red #ff000
③ 颜色类:red #ff000 rgb(255,255,0)
④ 值列表类型:多个值用逗号或空格分隔 10px solid red
@color:#ff0000;
@length:100px;
#div1{
width: @length;
height: @length*2;
background-color: @color;
}
2、混合(Mixins)
①、无参混合
声明 .class{}
调用:在选择器中使用.class 直接调用
//无参混合
.borderRadius{
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
} //调用
.class{
width: 10px;
height: 10px;
.borderRadius();
}
② 有参无默认值混合
声明.class(@param)
调用:.class(paramValue)//有参无默认值混合
//有参无默认值混合
.borderRadius1(@radius){
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
//调用
.class{
width: 10px;
height: 10px;
.borderRadius1(20px);
}
③ 有参有默认值混合
声明:.class(@param:10px)
调用:.class(paramValue) 或 .class()
//有参有默认值混合
.borderRadius2(@radius:10px){
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
.class{
width: 10px;
height: 10px;
.borderRadius2();
}
>>>如果声明时没有给参数赋默认值,则调用时必须赋值,否则报错
>>>无参混合实际上就是一个普通的class选择器,会被编译到css文件中,
而有参混合在编译时,不会出现在css文件中
3、less中的匹配模式:类似于switch 结构
① 声明: @pipei(条件一,参数) {} @pipei(条件二,参数) {} @pipei(@_,参数) {}
② 调用:@pipei(条件的值,参数的值){}
③ 匹配规则:
根据调用时输入的条件值,去寻找与之匹配的混合执行,
@_不管匹配成功与否,都会执行的选项。
.pipei(lefts,@width:10px){
margin-left: @width;
}
.pipei(rights,@width:10px){
margin-right: @width;
}
.pipei(tops,@width:10px){
margin-top: @width;
}
.pipei(bottoms,@width:10px){
margin-bottom: @width;
}
.pipei(@_,@width:10px){
padding: 10px;
}
//@_不管匹配成功与否,都会执行的选项。
@position:leftss;
.class1{
.pipei(@position,20px);
}
4、arguments特殊变量
在混合中,@arguments表示混合传入的所有参数.@arguments中的所有参数之间,用空格分隔。
.argu(@width,@style,@color){
border: @arguments;--> border: @width @style @color;
}
.argu(@width,@style,@color){
//border: @width @style @color;
border: @arguments;
}
.class2{
.argu(10px,solid,red);
}
5、less中加减乘除运算:
less中的所有变量和数值,可以进行加减乘除运算
需要注意的是,当颜色值运算时,红绿蓝分三组运算,组内单独计算,组间互不干涉。
6、less中的嵌套
less允许CSS选择器按照HTML代码的结构进行嵌套
section{
>p{}
ul{
&:hover
}
}
① less中的嵌套默认是后代选择器,如果需要子代选择器,需要在前面加>
② &符号,表示这个&所在的上一层选择器,比如上述&表示section ul:hover
| 1.2 SCSS预编译语言 |
3.2.1SCSS基础语法
/注释一:编译时不会被编译到CSS文件中
/*
* 注释二:在非compressed模式下,会被编译到CSS文件中。
*
*/
/*!
* 注释三:重要注释,在各种压缩模式下,都会被编译到CSS文件中。
*/
!scss基础语法
1、scss中的变量
① 声明变量 $变量名:变量值;
scss 中允许将变量嵌套在字符串中,但是变量必须使用井{}包裹
eg:border-井{$left}:10px solid red;
$width:100px;
$position:left;
#div1{
width: $width;
height: $width;
background-color: red;
border-#{$position}:10px solid green ;
}
2、scss中的运算:会将单位进行运算。使用时需注意最终的单位是否正确。
eg:10px*10px=100 px*px
3、scss中的嵌套:选择器嵌套 属性嵌套 伪类嵌套
① 选择器嵌套 ul{li{}}
嵌套默认表示后代选择器,如果需要子代选择器,可以在选择器前加>
可以在选择器的{}中,使用&表示上一层的选择器
② 伪类嵌套 :li{&:hover{}}
在选择器的{}中,使用&配合伪类事件,可以表示当前选择器的伪类
③ 属性嵌套 font:{size:18px;} -->font-size:18px
对于属性名有-分隔为多段的属性,可以使用属性嵌套,属性名的前半部分必须紧跟一个:,才能使用{}包裹属性的后半部分。
section{
background-color: #CCCCCC;
p{
color: red;
}
ul{
padding: 0px;
li{
list-style: none;
font:{
size: 16px;
weight:bold;
family:"微软雅黑";
style:"italic";
}
//& =="section ul li"
}
}
}
对应的CSS文件:
section {
background-color: #CCCCCC;
}
section p {
color: red;
}
section ul {
padding: 0px;
}
section ul li {
list-style: none;
font-size: 16px;
font-weight: bold;
font-family: "微软雅黑";
font-style: "italic";
}
4、 混合宏 继承 占位符
① 混合宏 使用@mixin声明混合宏,在其他选择器中使用@include调用混合宏
eg: @mixin hunhe($param:value){} .class{ @include hunhe(value); }
@mixin hunhe{$param:value} .class{@include hunhe();}
>>>声明时,可以有参数,也可以没有参数。参数可以有默认值,也可以没有默认值。
但是调用时,必须符合声明时的要求。与less中 的混合相同
>>>优点:① 可以传参 ② 不会产生同名的class
>>>缺点:调用时,会把混合宏中的所有代码copy到选择器中,产生大量冗余代码
//混合宏
@mixin hunhe($color:red){
color: $color;
}
.class3{
@include hunhe;
background-color: yellow;
}
.class4{
@include hunhe;
background-color: blue;
}
② 继承:声明一个普通的class,在其他选择器中使用@extend 继承这个class
.class1{} .class2{@extend .class1;}
>>>优点:将相同的代码,提取到并集选择器,减少冗余代码
>>>缺点:①不能传参;②会生出一个多余的class
//继承
.class1{
color: red;
}
.class{
@extend .class1;
background-color: yellow;
}
③占位符:使用%声明占位符,在其他选择器中使用@extend继承占位符;
%class{} .class1{@extend %class;}
>>>优点:①将相同代码,提取到并集选择器,减少冗余代码 ② 不会产生同名的class
>>>缺点:不能传参
%class1{
color: red;
}
.class4{
@extend %class1;
background-color: yellow;
}
5、if条件结构
条件结构需要写在选择器里面,条件结构的{}直接包裹样式属性。
@if 条件{
@else{}
}
//scss中的条件语句
.class6{
width: 100px;
height: 100px;
@if 1>2 {
background-color: yellow;
}
@else{
background-color: green;
}
}
6、for循环
@for $i from 1 to 10{} 不包含10
@for $i from 1 through 10{} 包含10
@for $i from 1 to 10{
.border-#{$i}{
border: #{$i}px solid red;
}
}
7、while循环
$i:0;
@while $i<10{
$i:$i+1;
}
$i:0;
@while $i<{
.while-#{$i}{
border: #{$i}px solid red;
}
$i:$i + 1;
}
8、 each 循环遍历
@each $item in a,b,c,d{
//$item 表示 a,b,c,d中的每一项
}
//each 循环遍历
@each $item in c1,c2,c3,c4{
$i:$i+1;
.#{$item}{
border: #{$i}px solid red;
}
}
LESS SCSS 预编译语言的更多相关文章
- laravel 中CSS 预编译语言 Sass 快速入门教程
CSS 预编译语言概述 CSS 作为一门样式语言,语法简单,易于上手,但是由于不具备常规编程语言提供的变量.函数.继承等机制,因此很容易写出大量没有逻辑.难以复用和扩展的代码,在日常开发使用中,如果没 ...
- 【前端开发】优化代码之减少引入,css预编译语言的优点,stylus的使用
前言:我必须得承认在最最最开始的时候,我对于css的预编译是非常不以为然的,这是错误的.一般在页面编写过程中,我会将需要reset的css放在reset.css中,讲会需要重复用到的放置到public ...
- css预编译语言 sass scss(变量$var, css嵌套规则,@import规则,@extend,@mixin)
什么是sass Sass 是对 CSS 的扩展,让 CSS 语言更强大.优雅. 它允许你使用变量.嵌套规则. mixins.导入等众多功能, 并且完全兼容 CSS 语法. Sass 有助于保持大型样式 ...
- Scss预处理器的使用总结
变量 .嵌套.Mixin混合.function函数.插值 变量及文件导入 通过$定义变量 $white:#fff; $black:#000; 变量引用 .containner{ color:$blac ...
- CSS预编译语言-LESS
LESS的作用 CSS层叠样式表,它是标记语言,不是编程语言:所有的预编译CSS语言(less/sass…)都是赋予了CSS的面向对象思想 LESS的编译 LESS叫做预编译CSS:写好的LESS代码 ...
- css预编译语言sass——mixin的使用
以根据不同屏幕吃寸动态应用背景图片为例 新建一个mixin如下: @mixin bg_img($path, $ext){ @media screen and (max-device-width: 76 ...
- less预编译语言使用总结
以前就使用过less和sass,其实很简单,就是很长时间不用,忘记语法了,现在来总结一片使用技巧 一.注释 less的注释不会被编译到css文件中,所以提倡多使用less中的注释:/**/ 二.变量 ...
- vue项目配置less预编译语言
当所有东西都 准备好之后 : 第一步: 安装less依赖,npm install less less-loader --save 第二步:找到webpack配置文件webpack.base.conf. ...
- scss 入门基础
在一个项目中,样式是必不可少的一部分,而对于一个完整的项目来说是有个基准色调的.在项目需求变化不大的情况下,可以直接在css中写这些颜色值之类的东西.但是如果遇到一个朝令夕改的领导或者甲方,那会变得相 ...
随机推荐
- mysql索引类型 normal, unique, full text
问题1:mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用 ...
- 使用Chrome开发者工具远程调试原生Android上的H5页面
Android4.4(KitKat)开始,使用Chrome开发者工具可以帮助我们在原生的Android应用中远程调试WebView网页内容.具体步骤如下: (1)设置Webview调试模式 可以在Ac ...
- [20171110]_allow_read_only_corruption参数.txt
[20171110]_allow_read_only_corruption参数.txt --//昨天在修改查询隐含参数脚本时发现一个参数_allow_read_only_corruption,感觉应该 ...
- [20170728]oracle保留字.txt
[20170728]oracle保留字.txt --//oracle有许多保留字,我印象最深的就是使用rman备份表空间test,test就是rman里面的保留字.--//还有rman也是rman里面 ...
- 【 PostgreSQL】查询某模式下所有表的分布键信息
想看下某模式下所有表创建的分布键是否合理,查找系统表文档拼出如下sql,亲们如果有更好的sql或者意见欢迎留言! SELECT aaa.nspname AS "模式名", ...
- WebAPi使用Autofac实现依赖注入
WebAPi依赖注入 使用记录 笔记 1.NuGet包安装 2.控制器加入构造函数 3.Global.asax ----Application_Start 应用程序启动时 using Autofa ...
- Django日志信息路径的设置
django日志信息路径的设置, 因为我们经常在代码业务上线时候 需要进行调试,查看代码的后台运行情况,就需要设置django项目的具体的日志信息运维的路径了 LOGGING = { 'version ...
- centos-7 虚拟机安装图形界面
centos-7 虚拟机安装图形界面 想到安装一个docker环境,于是拿出了以前装的虚拟机centos7,记得装完后,没进行任何配置(默认安装的是命令行界面). 配置网络 现有的虚拟机是没有办法联网 ...
- PHP Excel导入数据到MySQL数据库
数据导出已经有了,怎么能没有数据导入呢,同样使用TP5框架,首先需要下载phpexcel.zip,放到第三方类库目录vendor目录下,然后有一个页面可以让你选择要导入的Excel文件,然后点击导入按 ...
- The resource configuration is not modifiable in this context.
项目中使用了Jersey RESTful 框架, 更新代码后服务能正常起来, 在页面登录时验证码不显示 后台报错 java.lang.IllegalStateException: The resour ...