搜索
首页web前端css教程掌握 CSS 预处理器:Sass、Less 和 Stylus 指南

CSS 学习者们好!欢迎来到我们的小角落!?

介绍

诸如 SassLessStylus 之类的预处理器可以改变您编写样式的方式,引入变量、嵌套、混合等功能。它们本身不是 CSS,而是编译为 CSS 的工具,提供更强大且可维护的样式设置方法。让我们更深入地研究这些神奇的工具。

您将在本文中学到什么?

  • 了解预处理器:它们的本质以及它们如何增强 CSS。

  • 高级功能:超越循环、条件和更复杂嵌套的基础知识。

  • 选择您的预处理器:更详细的比较,包括社区支持和工具。

  • 实际示例:演示高级用例并提供详细说明。

  • 最佳实践:有效使用预处理器的技巧。

  • 资源:下一步去哪里继续学习。

什么是 CSS 预处理器?

CSS 预处理器扩展了 CSS 语言,添加了允许更加模块化、可读和可维护的样式表的功能。它们编译成标准 CSS,然后由浏览器使用。

CSS 预处理器的主要功能

变量:变量允许您存储想要轻松重用和更改的信息。

Sass 示例 (SCSS):

$primary-color: #3498db;

body {
    background-color: $primary-color;
}

这里, $primary-color 定义一次并在整个样式表中使用。如果颜色需要改变,只需在一处更新即可。

?顺便说一句,这是一篇关于 Sass 和 SCSS 之间差异的精彩文章。

嵌套:嵌套可让您对相关样式进行分组,使 CSS 更具可读性。

Less 示例:

.nav {
    background-color: #f2f2f2;
    ul {
        list-style: none;
        padding: 0;
        li {
            display: inline-block;
            a {
                color: #333;
                text-decoration: none;
            }
        }
    }
}

这嵌套了 .nav、其 ul、li 和 a 元素的样式,将相关样式保持在一起。

Mixins: Mixins 是可重用的类或属性集,可以包含在其他选择器中。

手写笔示例:

(注意:是的,这是 Stylus,不是 SCSS,但由于我们没有这个选项,所以我爱上了 SCSS)

border-radius(n)
    -webkit-border-radius n
    -moz-border-radius n
    border-radius n

.button
    border-radius(5px)

border-radius mixin 使用参数 n 定义。 .button 类使用此 mixin,为不同的浏览器前缀应用相同的边框半径。

函数:函数可以动态生成CSS。

Sass 示例 (SCSS)

@function pxToEm($px, $base: 16px) {
    @return ($px / $base) * 1em;
}

body {
    font-size: pxToEm(14);
}

此函数将像素转换为em,从而更容易在不同的基本字体大小之间保持一致的排版。

导入:导入允许您将 CSS 拆分为多个文件以便更好地组织。

Less 示例:

$primary-color: #3498db;

body {
    background-color: $primary-color;
}

变量文件被导入到主文件中,允许在需要时使用@link-color。

?注意:您可以使用 codepen.io 检查上述示例的结果并用代码进行更多实验!

实际用例

响应式设计 - Sass (SCSS*) 示例:*

.nav {
    background-color: #f2f2f2;
    ul {
        list-style: none;
        padding: 0;
        li {
            display: inline-block;
            a {
                color: #333;
                text-decoration: none;
            }
        }
    }
}

使用变量作为断点使响应式设计更加易于管理和一致。

结果 :

Mastering CSS Preprocessors: A Guide to Sass, Less, and Stylus

主题 - 更少示例:

border-radius(n)
    -webkit-border-radius n
    -moz-border-radius n
    border-radius n

.button
    border-radius(5px)

可以通过更改@theme变量轻松切换主题,然后应用相应的主题样式。

结果 :

Mastering CSS Preprocessors: A Guide to Sass, Less, and Stylus

CSS 预处理器的高级功能

重复循环:循环允许您迭代列表或映射,通过动态生成 CSS 来减少重复。

Sass (SCSS) 示例:

@function pxToEm($px, $base: 16px) {
    @return ($px / $base) * 1em;
}

body {
    font-size: pxToEm(14);
}

