【CSS预处理语言】less快速入门

简介: 【CSS预处理语言】less快速入门

1.概述

CSS 预处理语言是一种基于 CSS 的语法扩展,允许开发者使用变量、嵌套规则、函数、运算等功能,以更高效、可维护和可扩展的方式编写样式。说得直白一点就是,原生的CSS写起来会很冗长,随着项目规模的扩大,其可读性和可维护性不佳。css预处理语言对css进行了扩展给其增加了一些可编程的能力,让css变得更具有可读性、更好维护。

打开less官网,我们可以清晰的看到less的介绍:

它是CSS,只是多了一点东西。


当然,css预处理语言,浏览器是无法直接识别的,浏览器只能识别原生的css,所以这中间需要有一个“翻译”的过程,用编译器将css预处理语言转化为浏览器可识别的原生css。在实际开发中,less的编译器常常托管给node环境,在node中直接使用npm等安包的方式less编译器的依赖。

2.安装

前文less的官网首页的截图可以清晰看到less官方的风格是很直接的直接就把依赖的安装、引入方式放在了官网入口,这里就不赘述了,这里要说的是如何在vs code种安装less的插件,让less在开发中能被更好的支持。安装以下插件:easy less。

3.语法

3.1.变量

less支持以变量的方式来存储和重用值。使用变量可以使代码更易维护,因为你只需更改变量的值,而不需要在代码的多处进行修改。在LESS中,变量以@符号开头。

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./style.css"></link>
</head>
<body>
    <div class="container">
        <header></header>
        <section></section>
        <footer></footer>
    </div>
</body>
</html>
@width: 600px;
@color: #987;
 
.container{
    width: @width;
    height: 600px;
    background: @color;
}

效果:

3.1.嵌套

less支持以嵌套的方式来组织CSS,使得样式表的结构更加清晰,并且减少了重复的代码。通过嵌套,可以将子选择器嵌套在父选择器内,使得CSS规则更具层次感。

@width: 600px;
@color: #987;
 
.container{
    width: @width;
    height: 600px;
    background: @color;
    header{
        height:100px;
        background: #345;
    }
    //.class
    .section{
        
    }
    //#id
    #footer{
        
    }
}

3.2.Mixin

Mixin(混入),类似于方法调用,是一种将一组属性从一个规则集中包含("混合进入")到另一个规则集中的方法。

假设有以下类:

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}

可以在其它规则中混入(调用)这个规则:

#menu a {
  color: #111;
  .bordered();
}
.post a {
  color: red;
  .bordered();
}

3.3.extends

在LESS中,extends关键字用于创建一个选择器继承另一个选择器的样式。这种功能可以帮助你避免编写重复的样式规则,提高样式表的维护性。下面是extends关键字的用法和示例:

.button {
  display: inline-block;
  padding: 10px 20px;
  background-color: blue;
  color: white;
}
 
.primary-button {
  &:extend(.button);
  border: 2px solid yellow;
}
 
.secondary-button {
  &:extend(.button);
  background-color: green;
}

在这个例子中,.primary-button.secondary-button选择器分别继承了.button选择器的样式规则。.primary-button添加了一个黄色的边框,而.secondary-button改变了背景颜色为绿色。通过extends关键字,你可以确保这些按钮样式的一致性,并在需要的时候轻松地进行修改。

3.4.Mixin和Extends的区别

mixin和extends都用于样式的复用,但二者之间有一些区别:

  • Mixin 具备参数化能力,可以在调用时传递参数,生成不同的样式。它提供了更灵活的样式复用方式,适用于需要根据参数值动态生成样式的情况。
  • Extend 是简单的样式复用机制,用于将一个选择器的样式规则直接复制到另一个选择器上,没有参数传递的功能。Extend在生成的CSS中更加高效,因为它合并了选择器,减少了重复。

3.5.伪类

在CSS中,伪类(pseudo-classes)用于选择元素的特定状态或位置,而在LESS中,你也可以使用这些伪类。以下是一些常用的CSS伪类以及它们在LESS中的用法:

hover 伪类

在鼠标悬停在元素上时应用样式。

在LESS中的用法:

a {
  &:hover {
    color: red;
  }
}

active 伪类

在元素被激活(例如鼠标按下按钮时)时应用样式。

在LESS中的用法:

button {
  &:active {
    background-color: green;
  }
}

focus 伪类

在元素获得焦点时应用样式,通常在用户使用键盘或鼠标点击时触发。

在LESS中的用法:

input {
  &:focus {
    border-color: blue;
  }
}

nth-child() 伪类

