css预处理器

2023-10-29

一. 为什么会出现css预处理

CSS不是一种编程语言,仅仅只能用来编写网站样式,在web初期时,网站的搭建还比较基础,所需要的样式往往也很简单。但是随着用户需求的增加以及网站技术的升级,css一成不变的写法也渐渐不再满足于项目。没有类似js这样的编程语言所有的变量,常量以及其他的编程语法,css的代码难免会显得臃肿以及难以维护。但是又没有css的替代品,于是css预处理器就作为css的扩展,出现在了前端技术中。

二.常见的css预处理器

发展至今,CSS预处理器的技术已经相当成熟,也涌现出了很多中不同的CSS预处理器语言。目前主流的有三种:Sass(Scss), Less, Stylus。

三.CSS预处理器的方便之处

–以Sass为例

–Sass主要的功能有:允许定义变量,允许CSS代码嵌套,函数功能,Mixin,继承等。 这些功能使得编写CSS更加贴合编程语言的习惯,使得CSS代码复用性更高,代码功能更加直观,也更加易于程序员的阅读与维护。

四.sass

它是一个通过转换scss 的 css文件,文件后缀名:.scss

sass有两种语法形式

首先是scss,也就是我们这个后缀形式的语法,是最新的一种形式。这种格式在 CSS3 语法的基础上进行扩展,这意味着每个CSS样式表是一个同等的SCSS文件。此外,SCSS 也支持大多数 CSS hacks 写法以及浏览器专属前缀语法,这种语法的样式表文件需要以 .scss 作为拓展名。

另一种,也是最早的语法,被称为缩进语法。它提供了一种更加简洁的方式来书写CSS。它使用缩进而不是花括号来表示选择器的嵌套,用换行而不是分号来分隔属性,一些人认为这样做比 SCSS 更容易阅读,书写也更快速。缩排语法具有 Sass 的所有特色功能,虽然有些语法上稍有差异。使用此种语法的样式表文件需要以 .sass 作为扩展名。

主要功能

  • 可以使用变量、常量;

  • 允许css代码嵌套;

  • 混入Mixin;

  • 继承;

  • 循环语句等功能。

这些功能使得编写css更加贴合编程语言的习惯,从而更有效有弹性的写出CSS

1.变量(Variables)

变量的提供,可以避免由于设计师频繁更改某一全局属性(比如整体颜色风格),而引起的被动增加工作量问题。

变量的使用:以$开头,有全局变量局部变量

sass的变量必须是$开头,后面紧跟变量名,变量值和变量名之间需要使用冒号(:)分隔开(就像CSS属性设置一样),如果值后面加上!default则表示默认值。

$bgColor: #ffffff; // 全局变量
div { 
  $width: 1000px; // 局部变量
  width: $width;
  background: $bgColor;
}

变量用在属性中

变量用在属性中,需要写在#{ }中,如下:

$posi: left;
div { 
  border-#{$posi}: 1px solid $color;
}

2.嵌套(Nesting)

Sass允许代码嵌套,用于选择后代。相对于css原生的后代选择器,嵌套样式的代码,会更加直观。包括选择器嵌套,属性嵌套。

选择器嵌套

选择器嵌套:在一个选择器中嵌套另一个选择器来实现继承,增强了sass文件的结构性和可读性。

在选择器嵌套中,可以使用&表示父元素选择器,示例如下:

scss

#top_btn{
  line-height: 40px;
  text-transform: capitalize;
  background-color:#333;
  li{
    float:left;
  }
  a{
    display: block;
    padding: 0 10px;
    color: #fff;

    &:hover{
      color:#ddd;
    }
  }
}

css:

#top_btn{
  line-height: 40px;
  text-transform: capitalize;
  background-color:#333;
}  
#top_btn li{
  float:left;
}
#top_btn a{
  display: block;
  padding: 0 10px;
  color: #fff;
}
#top_btn a:hover{
  color:#ddd;
}

属性嵌套

除了选择器可以嵌套,属性伪类也可以嵌套。