这里,循环创建不同字体大小的类,而无需手动编写每个规则。此循环生成三个具有不同字体大小的类,展示循环如何减少 CSS 中的重复性。

动态样式的条件:条件使您能够根据特定条件应用样式,使您的 CSS 更加动态。

Less 示例:

// _variables.less
@link-color: blue;

// main.less
@import "_variables.less";

a {
    color: @link-color;
}

使用条件,您可以根据变量值应用不同的样式,非常适合创建动态组件。在此示例中,警报的外观根据 @type 是否为警报而变化。

父选择器引用:父选择器引用可让您在嵌套规则中优雅地修改或扩展父选择器。

手写笔示例:

(注意:是的,这是 Stylus,不是 SCSS,但由于我们没有这个选项,所以我爱上了 SCSS)



    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Responsive Container Example</title>
    <link rel="stylesheet" href="styles.css">


    <div>





<pre class="brush:php;toolbar:false">$breakpoint-sm: 576px;
$breakpoint-md: 768px;

.container {
    width: 100%;

    @media (min-width: $breakpoint-sm) {
        width: 540px;
    }

    @media (min-width: $breakpoint-md) {
        width: 720px;
    }
}

这个 Stylus 示例展示了如何简洁地将样式应用于父级、其悬停状态和嵌套元素。它还演示了如何使用 & 引用父选择器或在嵌套规则的条件语句中使用它。

数学运算:预处理器允许在 CSS 中进行数学运算,使您能够动态计算网格宽度等值。

Sass (SCSS) 示例:

$primary-color: #3498db;

body {
    background-color: $primary-color;
}

此示例使用数学根据网格系统设置宽度。

高级 ~ 实际用例

复杂主题 - Sass (SCSS) 示例:

.nav {
    background-color: #f2f2f2;
    ul {
        list-style: none;
        padding: 0;
        li {
            display: inline-block;
            a {
                color: #333;
                text-decoration: none;
            }
        }
    }
}

上面的代码演示了如何使用地图和循环动态创建和应用主题,从而轻松切换主题。

结果:

Mastering CSS Preprocessors: A Guide to Sass, Less, and Stylus

响应式实用程序 - 较少示例:

border-radius(n)
    -webkit-border-radius n
    -moz-border-radius n
    border-radius n

.button
    border-radius(5px)

这会为不同的标题大小创建实用程序类,展示如何轻松生成响应式实用程序。

结果 :

Mastering CSS Preprocessors: A Guide to Sass, Less, and Stylus

选择预处理器

  • Sass(具有 SCSS 语法)被广泛使用,具有出色的工具,并且由于其功能通常被认为更强大。

  • Sass 具有强大的功能,例如用于继承样式的 @extend 指令,并且受到 Compass 等工具的广泛支持。

  • Less 以其简单性和与 CSS 的相似性而闻名,使其成为预处理的温和介绍。

  • Less拥有基于JavaScript的编译器,有利于浏览器内编译进行开发。

  • Stylus 提供了非常灵活的语法,您可以选择缩进而不是使用括号,这对于某些开发人员来说更具可读性。

使用预处理器的最佳实践

  • 模块化 CSS :将样式拆分为逻辑的、可重用的模块或部分。

  • 避免深层嵌套:虽然嵌套很强大,但嵌套太多会导致复杂且难以覆盖的 CSS。

  • 使用变量:对于颜色、尺寸或您可能需要在站点范围内更改的任何值。

  • 适度混合:将它们用于常见模式,但要小心过度使用,如果不能有效编译,这可能会使你的 CSS 膨胀。

  • Linting :使用 stylelint 等工具确保您的预处理器代码遵循最佳实践。

进一步学习的资源

萨斯:

  • 官方文档 :理解 Sass 语法和功能的最佳起点。

  • 高级 Sass 培训 :在实际项目中使用 Sass 的技巧和最佳实践。

  • Playground : 一个在线 Sass 游乐场,用于测试和共享 Sass 代码片段。

减:

  • 官方文档 了解所有功能 更少优惠。

  • Less Hat : Less 的 mixin 和函数的集合,对于常见的 CSS 任务很有用。 请注意,该项目并未得到积极维护。

  • Playground : 在浏览器中测试更少的代码。

