百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

前端利器之less入门

toyiye 2024-06-23 18:54 9 浏览 0 评论

内容导读

Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。一遍一遍写一大段一大段一样的代码,有木有很乏味,如果要换一个contain为cover呢?编译之后引用css文件 我推荐使用Koala.exe 下载地址 多语言支持 支持Less、Sass、CoffeeScript 和 Compass Framework。实时编译 监听文件,当文件改变时自动执行编译,这一切都在后台运行,无需人工操作。项目配置 支持为项目创建一个全局配置,为文件设置统一编译选项。跨平台 Windows、Linux、Mac都能完美运行。

less 是什么?

Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。
less,是方便我们快速编写CSS的工具,它增强了CSS代码的扩展性和复用性。
Less 可以运行在 Node 或浏览器端。

less能为我们做什么?

下边让我们来看一段我们经常写的代码

/**
我们经常写浏览器的兼容,假设我们写icon
**/
nav a.home.active i {
 background: url('images/nav-home-on.png') no-repeat center;
 background-size: contain;
 -webkit-background-size: contain;
 -moz-background-size: contain;
 -o-background-size: contain;
}
nav a.home i {
 background: url('images/nav-home-off.png') no-repeat center;
 background-size: contain;
 -webkit-background-size: contain;
 -moz-background-size: contain;
 -o-background-size: contain;
}
nav a.topics.active i {
 background: url('images/nav-circle-on.png') no-repeat center;
 background-size: contain;
 -webkit-background-size: contain;
 -moz-background-size: contain;
 -o-background-size: contain;
}
nav a.topics i {
 background: url('images/nav-circle-off.png') no-repeat center;
 background-size: contain;
 -webkit-background-size: contain;
 -moz-background-size: contain;
 -o-background-size: contain;
}
  • 一遍一遍写一大段一大段一样的代码,有木有很乏味,如果要换一个contain为cover呢?
    改疯了有木有

让我们看看less会怎么做

//相当于新建一个函数 Mixins(混入)
.border-radius(@radius:10px){
border-radius:@radius;
 -webkit-border-radius:@radius;
 -moz-border-radius:@radius;
 -o-border-radius:@radius;
}
.background-size(@type){
 background-size: @type;
 -webkit-background-size: @type;
 -moz-background-size: @type;
 -o-background-size: @type;
}

//用法
.orderList{
 background-color:#E36264;
 width:100px;
 height:200px;
 .border-radius(15px);//利用函数可以省去很多的重复兼容代码
 .border-radius;//利用函数可以省去很多的重复兼容代码
 .background-size(contain);
}


//这么写整个世界都美好了
nav a.topics i {
 background: url('images/nav-circle-off.png') no-repeat center;
 .background-size(contain);
}
  • 说明 像 JavaScript 中 arguments一样,Mixins 也有这样一个变量:@arguments。
    @arguments 在 Mixins 中具是一个很特别的参数,当 Mixins 引用这个参数时,
    该参数表示所有的变量,很多情况下,这个参数可以省去你很多代码。

.boxShadow(@x:0,@y:0,@blur:1px,@color:#000){
 -moz-box-shadow: @arguments;
 -webkit-box-shadow: @arguments;
 box-shadow: @arguments;
 }
 #header {
 .boxShadow(2px,2px,3px,#f36);
 }

变量写法

less代码

/**
 大家都遇到过这样的问题
 我们做换肤功能的时候都有一个主色调,
 我们写完了代码设计师说我想更换个主色调,
 这时候你就会发现,我有100个地方用了主色调,
 然后只能苦逼的改100次
 太难受了!!有木有??有一个变量直接提出来多好?

**/
//定义一个变量
@colorFff:#fff;

//用法
footer{
 background-color: @colorFff
}
nav{
 color: @colorFff;
}
header{
 border-right:1px solid @colorFff;
}

最终生成的代码

footer {
 background-color: #ffffff;
}
nav {
 color: #ffffff;
}
header {
 border-right: 1px solid #ffffff;
}

代码片段写法

less代码

//又是重复代码,less告诉你可以这么写 有没有觉得自己很会过日子,原来可以这么省

//定义一个公共样式
.icon20{
 width: 20px;
 height: 20px;
 display: inline-block;
}

//用起来
.icon-my{
 .icon20;
 background: url('images/nav-my-off.png') no-repeat center;
 .background-size(contain);
}
.icon-car{
 .icon20;
 background: url('images/nav-car-off.png') no-repeat center;
 .background-size(contain);
}

