less和scss
一、less基础语法
1、声明变量:@变量名:变量值;
使用变量:@变量名;
2、混合(Mixins)
1)无参混合
声明: .class{}
调用:在选择器中,使用.class;直接调用
2)有参无默认值混合:
声明:.class(@param){}
调用:.class(paramValue);
3)有参有默认值混合:
声明:.class(@param:10px){}
调用:.class(paramValue);
>>>如果声明时,没有给参数赋默认值,则调用时,必须赋值,否则报错
>>>无参混合,实际上就是一个普通的class选择器,会被编译到CSS文件中;
而有参混合,在编译时,不会出现在CSS文件中。
@color:#ff0000;//声明变量
@length:100px;//声明变量
#div1{
width: 100px;
height:@length;//使用变量
background-color: @color;
}
//无参混合
.borderRadius{
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
}
//有参无默认值混合
.borderRadius1(@radius){
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
//有参有默认值混合
.borderRadius2(@radius:10px){
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
.class(){
width: 10px;
height: 10px;
.borderRadius2();
}
【变量使用原则】:
多次频繁出现的值,后期需要统一修改的值,牵扯到数值运算的值,推荐使用变量;
【less中的变量类型】
在CSS中出现的属性值,在less中都可以用作变量名
1)数值类:不带单位的 123 带单位的 1px
2)字符串:带引号的 "hahhaha" 不带引号的 red #fffff
3)颜色类:red #ff0000 RGB(255,0,0)
4)值列表类型:多个值用逗号或空格分隔 10px solid red
3、less中的匹配模式
1)声明:
@pipei(@条件1,参数){}
@pipei(@条件2,参数){}
@pipei(@_,参数){}
2)调用:
@pipei(条件的值,参数的值){}
3)匹配规则
根据调用时输入的条件值,去寻找与之匹配的混合执行。
@_表示不管匹配成功与否,都会执行的选项
/*匹配模式*/
.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;
} @postion:lefts;
.class1{
.pipei(@postion,20px); //调用:@pipei(条件的值,参数的值){}
}
4、@arguments 特殊变量:
在混合中,@arguments表示混合传入的所有参数。@arguments中的多个参数用空格分隔。
.border(@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代码的结构进行嵌套。
1)less中的嵌套默认是后代选择器,如果需要子代选择器,需要在前面加>
2)&符号,表示这个&所在的上一层选择器。比如上述&,表示 section ul:hover
/*
* less中的嵌套
*/
#section{
width: 800px;
height: 200px;
background-color: #ccc;
>p{//>表示子代选择器
color: red;
font-weight: bold;//加粗
}
ul{
padding: 0;
list-style: none;
>li{
float: left;
width: 100px;
height: 50px;
background-color: yellow;
text-align: center;
&:hover{//&表示上一层选择器(#section ul li:hover)
background-color: green;
}
}
}
}
二、sacc基础语法
1、scss中的变量
1)声明变量:$变量名:变量值;
SCSS中,允许将变量嵌套在字符串中,但是变量必须使用#{}包裹
eg:border-#{$left}:10px solid red;
$width:100px;//scss中的声明变量
$position:left;
#div1{
width: $width;
height: $width/10;
background-color: red;
border-#{$position}:10px solid yellow;
}
2、SCSS中的运算,会将单位进行运算。使用时需注意最终的单位是否正确。
eg:10px * 10px=100 px*px;
3、SCSS中的嵌套:选择器嵌套、属性嵌套、伪类嵌套
1)选择器嵌套ul{ li{} }
嵌套默认表示后代选择器,如果需要子代选择器,可以在选择器前面加>
可以在选择器的大括号中,使用&表示上一层的选择器。
2)伪类嵌套: li{ $:hover}
在选择器的{}中,使用&配合伪类事件,可以表示当前选择器的伪类
3)属性嵌套:font:{size:18px} -->font-size:18px;
对于属性名有-分割为多段的属性,可以使用属性嵌套。属性名的前半部分必须紧跟:,才能
用{}包裹属性的后半部分。
section{
background-color: #CCCCCC;
p{
color: red;
}
ul{
padding: 0;
li{
list-style: none;
//$=="section ul li"
font:{
size: 16px;
weight:bold;
family:"微软雅黑";
style:"italic"//字体为斜体
}
}
}
}
4、混合宏、继承、占位符
1)混合宏:声明@mixin声明混合宏,在其他选择器中使用@include调用混合宏
@minxin hunhe{} .class{@include hunhe}
@minxin hunhe(@param){} .class{@include hunhe(value)}
@minxin hunhe(@param:value){} .class{@include hunhe()}
//继承
.class1{
color:red;
}
.class{
@extend .class1;
background-color: yellow;
}
//混合宏
@mixin hunhe($color:red){
color: $color;
}
.class3{
@include hunhe(green);
background-color: yellow;
}
.class4{
@include hunhe;
background-color: blue;
}
//占位符
%class1{
color: red;
}
.class4{
@extend %class1;
background-color: yellow;
}
.class5{
@extend %class1;
background-color: green;
}
1)混合宏:声明时,可以有参数,也可以没有参数。参数可以有默认值,也可以没有默认值。
但是调用时,必须符合声明时的要求。与LESS中的混合相同。
>>>优点:1)可以传参
2)不会产生同名class
>>>缺点:调用时,会把混合宏中的所有代码copy到选择器中,产生大量重复代码
2)继承:声明一个普通的class,在其他选择器中使用@extend 继承这个class
.class1{} .class1{ @extend .class1;}
>>>优点:将相同代码提取到并集选择其中,减少冗余代码;
>>>缺点:1)不能传参
2)会生出一个多于的class
3)占位符:使用%声明占位符,在其他选择器中使用@extend继承占位符;
%class1{} .class2{@extend %class1;}
>>>优点:1)将相同代码提取到并集选择其中,减少冗余代码;
2)不会生出一个多于的class。
>>>缺点:不能传参
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循坏
@for $i 1 through 10{
.border-#{$i}{
border: #{$i}px solid red;//设置外边框
}
}
7、while循坏:
$i:@extend;
@while $i<10{
$i:$i+1;
}
//while循坏
$i:0;
@while $i<10{
.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 循坏遍历
$i:0;
@each $item in c1,c2,c3,c4{
$i:$i+1;
.#{$item}{
border: #{$i}px solid red;
}
}
less和scss的更多相关文章
- Vue ES6 Jade Scss Webpack Gulp
一直以来非常庆幸曾经有翻过<代码大全2>:这使我崎岖编程之路少了很多不必要的坎坷.它在软件工艺的话题中有写到一篇:"首先是为人写程序,其次才是机器(Write Programs ...
- Ruby安装Scss
Ruby安装Scss 引言 已经许久不写HTML了,今天有点以前的东西要改.但是刚装的Windows10,已经没有以前的Web开发环境了.只好重新安装. 结果Webstorm装好后配置Scss出现错误 ...
- CSS预处理框架:less,scss
CSS预处理器:less和sass:CSS 预处理器是一种语言用来为 CSS 增加一些编程的的特性,无需考虑浏览器的兼容性问题,例如你可以在 CSS 中使用 变量.简单的程序逻辑.函数等等在编程语言中 ...
- sass/scss 和 less的区别
一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...
- 关于webpack编译scss文件
css加载器文件通常和extract-text-webpack-plugin一块使用,我们可以在源文件src目录下写scss文件,然后通过webpack编译成css文件到输出目录public,这个目录 ...
- Webstorm配置CSS/SCSS自动补全兼容前缀autoprefixer插件
关于Autoprefixer Autoprefixer是一个后处理程序,不象Sass以及Stylus之类的预处理器.它适用于普通的CSS,可以实现css3代码自动补全.也可以轻松跟Sass,LESS及 ...
- webstorm 配置scss的问题
第一种方法(ruby方法) 先安装ruby,在windows/system32目录下 1.先查询源是什么 gem sources 2.移除原有的源头 gem sources -r http://xxx ...
- scss编译
SASS?SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. sass有两种后缀名文件: sass(不使用大括号和分号)---不建议使用 ...
- SCSS
CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作. 通俗的说,“CSS ...
- Scss开发临时学习过程
SCSS语法: 假设变量申明带有!default,那么如果在此申明之前没有这个变量的申明,则用这个值,反之如果之前有申明,则用申明的值. ‘...’传递多个参数: @mixin box-shadow( ...
随机推荐
- 【CPP】字符串和格式化输入输出
前导:数组(array),字符串转换说明符%s,定义符号常量,,strlen()获取字符串长度,. [字符串] 没有专门的字符串类型,是吧他存储在字符型数组中,数组最后一个字符为空字符'\0',c用他 ...
- shell 编程之 for while until 循环
shell 的for循环 的格式如下: for 变量 in 列表 do ... done 列表是一组值的序列 每个值通过空格隔开 每循环一次,列表中的下一个值赋给变量 in 列表是可选的,如果不用他 ...
- C#多线程的用法3-线程间的协作Join
在创建多线程应用程序时,如何确保线程间的协作往往比让线程工作更重要. 线程间的协作最简单的方式是采用Join来进行,如下: /// <summary> /// 多线程协作-Join方式 / ...
- 自定义组件-BreadcrumbTreeView 的使用
一.问题概述 树形结构是开发中常用的一种组织数据的结构,不少平台也提供了对应的控件.而在android平台中,出于使用手指操作树形结构不是很方便的原因,并没有提供树形结构控件.但在实际应用中,不可避免 ...
- SetWindowPos和SetForegroundWindow
There are many closely-related concepts involved, and related terms are often misused, even in the o ...
- Axure 入门
Axure RP是一个专业的快速原型设计工具.Axure(发音:Ack-sure),代表美国Axure公司:RP则是Rapid Prototyping(快速原型)的缩写. Axure RP是美国Axu ...
- ASP.NET MVC5写.php路由匹配时的问题 ASP.NET MVC 4 在 .NET 4.0 与.NET 4.5 的專案範本差異
由于外包公司结束合作,所以考虑把其APP服务替换过来,因原后台是用php写的,在不影响员客户端使用的情况下在MVC下重写路由配置实现处理原php链接地址的请求,但实现时发现怎么也匹配不到自己写的路由, ...
- 【Js应用实例】jQuery监听回车键
$(function(){ //焦点放在第一个文本输入框 $('input:text:first').focus(); //获取所有的输入框 var $inp=$('input'); //定义所有输入 ...
- 关于php中的include html文件的问题,为什么html可以在php中执行
之前在w3shXXl看的教程,上面对include的解释是把指定的文件复制到这条指令执行的地方. 这真是坑到我了..... 在了解mvc的时候,控制器显示视图时需要用include包含html视图文件 ...
- 8.2.1 UML, 组合和聚合、关联和依赖
类A的属性是另一个类B,那么这两个类是关联的,但不一定是聚合,如果在A类中创建了B类的实例(使用new!),那么B类和A类就是聚合关系,但不一定是组合关系,因为不一定在A类创建的同时去创建B类的实例, ...