手写笔:

  • 官方文档 :深入了解 Stylus 的功能。

  • Stylus 教程:学习 Stylus - 初学者到中级用户的分步指南。

  • Stylus REPL : 用于尝试 Stylus 代码的交互式环境。

通用 CSS 预处理器:

  • CSS 技巧 :有关预处理器的各种文章以及实际示例。

  • Smashing Magazine : CSS 预处理技术的深入文章。

  • Codeacademy :提供有关 CSS 预处理器的互动课程。

工具和集成:

  • Prepros : 用于编译预处理器的 GUI 工具,具有实时浏览器刷新功能。

  • Webpack 带有加载器: 用于将预处理器集成到您的构建管道中。

  • Koala : 一个开源跨平台 GUI 应用程序,用于编译 less、sass。 Koal 是我的最爱之一,但请注意,Koala 的项目已存档且未积极维护。

结论

像 Sass、Less 和 Stylus 这样的 CSS 预处理器不仅仅用于编写 CSS;还用于编写 CSS。他们致力于编写更智能、更易于维护的 CSS。它们引入了一定程度的抽象,允许更清晰、更有组织的样式表,并且它们为开发人员提供了 CSS 本身无法提供的功能。通过使用变量、嵌套、mixin 和其他高级功能,您可以显着提高项目的工作效率和可扩展性。

请记住,Sass、Less 或 Stylus 之间的选择不仅与功能有关,还与工作流程偏好、社区支持和工具集成有关。随着您使用这些工具不断成长,您会发现它们不仅加快了您的开发过程,而且还为 CSS 设计和架构开辟了新的可能性。

所以深入研究并尝试这些预处理器。继续学习,继续编码,愿您的样式表永远模块化且高效! ?


?大家好,我是 Eleftheria,社区经理、 开发人员、公共演讲者和内容创建者。

?如果您喜欢这篇文章,请考虑分享。

所有链接 | X | 领英

以上是掌握 CSS 预处理器:Sass、Less 和 Stylus 指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
揭开屏幕读取器的神秘面纱:可访问的表格和最佳实践揭开屏幕读取器的神秘面纱:可访问的表格和最佳实践Mar 08, 2025 am 09:45 AM

这是我们在形式可访问性上进行的小型系列中的第三篇文章。如果您错过了第二篇文章,请查看“以:focus-visible的管理用户焦点”。在

使用智能表单框架创建JavaScript联系表格使用智能表单框架创建JavaScript联系表格Mar 07, 2025 am 11:33 AM

本教程演示了使用智能表单框架创建外观专业的JavaScript表单(注意:不再可用)。 尽管框架本身不可用,但原理和技术仍然与其他形式的建筑商相关。

将框阴影添加到WordPress块和元素将框阴影添加到WordPress块和元素Mar 09, 2025 pm 12:53 PM

CSS盒子阴影和轮廓属性获得了主题。让我们查看一些在真实主题中起作用的示例,以及我们必须将这些样式应用于WordPress块和元素的选项。

使用GraphQL缓存使用GraphQL缓存Mar 19, 2025 am 09:36 AM

如果您最近开始使用GraphQL或审查了其优点和缺点,那么您毫无疑问听到了诸如“ GraphQl不支持缓存”或

使您的第一个自定义苗条过渡使您的第一个自定义苗条过渡Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一种使组件输入或离开文档(包括自定义Svelte Transitions)时动画组件的方法。

优雅且酷的自定义CSS卷轴:展示柜优雅且酷的自定义CSS卷轴:展示柜Mar 10, 2025 am 11:37 AM

在本文中,我们将深入研究滚动条。我知道,这听起来并不魅力,但请相信我,一个精心设计的页面是齐头并进的

展示,不要说展示,不要说Mar 16, 2025 am 11:49 AM

您花多少时间为网站设计内容演示文稿?当您撰写新的博客文章或创建新页面时,您是在考虑

NPM命令是什么?NPM命令是什么?Mar 15, 2025 am 11:36 AM

NPM命令为您运行各种任务,无论是一次性或连续运行的过程,例如启动服务器或编译代码。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器