对应生成的css
又是重复代码,less告诉你可以这么写 有没有觉得自己很会过日子,原来可以这么省

.icon-my{
 width: 20px;
 height: 20px;
 display: inline-block;
 background: url('images/nav-my-off.png') no-repeat center;
}

.icon-car{
 width: 20px;
 height: 20px;
 display: inline-block;
 background: url('images/nav-car-off.png') no-repeat center;
}

有时候我们需要引用一段less文件

写法

/* LESS Document */
//引入一个公共的less文件
@import "base.less";

嵌套写法

//这样的css代码你该不陌生
.shopcar-item {
 font-size: 1.5rem;
 background-color: #ffffff;
 position: relative;
 padding: 10px 10px 10px 70px;
 border-bottom: 1px solid #ededed;
}
.shopcar-item img {
 width: 100%;
}
//我要选img必须加上前边的那个,好吧 这样还可以接受,那么这样呢?
.shopcar-item .item-con .add-btn,
.shopcar-item .item-con .mul-btn {
 display: inline-block;
 padding: 5px 10px;
 background-color: #ff4354;
 color: #ffffff;
 border-radius: 5px;
 margin: 0 5px;
}

我们来看看less怎么写

//看看 嵌套关系清晰明了 告别冗长的选择器
.shopcar-item {
 font-size: 1.5rem;
 background-color: #ffffff;
 position: relative;
 padding: 10px 10px 10px 70px;
 border-bottom: 1px solid #ededed;

 img {
 width: 100%;
 }

 .item-con{
 position: relative;

 .add-btn,.mul-btn{
 display: inline-block;
 padding: 5px 10px;
 background-color: #ff4354;
 color: #ffffff;
 border-radius: 5px;
 margin: 0 5px;
 }
 }
}

并且写法

用less之前我们这么写

.nav {
 background-color: #ededed;
}
.nav.focus {
 background-color: #cccccc;
}
.nav:after {
 content: "";
 display: block;
 width: 100px;
 height: 100px;
}

less告诉你,我们可以这么写,一个元素的各种状态一目了然

.nav{
 background-color: #ededed;

 &.focus{
 background-color: #cccccc;
 }

 &:after{
 content: "";
 display: block;
 width: 100px;
 height: 100px;
 }

}

运算及函数

//运算及函数
@init: #111111;
@transition: @init*2;
.switchColor {
 color: @transition;
}

最终生成的样式

.switchColor {
 color: #222222;
}
  • 上面的例子中使用 LESS 的 operation 是 特性,
    其实简单的讲,就是对数值型的 value(数字、颜色、变量等)
    进行加减乘除四则运算

我们做响应式布局适配的时候经常要计算rem,

用less告别手动计算

.px2rem(@name, @px){
 @{name}: @px / 75 * 1rem;
}

.orderList{
 .px2rem(font-size,32);
 background-color:#E36264;
 width:100px;
 height:200px;
}


//最终生成的css
.orderList {
 font-size: 0.42666667rem;
 background-color: #E36264;
 width: 100px;
 height: 200px;
}

less这么好用怎么用??

  • 在浏览器端用

<link rel="stylesheet/less" type="text/css" href="index.less" />
<script type="text/javascript" src="js/less.2.5.3.js"></script>
//注:
1、顺序不能错
2、设置属性 rel="stylesheet/less" 
3、代码需要服务器环境运行
  • 编译之后引用css文件
    我推荐使用Koala.exe 下载地址
    多语言支持 支持Less、Sass、CoffeeScript 和 Compass Framework。
    实时编译 监听文件,当文件改变时自动执行编译,这一切都在后台运行,无需人工操作。
    编译选项 可以设置各个语言的编译选项。
    项目配置 支持为项目创建一个全局配置,为文件设置统一编译选项。
    错误提示 在编译时如果遇到语法的错误,koala将在右下角弹出错误信息,方便开发者定位代码错误位置。
    跨平台 Windows、Linux、Mac都能完美运行。

koala.png

  • 设置语言

lang.png

  • 添加项目

Paste_Image.png

  • 编译less文件
    手动运行 【执行编译】或者点击文件勾选自动编译,它会自动检测文件更改并重新编译

Paste_Image.png

其他用法参见 LESS官网

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码