- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
本项目需要使用 SCSS 来编写页面样式.
Sass (Syntactically Awesome Stylesheets)是一个 css 预处理器,而 SCSS 是 Sass 的一种语法格式,它完全兼容 CSS,同时扩展了 CSS 的功能,使得样式编写更加高效、灵活和模块化.
对于初学者,SCSS 是完全和 CSS 兼容的,这意味着几乎为零的学习曲线。SCSS 语法即是:它只是加了一些功能的 CSS。当你和没经验的开发者一起工作时这很重要:他们可以很快开始编码而不需要首先去学习 Sass.
此外,SCSS 还是 易于阅读 的,因为它是有语义的,而不是用符号表示。当你读到 @mixin,你就会知道这是一个 mixin 声明;当你看到 @include ,你就是在引用一个 mixin。他并没有用任何缩写,当你大声读出来时所有的都很明了.
还有,现在几乎所有 Sass 的工具,插件和 demo 都是基于 SCSS 语法来开发的。随着时间过去,SCSS 会变成大家首选的选择。比如,你现在很难找到一个 Sass 缩进语法的高亮插件,通常都只有 SCSS 的可以用.
本文以编写 404 页面为例,介绍 SCSS 的使用.
@import
或 @use
)组织样式文件。@if
)、循环(@for
)、和函数(@function
)等功能。SASS 的官网: https://sass-lang.com/ 。
中文文档: https://www.sass.hk/docs/ 。
可以使用变量存储颜色、字体大小等值,方便复用和管理.
// SCSS
$primary-color: #3498db;
$font-size: 16px;
body {
color: $primary-color;
font-size: $font-size;
}
转译后的 CSS
body {
color: #3498db;
font-size: 16px;
}
SCSS 支持嵌套语法,使样式层级结构更清晰,与 HTML 结构更接近.
// SCSS
nav {
ul {
margin: 0;
li {
display: inline-block;
a {
text-decoration: none;
color: $primary-color;
}
}
}
}
转译后的 CSS
nav ul {
margin: 0;
}
nav ul li {
display: inline-block;
}
nav ul li a {
text-decoration: none;
color: #3498db;
}
类似于函数,可以定义一段通用样式,并在多个地方调用.
// SCSS
@mixin flex-center {
display: flex;
justify-content: center;
align-items: center;
}
.container {
@include flex-center;
height: 100vh;
}
转译后的 CSS
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
使用 @extend 来复用已有的样式.
// SCSS
.btn {
padding: 10px 20px;
border-radius: 5px;
}
.btn-primary {
@extend .btn;
background-color: $primary-color;
color: white;
}
转译后的 CSS
.btn {
padding: 10px 20px;
border-radius: 5px;
}
.btn-primary {
padding: 10px 20px;
border-radius: 5px;
background-color: #3498db;
color: white;
}
SCSS 支持基本的数学运算,例如加减乘除.
// SCSS
$base-padding: 10px;
.box {
padding: $base-padding * 2;
margin: $base-padding / 2;
}
转译后的 CSS
.box {
padding: 20px;
margin: 5px;
}
多年来 node-sass 一直是 JavaScript 社区里的主流选择,它实际上只是 libsass 在 node 环境下的一个 wrapper, 编译 sass 文件的实际工作是 libsass 完成的.
在使用 node-sass 过程中遇到的很多问题实际上也是 libsass 引发的,libsass 是用 C/C++ 实现的,常见的问题是,在安装 node-sass 的过程中经常会出现安装失败的情况,又或者切换了 Node.js 版本发现 node-sass 需要重新安装才能用,如果你在 docker 中安装 node-sass 还会遇到由于缺少各种依赖导致 node-sass build 失败的情况,又或者在国内由于网络原因导致 node-sass 需要的二进制文件下载不下来而 build 失败.
现在,sass 官方已经使用 dart-sass 作为 sass 的主要实现:
Dart Sass is the primary implementation of Sass, which means it gets new features before any other implementation. It’s fast, easy to install, and it compiles to pure JavaScript which makes it easy to integrate into modern web development workflows. 。
所以安装命令如下:
yarn add sass --dev
yarn add sass-loader@7.1.0 --dev
注意 Vue2 使用的 webpack 版本是 3.6.0,所以这里的 sass-loader 必须使用 7.1.0 版本 。
(我被 TypeError: this.getOptions is not a function 这个报错折腾了大半天才搞定) 。
编辑 build/webpack.base.conf.js 文件下 module 里的 rules 标签,添加以下配置 。
{
test: /\.scss$/,
loaders: ['style', 'css', 'sass']
}
本项目是基于 Vue 的 SPA(单页应用),编写代码之后经过 webpack 打包成 HTML、CSS、JavaScript,前面的步骤也配置好了 SASS,可以直接在 .vue 文件里写 SCSS.
在页面代码 style 标签中把 lang 设置成 scss 即可.
<style scoped lang="scss">
</style>
这里我改了一下 src/views/404.vue 页面 。
<template>
<div class="site-wrapper site-page--not-found">
<div class="site-content__wrapper">
<div class="site-content">
<h2 class="not-found-title">404</h2>
<p class="not-found-desc">抱歉!您访问的页面<em>失联</em>啦 ...</p>
<el-button @click="$router.go(-1)">返回上一页</el-button>
<el-button type="primary" class="not-found-btn-gohome" @click="$router.push('/')">进入首页</el-button>
</div>
</div>
</div>
</template>
样式代码如下 。
.site-wrapper.site-page--not-found {
position: absolute;
top: 60px;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
.site-content__wrapper {
padding: 0;
margin: 0;
background-color: #fff;
}
.site-content {
position: fixed;
top: 15%;
left: 50%;
z-index: 2;
padding: 30px;
text-align: center;
transform: translate(-50%, 0);
}
.not-found-title {
margin: 20px 0 15px;
font-size: 8em;
font-weight: 500;
color: rgb(55, 71, 79);
}
.not-found-desc {
margin: 0 0 30px;
font-size: 26px;
text-transform: uppercase;
color: rgb(118, 131, 143);
> em {
font-style: normal;
color: #ee8145;
}
}
.not-found-btn-gohome {
margin-left: 30px;
}
}
改完之后的页面效果 。
不错,可以收工了~ 。
如果想单独使用 SCSS,可以直接调用 SASS 编译:
sass styles.scss styles.css
然后在 HTML 里引入 。
<link rel="stylesheet" href="styles.css">
最后此篇关于StarBlog博客Vue前端开发笔记:(3)SASS与SCSS的文章就讲到这里了,如果你想了解更多关于StarBlog博客Vue前端开发笔记:(3)SASS与SCSS的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我试图按部分组织我的 .css 文件,我需要从任何文件访问文件组中的任何类。在 Less 中,我可以毫无问题地创建一个包含所有文件导入的主文件,并且每个文件都导入主文件,但在 Sass 中,我收到一个
我有一个全局 main.scss 文件,我在其中声明了一个 .small-size-text{ font-size: 12px; } 并且在作为login.scss 的子组件文件中,我将另一个类定
这是一个我完全不明白的奇怪错误。我通常会先搜索并寻求答案,然后再将其发布到 StackOverflow 上。所以问题是我想使用从另一个名为 的 scss 文件中导入的变量。 _variables.co
我试图让 livereload 与 rails 3.2 一起工作,我遇到了这个问题,其中有一个引用,不使用 .css.scss 命名导入的 sass 部分: Rails: Use livereload
这是我当前在 gulpfile.js 中的代码部分: // Sass gulp.task('sass', function () { gulp.src(['./node_modules/boots
我有这样一个样式文件的项目结构: client/ config-style.scss ------components/ ------style.scss -----------------my_co
如何在另一个.scss文件中包括.scss文件? 我试图将其写入文件中: app.scss: @include('buttons'); @include('dropzone'); body {
当我向 body 添加“dark-theme”类时,我想添加一个不同的主题。我的实现是这样的: @import '../../../../node_modules/angular-grids/styl
我在一个 Angular 元素中有一个 SCSS,它从 node_modules 导入另一个 SCSS: @import "node_modules/grapesjs/src/styles/scss/
它会缓存一个文件还是会导入两次并加倍我的代码? 假设我有variable.scss 并且必须将它导入那两个apple.scss | orange.scss。这样可以吗? 最佳答案 根据需要多次导入 v
这是 style.scss - 文件 @import '~bootstrap/scss/_functions.scss'; @import '~bootstrap/scss/_variables.sc
我在我的应用程序上使用 Angular (Jhipster),我想在我的 glocal.scss 文件中导入几个 .scss 文件。所以我创建了一个“util”文件夹(与 global.scss 文件
我正在 MPR 中从 Vaadin 8 迁移到 Vaadin 14 LTS。我们项目中使用的 .scss 文件需要编译。我使用了以下插件 com.vaadin vaa
这是我当前的项目目录结构,因为我想不出更好的组织方式来组织每个组件都有自己的 .scss 文件的用例,但是,整个应用程序都是包含全局 variables.scss 文件的 Fed 主题。目前,我正在每
在我的reactJS应用程序中 - 我将所有.scss文件包含在一个main.scss文件中 - 在src文件夹中的styles文件夹下。我有以下 webpack 配置。尝试将 main.scss 文
在最近的 Angular 7 项目中,我有一个组件(在文件 file-list.component.ts 中定义),其中有一个 mat-paginator (来自 Angular Material 组
我有一个引用了一些 Compass mixins 的 SCSS 文件。现在我想将它包含在一个不使用 Compass 的元素中。为此,我想将带有 Compass 混入的 SCSS 转换为没有 Compa
我只是在处理这个 tutorial 之后的本地元素它告诉我更改三个 css 文件: fluid_skeleton.css => _fluid_skeleton.scss 规范化.css => _规范化
我在根文件夹中创建了一个全局 scss 变量文件 对于导入变量我写 @import '../../../style_config/style_config'(全局变量文件) 到每个 scss 文件 更
我正在尝试将多个 SCSS 文件处理成 Webpack (3.6.0) 中的单个外部 CSS 文件,但我在解析 @import 语句时遇到问题。 条目 index.js 包含: import './s
我是一名优秀的程序员,十分优秀!