属性嵌套指的是有些属性拥有同一个开始单词,如border-width,border-color都是以border开头。

示例:

.main-container {   
	&-top {  // 选择器嵌套     
		background {      
 			color: red;   //属性嵌套    
 		 }    
  	&:hover {  // 伪类嵌套      
    		color: green;   
      }  
  }
 }

 3.混合(Mixins)

Mixins可以将一部分样式抽出,作为单独定义的模块,被很多选择器重复使用。

例如:某段CSS样式经常要用到多个元素中,在CSS预处理器语言中,可以为这些公用的CSS样式定义一个Mixin,然后在需要使用这些样式的地方直接调用定义好的Mixin。

这是一个非常有用的特性,Mixins 被当作一个公认的选择器,还可以在Mixins中定义变量或者默认参数。

声明的@mixin通过@include来调用。

无参数mixin:

@mixin center-block {   
	 margin-left:auto;    
	 margin-right:auto;}
	 .btn{    
	 @include center-block;
}

 css:

.btn{    
	margin-left:auto;    
	margin-right:auto;
}

 有参数mixin:

sass中使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css预处理器 的相关文章

  • Webpack / ES6:如何导入样式表

    我看到像 bootstrap 这样的存储库开始在它们的中包含额外的标签package json 文件 例如 style 和 less https github com twbs bootstrap blob v4 0 0 alpha 2 p
  • 如何在 Angular 2 中使用 Less?

    我想知道如何在我的 Angular 2 项目中添加更少的编译 因为每个组件都有自己的 css 文件 现在将是 less文件 我不确定如何使文件编译为 css 我也用谷歌搜索了这个问题 但没有找到任何解决我的问题的方法 EDIT为了让我的问题
  • 使用 LESS mixin 添加供应商前缀

    我收到此混合的语法错误 vendors statement statement moz statement webkit statement 任何方法都可以做到这一点 或者混合变量必须位于 a 的右侧 从 Less v2 开始 你可以使用自
  • 继承位于另一个文件中的css类

    我正在使用引导程序 并且更少 我希望我的一个类继承自引导类 问题是我正在使用 CDN 的引导程序 并且不想在本地有任何引导程序文件 是否可以使用 less 从 cdn 文件导入 css 类或继承文件中没有的类 您无需安装任何东西 只需下载您
  • 如何使用 Bower 作为包管理器获取 Less v.2.0.0 的 Rhino 版本

    我正在使用 less js 的 Rhino 版本 使用 Bower 将其提取到我的开发环境中 在 1 7 5 下 一切正常 bower 将获得所有不同的版本 Node 和 Rhino 版本都将存储在我的环境中 最近更新到 2 0 0 后 似
  • LESS @import:将路径传递给 lessc

    我想在父主题和子主题中使用 LESS 样式表 其中大部分样式表信息由父主题指定 子主题只需覆盖一些文件 这可以通过 LESS 的 Ruby 版本实现 如下所示 var parser new less Parser paths lib Spe
  • 使用 LESS 将样式应用于子元素

    这有效 layoutList background color CFCFCF layoutList gt entityCard hover background color FFFFFF border 1px solid yellow 为什
  • 更少的 mixin 和变量

    我有以下混合 iconFont color green font size 18px color color font size font size 如果我只想更改第二个变量值 我需要编写第一个变量默认值吗 h1 iconFont gree
  • 如何使用 16 或 24 列的 bootstrap

    我需要一些帮助将 bootstrap 2 0 4 设置为 16 或 24 列 而不是默认的 12 列 我无法理解我做错了什么我尝试了 bootstrap 站点上的自定义选项 并尝试更改变量中的网格变量 less 文件并使用 Crunch 重
  • 如何在 LESS CSS 嵌套类上指定 html 标签?

    我有一个类用于article and a sectionHTML5 标签 在家里
  • Less 和 Bootstrap:如何使用 span3 (或 spanX [任意数字])类作为 mixin?

    是否可以添加span3类中的 mixin 以避免将其放入 HTML 中的每个元素中 就像是 myclass span3 other rules EDIT 抱歉 我忘记指定一个重要细节 span3是 Bootstrap 的标准类 我在Boot
  • ASP MVC Less 文件给出: 调用目标已引发异常

    我有一个简单的 asp net mvc 4 站点 使用较少的文件 当我在本地电脑上运行它时 它工作正常 但是当我将其发布到服务器时 我收到以下错误 During the output text content of processed as
  • Webpack 2 的语义 UI 问题

    一直在努力使用 Webpack 2 进行语义 ui 设置 我遇到了一些与默认语义 ui 主题中的字体相关的错误 以及另一个关于image webpack loader ERROR in css loader lessPlugins opti
  • 如何调用 less.js 函数

    我什至不太确定如何问这个问题 LESS CSS框架包含几个操作颜色的函数 我想知道如何自己调用这些函数来修改颜色 问题是这些函数位于另一个函数内部并定义如下 function tree tree functions darken funct
  • 在 Dockerfile 中安装节点?

    我是AWS elastic beanstalk的用户 我遇到了一些问题 我想用 less node 构建我的 CSS 文件 但我不知道在使用 jenkins 构建时如何在 dockerfile 中安装节点 这是我在 docker 中使用的安
  • 将两个 .less 文件合并为一个

    假设我少了两个文件 first less a b font size 13px color lime and second less import first less a font family sans serif 我想要一种将它们组合
  • Bootstrap 3:如何将默认网格设置为 960px 宽度?

    我正在使用 Bootstrap 3 客户希望将网站容器宽度设置为 960px 我是否直接编辑 CSS 文件 或者最好的方法是什么 我听说过一些关于 少 的事情 我可以自定义下载吗 谢谢 更新 该网站不需要响应 所以我可以禁用响应性 只需将
  • LESS 循环中的多个选择器

    我使用以下代码使用 LESS CSS 生成列布局 columnBuilder index when index lt columnCount container columnCount grid index width unit baseW
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 带有相对路径的 LESS CSS 背景

    我在使用 LESS 作为我的网站的样式表时遇到了问题 就我个人而言 我宁愿在CSS中使用相对路径而不是绝对路径 这只是我的习惯 但是现在当我使用带有导入功能的LESS时 我遇到了如下所示的问题 我有一个main less根文件夹中的文件 i

随机推荐

  • JVM记一次堆内存溢出OutOfMemoryError: Java heap space

    项目场景 前段时间现场报了一个内存溢出的OutOfMemoryError Java heap space的问题 这个问题十分典型 所以记录下来 希望能帮助到看这篇文章的朋友 问题描述 问题项目 这个问题出现在省网的BOSS系统 这是一个BS
  • led灯条串联图_串联式电路 - 自制12vled灯电路图(五款设计电路图分享)

    2 双电解电容串联式电路 判断要点 这种电路从220V整流出来 有两个电解电容串联滤波 而电容的中心点连接到灯管电路 后面的自激电路也大同小异 高频变压器B次级出来通过灯管灯丝只串有一个高耐压的电容C 这种类型的电路改制时只需要把灯管拆掉
  • [LeetCode] Valid Triangle Number 合法的三角形个数 (Java)

    题目 Given an array consists of non negative integers your task is to count the number of triplets chosen from the array t
  • 使用Mask-RCNN训练自己的数据集看这一篇就够了,从制作数据集开始一步步教你如何玩转Mask-RCNN(保姆级教程)

    一 安装labelme 深度学习算法等基于神经网络的算法都是基于数据驱动的 数据的好坏会影响你最后生成的模型的好坏 在使用Mask RCNN时 第一件事就是标注数据集 这里我们默认你已经配置好了anaconda的环境 如果你没有配置好可以参
  • 大一上--数科作业(连载完结篇)

    说明 read me please 本篇目旨在讲解 所附代码为片段截取式 每一个片段侧重于展现一项功能 不同片段各有省略和重合部分 完整项目代码详见GitHub哦 注意看代码注释 可以说是 相 当 之 详 细 不吹 目录 功能要求 流程概况
  • python3 杀死进程

    在windows10杀死进程 exe os system taskkill f im s exe 转载于 https www cnblogs com shaosks p 10112934 html
  • Idea HTTP Proxy代理设置

    我们开发项目时 经常会和第三方接口打交道 有些第三方项目为了安全起见 会把项目部署在 内网 环境 不对外暴露 通常会提供VPN代理才能访问到资源 以IDEA开发举例 配置HTTP代理的方式如下 左上角File gt Setting 找到如下
  • veracrypt源码编译

    环境准备 1 windows7 旗舰版 64位 2 vs2010专业版 VS2010 旗舰版和专业版 下载 3 Microsoft Visual C 1 52 microsoft visual c 1 52 编译16位程序VC版本 16位
  • 查询及删除重复记录的方法

    一 1 查找表中多余的重复记录 重复记录是根据单个字段 peopleId 来判断 select from people where peopleId in select peopleId from people group by peopl
  • Fabric-商业票据项目说明

    商业票据项目 PaperNet network PaperNet是一个商业票据网络 允许适当授权的参与者发行 交易 赎回和评级商业票据 PaperNet 商业票据网络 6个机构参与 行为有 发行 购买 出售 赎回 评级 MagentoCor
  • 最长公共子序列-动态规划-python

    题目描述 给定一个长度为 N 数组 a 和一个长度为 M 的数组 b 请你求出它们的最长公共子序列长度为多少 输入描述 输入第一行包含两个整数 N M 分别表示数组 a 和 b 的长度 第二行包含 N 个整数 a1 a2 an 第三行包含
  • matlab相关性分析

    相关性分析 一 皮尔逊相关系数 person 计算公式 样本协方差 C o v x y
  • 三个可长期发展的网络副业,稳定的兼职渠道,不再为网络做苦力

    绝大多数互联网从业者 实际上脑中想得仅有一件事 没脑子的打金月入破万 不否认这类第二职业也是有 但是也是必须必要条件的 你必须早期非常辛苦 后边才可能保证大批量躺着赚钱 而与一开始就听话照做 这也是两回事 我一直都不太建议去做这些稳准狠项目
  • 【shell重试脚本示例】

    handle interrupt echo Received Ctrl C to terminate the command exit 1 log info echo e echo e e 1 32m INFO e 0m 1 echo e
  • ssh远程登录协议和tcp wappers

    目录 SSH服务 优点 SSH客户端和服务端 SSH端口 配置文件 ssh原理 公钥传输原理 ssh加密通讯原理 配置OpenSSH服务端 服务监听选项 登录 scp远程复制 TCP Wrappers 策略的配置格式 轻量级自动化运维工具p
  • Qt中文手册 之 QTreeWidgetItem

    头文件 include
  • umi 导航菜单的空白页问题

    主思路 routes里的上级菜单必须设定path 否则下一个二级菜单会出现空白页 详情 umi的导航菜单是在 config routes ts 里设定的 比如 export default name home path home compo
  • 在计算机睡眠时主机关闭,电脑为什么睡眠后就关机怎么办

    1 电脑睡眠后再次启动时就关机怎么办 桌面 属性 屏幕保护程序 在下方有个 在按下计算机睡眠按钮时 你选中 待机 补充 再按下待机按钮啊 补充 你待机后 想重新打开电脑就再按下电源按钮就行了啊 不行的话桌面 属性 屏幕保护程序 电源 高级
  • MongoDB 查看集合中所有的数据

    找到mongodb的安装路径下bin目录 运行mongo exe 输入show dbs 命令 查看数据库 进入要使用的数据库 命令 use 数据库名字 查看该数据库中的集合 命令 show collections 查看里面所有的数据 命令
  • css预处理器

    一 为什么会出现css预处理器 CSS不是一种编程语言 仅仅只能用来编写网站样式 在web初期时 网站的搭建还比较基础 所需要的样式往往也很简单 但是随着用户需求的增加以及网站技术的升级 css一成不变的写法也渐渐不再满足于项目 没有类似j