选择父元素的特定子元素。

在LESS中的用法:

li {
  &:nth-child(odd) {
    background-color: lightgray;
  }
}

not() 伪类

排除特定元素或元素类型的选择。

在LESS中的用法:

input:not([type="submit"]) {
  border: 1px solid gray;
}

3.6.媒体查询

在LESS中,媒体查询(Media Queries)是一种用于根据设备特性(如屏幕宽度、设备类型等)应用不同样式的技术。媒体查询允许你在不同的设备或屏幕尺寸下为同一个元素定义不同的样式规则,以提供更好的用户体验。

LESS中的媒体查询可以与嵌套规则结合使用,以便更好地组织样式表。

以下是一个使用LESS的媒体查询的基本示例:

// 定义基本样式
.header {
  background-color: #3498db;
  color: white;
}
 
// 媒体查询:屏幕宽度小于等于768px时应用不同样式
@media screen and (max-width: 768px) {
  .header {
    background-color: #2ecc71;
  }
}
 
// 媒体查询:屏幕宽度小于等于480px时应用不同样式
@media screen and (max-width: 480px) {
  .header {
    background-color: #e74c3c;
  }
}

在这个示例中,.header 类定义了基本样式。然后,使用媒体查询根据屏幕宽度应用不同的背景颜色。如果屏幕宽度小于或等于768px,.header 的背景颜色将变为绿色;如果屏幕宽度小于或等于480px,背景颜色将变为红色。

在LESS中,你还可以使用嵌套的媒体查询,使代码更加整洁:

.header {
  background-color: #3498db;
  color: white;
 
  @media screen and (max-width: 768px) {
    background-color: #2ecc71;
  }
 
  @media screen and (max-width: 480px) {
    background-color: #e74c3c;
  }
}

5.node中使用less

一般在现在的实际项目中,除了要引入less依赖以外还要引入less-loader,less-loader用于webpack对于less的打包,less和less-loader之间有版本对应关系,使用的时候查一下即可。

此处以引入less3和less-loader7为例:

npm i less@3 less-loader@7 -S

6.总结

本文只是罗列了less的一些核心特性,除了这些核心特性外,less还支持了一些其它的注入资源隔离等特性,有兴趣可以详见:

Less.js 中文网

目录
相关文章
|
2月前
|
前端开发 开发者
CSS预处理器Less、Scss
【10月更文挑战第3天】
126 59
|
24天前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
36 5
|
1月前
|
前端开发
create-react-app 如何使用 less/sass 和 react-css-modules?
本文详细介绍了在 create-react-app 项目中如何使用 less/sass 和 react-css-modules 来管理和应用样式。首先,通过安装相应依赖并配置 webpack 支持 less/sass;接着,介绍如何使用这些预处理器编写样式;最后,讲解了如何配置和使用 react-css-modules 实现样式的模块化管理,以及如何结合使用 less/sass 和 react-css-modules 提高开发效率和代码质量。
31 3
|
1月前
|
前端开发 Ruby
CSS 预编语言的区别
【10月更文挑战第24天】Sass、Less 和 Stylus 等 CSS 预编语言在语法特点、功能特性、性能表现、社区和生态系统等方面存在着不同之处。在选择使用哪种预编语言时,需要综合考虑项目需求、团队技术偏好、个人习惯等因素。你可以根据具体情况进行评估和选择,以充分发挥这些语言的优势,提高前端开发的效率和质量。
|
1月前
|
存储 前端开发 编译器
对 CSS 预编语言的理解
【10月更文挑战第24天】在前端开发领域,CSS 预编语言是一种重要的工具和技术,它们为我们提供了更强大、更灵活和更高效的方式来编写和管理 CSS 代码。以下是对 CSS 预编语言的深入理解。
|
1月前
|
前端开发 开发者
如何快速掌握 CSS 预编语言
【10月更文挑战第24天】快速掌握 CSS 预编语言需要时间和耐心,不要急于求成。通过系统的学习、实践和不断积累经验,你将逐渐熟练掌握 CSS 预编语言,并能够在实际开发中灵活运用,提高开发效率和代码质量。
expectedcss(css-rcurlyexpected),使用:变红怎么整,给他改成less就可以了
expectedcss(css-rcurlyexpected),使用:变红怎么整,给他改成less就可以了
|
6月前
|
XML 数据采集 前端开发
Python第二章(HTMl文件,CSS语言与第三方库Beautiful Soup)
Python第二章(HTMl文件,CSS语言与第三方库Beautiful Soup)
|
24天前
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
49 7
下一篇
DataWorks