rem布局之less的基本使用

rem布局之less的基本使用

less是css的预处理语言,它拓展了css功能,使我们在编写样式时更加方便,通常和rem配合使用,下面看一下它的基本使用:

1.安装.

首先需要安装nodejs,这里可以自行百度,不再赘述.

然后通过npm install -g less命令安装less,我在mac上安装时遇到报错Error: EACCES: permission denied, access '/usr/local/lib/node_modules',查了查是由于没有权限造成的,在前面加上sudo然后输入密码即可: sudo npm install -g less.

安装成功通过 lessc -v查看版本.

2.Easy LESS的安装.

在vscode上可以安装插件Easy LESS,可以帮我们自动编译less文件为css.

新建一个study文件夹,在里面新建index.html,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <title>less</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
    </style>
</head>

<body>
    <nav>
        less
    </nav>
</body>

</html>

然后新建styleLess.less文件,在里面编写我们的less代码:

@height100: 100px;
@font50: 50px;
@gray: #ccc;

nav {
    width: 100%;
    height: @height100;
    background-color: @gray;
    text-align: center;
    line-height: @height100;
    font-size: @font50;
}

当我们安装了Easy LESS后,Command+s保存less文件时会自动为我们编译出相同名称的css文件:

nav {
  width: 100%;
  height: 100px;
  background-color: #ccc;
  text-align: center;
  line-height: 100px;
  font-size: 50px;
}

这时只要在html中引入styleLess.css即可:

<link rel="stylesheet" href="styleLess.css">

效果如下:

3.变量.

通过上面的小案例,可以看到在less中,我们可以使用变量来定义一些经常使用的值,变量的定义需要使用符号@,名称中不能含有特殊字符,也不能使用数字开头,上面的:

@height100: 100px;

@font50: 50px;

@gray: #ccc;

都是变量的定义,使用的时候直接输入@+变量名即可.

4.嵌套.

(1).后代选择器.

less中的子类选择器可以通过嵌套的方式来写,比如在nav标签中加一个span标签,把它的字体颜色改为红色:

<nav>
    less
    <span> ls</span>
</nav>

less:

@height100: 100px;
@font50: 50px;
@gray: #ccc;

nav {
    width: 100%;
    height: @height100;
    background-color: @gray;
    text-align: center;
    line-height: @height100;
    font-size: @font50;

    span {
        color: red;
    }
}

可以看到编译成css时,嵌套的代码会自动转为后代选择器:

nav {
  width: 100%;
  height: 100px;
  background-color: #ccc;
  text-align: center;
  line-height: 100px;
  font-size: 50px;
}
nav span {
  color: red;
}

(2).伪类|伪元素|交集选择器

写这几个样式时,在嵌套的时候要在选择器前面添加&符号,这样编译时会把他们加到本身选择器的后面,我们改一下代码:

<body>
    <nav>
        less
        <span> ls</span>
    </nav>

    <nav class="green">
        less
        <span> ls</span>
    </nav>
</body>

实现下面几个样式:

把nav.green字体设置为green.

当hover nav标签时,nav字体颜色改为pink.

为nav添加伪元素before,内容为233.

less代码如下:

@height100: 100px;
@font50: 50px;
@gray: #ccc;

nav {
    width: 100%;
    height: @height100;
    background-color: @gray;
    text-align: center;
    line-height: @height100;
    font-size: @font50;

    span {
        color: red;
    }

    &.green  {
        color: green;
    }

    &:hover {
        color: pink;
    }

    &::before {
        content: '233';
    }
}

这样在前面添加&符号时,编译时会自动生成以上3种选择器:

nav {
  width: 100%;
  height: 100px;
  background-color: #ccc;
  text-align: center;
  line-height: 100px;
  font-size: 50px;
}
nav span {
  color: red;
}
nav.green {
  color: green;
}
nav:hover {
  color: pink;
}
nav::before {
  content: '233';
}

效果如下:

hover:

5.计算.

在less中,我们可以直接进行加减乘除的计算,比如我们把上面nav中的字体大小放大指定的倍数:

@height100: 100px;
@font50: 50px;
@gray: #ccc;
@scale: 2;

nav {
    width: 100%;
    height: @height100;
    background-color: @gray;
    text-align: center;
    line-height: @height100;
    font-size: @font50 * @scale;

    span {
        color: red;
    }

    &.green  {
        color: green;
    }

    &:hover {
        color: pink;
    }

    &::before {
        content: '233';
    }
}

首先声明变量@scale,然后设置nav中的font-size在原有的基础上乘以@scale,生成的css如下:

nav {
  width: 100%;
  height: 100px;
  background-color: #ccc;
  text-align: center;
  line-height: 100px;
  font-size: 100px;
}
nav span {
  color: red;
}
nav.green {
  color: green;
}
nav:hover {
  color: pink;
}
nav::before {
  content: '233';
}

这里需要注意的是:

+-*/符号两边要留空格.

如果两个操作数有单位,会以前面的单位为准.

以上是less的基本使用方法,更详细的使用方法可以参考官方文档: