sass 引入sass_您需要了解的有关Sass插值的所有信息

sass 引入sass

因此,您会不时与Sass一起玩。 您可以开始享受它了,因为它可以满足您的大多数需求。 但是,您还没有完全了解这件事: 插值 -将值插入其他值。 好吧,您很幸运,因为今天我要阐明这件事。

Interpo ...什么?

插值 (通常称为变量插值或变量替换 )并非Sass独有。 实际上,您可以使用多种语言(PHP,Perl,Ruby,Tcl,Groovy,Unix shell等)找到它。 我们经常谈论对变量进行 插值或对表达式进行插值 。 简而言之,插值是对包含一个或多个变量的表达式或字符串求值的过程,产生的结果是变量被内存中的相应值替换。

嗯

让我们来看一个例子。 如果您具有PHP的一些基本知识,则可能更容易掌握。 假设您要回显包含变量的字符串。 常见的方法是:

$description = "awesome";
echo "Tuts+ is " . $description . "!";

这不是插值。 这是字符串连接 。 基本上,我们将三个字符串串联(链接在一起): "Tuts+ is " , "awesome" (称为$description )和"!" 。 现在,我们可以使用插值而不是字符串连接:

$description = "awesome";
echo "Tuts+ is ${description}!";

变量周围的花括号告诉PHP在字符串中打印变量值。 请注意,它需要双引号才能在PHP中使用(大多数语言都是如此)。

无论如何,这是变量/表达式插值。 在这一点上,究竟是使用串联还是插值取决于您,但是我们只能说插值是字符串串联的语法糖。

那Sass呢?

让我们看一下Sass中变量替换的工作原理。

像PHP中一样,Sass变量名称以美元符号( $ )为前缀。 比较就在这里结束了,因为在插值方面,Sass和PHP的行为有所不同。 这有一个很好的理由:Sass是用Ruby构建的,它使用#{}进行表达式替换。

在Sass中,您需要执行以下操作:

$description: "awesome";
@warn "Tuts+ is #{$description}!";

请注意,变量名不像PHP中那样减去$号。 变量被简单地封装在#{} 。 还值得注意的是,您可以插值任何变量类型,而不仅是字符串。 例如:

$answer: 42;
@warn "The Answer to the Ultimate Question of Life, the Universe, and Everything is #{$answer}.";

什么时候应该使用插值?

现在您已经了解了什么是变量插值以及如何在Sass中进行插值,现在该继续实际的用例了。 对于第一个,我们将重复使用@warn指令的操作,该指令将内容打印到控制台。

弦乐

假设您有一个名为$colors映射(一个映射是存储键/值对混合的变量),但是您已经厌倦了一次又一次地输入map-get($colors, ...) ,因此,您构建了一个小小的color()函数来获取映射到传递的任何键的颜色。 让我们一起写基础知识:

// _config.scss
$colors: (
  "primary": tomato,
  "secondary": hotpink
);

// _function.scss
@function color($key) {
  @return map-get($colors, $key);
}

// _component.scss
.el {
  background-color: color(primary);
}

这样很好,对吗? 现在,您要警告自己,如果您键入错误或试图从地图中获取未知密钥,则该密钥不存在(顺便说一句,您可能想阅读Sass中错误处理的介绍 )。这是通过color()函数中的@warn指令完成的。

@function color($key) {
  @if not map-has-key($colors, $key) {
    @warn "Key not found.";
  }
  @return map-get($colors, $key);
}

不错。 现在,如果您想确定未找到哪个密钥怎么办?

@function color($key) {
  @if not map-has-key($colors, $key) {
    @warn "Key `#{$key}` not found.";
  }
  @return map-get($colors, $key);
}

动臂,变量插补。 调用color(awesomeness)将在控制台中抛出以下消息:

找不到键awesomeness 。

太酷了,但是我们真的不知道上下文是什么。 为了帮助将来自己,我们可以在错误消息中添加地图名称。

@function color($key) {
  @if not map-has-key($colors, $key) {
    @warn "Key `#{$key}` not found in $colors map.";
  }
  @return map-get($colors, $key);
}

在这种情况下,由于尚未对$colors变量进行插值,因此将其打印为字符串。

重点awesomeness在$颜色没有找到映射。

CSS功能

到目前为止,我们已经看到了最常见的变量替换情况:在字符串中打印变量的内容。 这是一个很好的例子,但是我想到有一个更好的例子:CSS函数中的变量,例如calc() 。

假设您要根据边栏的宽度调整主容器的大小。 由于您是一个尽职的前端开发人员,因此已将此宽度存储在变量中,因此可以执行以下操作:

$sidebar-width: 250px;

.main {
  width: calc(100% - $sidebar-width);
}

然后惊喜! 没用 没有Sass错误,但是您的容器尺寸不正确。 如果您使用DevTools检查其样式,您将看到此内容-划掉了,因为它是无效的:

.main {
  width: calc(100% - $sidebar-width);
}

现在让我们考虑一下: calc()是CSS函数,而不是Sass函数。 这意味着Sass将整个表达式解释为字符串。 你可以试试:

$type-of-expression: type-of(calc(100% - $sidebar-width)); // string

因为它是一个字符串,所以在我们的@warn字符串中使用$colors ,Sass的行为没有任何不同。 $sidebar-width被视为常规字符串,因此按原样打印。 但这不是您想要的,对吗? 所以让我们插值吧!

.main {
  width: calc(100% - #{$sidebar-width});
}

现在,当Sass编译样式表时,它将用与$sidebar-width关联的值替换#{$sidebar-width} ,在这种情况下为250px ,从而产生以下有效CSS表达式:

.main {
  width: calc(100% - 250px);
}

任务完成! 我们在这里讨论了calc() ,但是url() , linear-gradient() , radial-gradient() , cubic-bezier()和任何其他CSS原生函数(包括所有伪类)都是一样的。

这是另一个使用CSS函数的示例:

@for $i from 1 through $max {
  .el:nth-of-type(#{$i}) {
    // ...
  }
}

这是您可能遇到的一种情况:将for循环与:nth-*()选择器结合使用。 再一次,您需要对变量进行插值,以便将其打印在输出CSS中。

综上所述:Sass将CSS函数视为字符串,因此要求您转义其中使用的任何变量,以便在生成CSS中打印其值。

CSS指令

让我们继续进行另一个有趣的变量插值案例:CSS指令,例如@support , @page @support ,最重要的是@media 。

现在,这与Sass如何解析CSS指令(尤其是media指令)有关。 我一直在研究Sass代码,虽然我的Ruby确实不是很好,但是我设法找到了一些有趣的东西 :

def query_expr
    interp = interpolation
    return interp if interp
    return unless tok(/\(/)
    res = ['(']
    ss
    res << sass_script(:parse)

    if tok(/:/)
      res << ': '
      ss
      res << sass_script(:parse)
    end
    res << tok!(/\)/)
    ss
    res
  end

基本上,这里的第一行告诉Sass如果存在插值表达式,或者返回错误,除非找到一个左括号( ( ),否则应该继续分析所有内容),以返回媒体查询。这里:

$value: screen;

@media $value {
  // ...
}

毫不奇怪,这失败了:

“ @media”之后CSS无效:预期的媒体查询(例如,打印,屏幕,打印和屏幕)为“ $ value {”

如错误消息所指出,它正在等待媒体查询。 此时,如果变量在@media字符串之后,则必须进行插值。 例如:

$value: screen;

@media #{$value} {
  // ...
}

正如我们之前从Ruby演义推论得出的那样,如果@media后面紧跟着括号( () ),那么您就不必再对变量进行插值了,因为Sass会评估这些括号内的任何内容。 例如:

$value: 1336px;

@media (max-width: $value) {
  // ...
}

在这种情况下,Sass计算表达式(max-width: $value) ,将其转换为(max-width: 1337px)产生有效CSS结果,因此无需对变量进行转义。

至于为什么 Sass的维护者会这样设计,我问Nathan Weizenbaum。 这是他的答复:

通常,我们不喜欢在无法使用完整SassScript表达式的地方允许使用原始变量。 媒体查询就是这样一个地方,因为在那里SassScript可能是模棱两可的(尤其是地图)。

— Nathan Weizenbaum(@ nex3) 2014年6月10日

选择器

好的,这是您需要对Sass变量进行插值的用例的最后一个示例:将变量用作选择器或用作选择器的一部分时。 尽管这可能不是日常用例,但做这样的事情并不少见:

$value: custom;

selector-$value {
  property: value;
}

不幸的是,这不起作用:

“ selector-”后CSS无效:预期的“ {”为“ $ value {”

这几乎与媒体查询示例的原因相同。 Sass有自己的解析CSS选择器的方式。 如果遇到意外情况(例如未转义的美元符号),则会崩溃。

幸运的是,解决这个问题很简单(并且您现在已经知道解决方案了):对变量进行插值!

$value: custom;

selector-#{$value} {
  property: value;
}

最后的想法

最后,Sass内插并不像看起来那样简单。 在某些情况下,您必须对变量进行转义,而在某些情况下则不必。 从那里开始,您有两种处理方式:

  • 要么等待错误消息,然后逃脱
  • 或者您可以使用常规CSS值(您知道它非常有用)逃逸到任何地方。

无论如何,我希望我能帮助您了解变量插值的工作原理。 如果您要添加任何内容,请务必分享评论。

翻译自: https://webdesign.tutsplus.com/tutorials/all-you-ever-need-to-know-about-sass-interpolation--cms-21375

sass 引入sass

【时空数据分析#06】实战:基于Python与ArcGIS的NDVI长期趋势制图与分级 本文详细介绍了基于Python与ArcGIS进行NDVI长期趋势制图与分级分析的完整工作流。通过整合MODIS卫星数据,利用ArcGIS进行空间处理与栅格转换,结合Python进行时序统计与趋势计算,最终生成直观的植被变化趋势分级图,为生态评估与环境监测提供可靠的空间分析工具。 阅读详情

相关推荐

【DSP】【工程实战】从零构建C6678多核工程:CCS环境配置与启动模式详解

本文详细介绍了在CCS开发环境中从零构建TMS320C6678多核DSP工程的完整流程。内容涵盖KeyStone架构解析、工程创建、基础代码编写、链接命令文件配置、仿真器调试,并重点深入讲解了包括I2C EEPROM在内的多种一级启动模式原理与配置方法,为开发者提供了一套清晰、可复用的实战指南。

weixin_29164185的博客 419

解决在sass中使用calc不能包含变量的问题

在sass中使用calc,如果calc中包含一个变量,不会产生效果 $sideBarWidth = 200px; .navbar { width: calc(100% - $sideBarWidth); } 如何解决呢? 要想在calc中使用变量,必须对这个变量使用sass的插值方法(#{$variable}) .navbar { width: calc(100% - #{$sideBarWid...

一键写代码的博客 2201

CMU动作捕捉数据集实战:从AMC文件到Python可视化的完整流程

本文提供了CMU动作捕捉数据集的完整实战指南,详细解析了AMC文件格式,并对比了MATLAB转换、Python原生解析及转换为BVH格式三种数据解析策略。重点介绍了如何构建Python数据处理与可视化管道,包括将数据转换为Pandas DataFrame、绘制时间序列与相关性热力图,以及实现3D骨架动画,帮助开发者高效利用这一经典动作捕获数据集进行运动分析与模型训练。

android的专栏 716

一文讲述SASS简介和使用方法

var 表示变量,start表示开始值,end表示结束值,两种形式的区别在于 through 包括 end 的值,to 不包括 end 值。sass中使用@mixin声明混合,可以传递参数,参数名义$符号开始,多个参数以逗号分开,如果参数有多组值,那么在变量后面加三个点表示,如: $var...default即可, 默认变量一般用来设置默认值,当该变量出现另外一个值时,无论定义先后,都会使用另外一个值,覆盖默认值。在标准注释 /*后面加入一个感叹号,表示重要注释,压缩模式也会保留注释,用于版权声明等。

weixin_46272787的博客 2982

OpenCV实战:5分钟搞定图像拼接(附Python代码)

本文通过OpenCV实战教程,详细讲解如何使用Python在5分钟内完成图像拼接。重点介绍`findHomography`函数和单应性矩阵的应用,提供完整的代码示例和常见问题解决方案,帮助开发者快速掌握图像拼接技术。

weixin_26833503的博客 120

UE5摄像机抖动全攻略:从Perlin噪点到Sequence实战(附参数调优技巧)

本文深入解析UE5摄像机抖动技术,从Perlin噪点算法到CameraShakeBase蓝图应用,再到Sequence高级控制,提供全面的参数调优技巧。涵盖战斗、爆炸等场景的预设参数,帮助开发者实现专业级抖动效果,提升游戏沉浸感。

weixin_30300225的博客 96

css【详解】cubic-bezier()函数

cubic-bezier()函数是三次方贝塞尔曲线函数。所有三次方贝塞尔曲线都是由起点、终点和两个控制点组成,在SVG或者Canvas中,三次方贝塞尔曲线的所有控制点都是不固定的。但是在CSS的cubic-bezier()函数中,起点和终点的坐标是固定的,分别是(0,0)和(1,1),因此,cubic-bezier()函数支持的参数值只有4个,代表了两个控制点的坐标,语法如下: cubic-bezier(x1, y1, x2, y2) 其中坐标(x1,y1)表示控制点1的坐标,坐标(x2,y2)表示控制点

朝阳39的博客 7342

SpeedyBee F405 V3 50A飞塔装机全攻略:从开箱到首飞避坑指南

本文提供SpeedyBee F405 V3 50A飞塔的详细装机指南,涵盖从开箱检查、硬件焊接、软件配置到安全首飞的全流程。重点剖析了电源连接、固件刷写等高频故障点,帮助FPV新手避开常见陷阱,确保一次成功组装并安全起飞。

weixin_29179311的博客 416

Exception in thread “main“ java.util.ConcurrentModificationException

Collection和Map的实现类在迭代时不允许修改自身长度(即:不允许添加或删除元素) 若想在迭代内部修改,唯有使用了add()或put()方法后立即跳出迭代。否则只能在迭代循环外部进行增删。

Mr_Clutch的博客 351

YOLOv11目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

本文主要讲解的是计算机视觉网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。

Limiiiing的博客 8411

动量因子在A股市场的有效性分析:量化实证研究

验证动量因子在A股市场的有效性及时间周期性分析不同时间窗口(短期/中期/长期)对动量效应的影响量化交易成本、市场流动性对动量策略收益的侵蚀程度比较A股与成熟市场(如美股)动量效应的差异特征理论框架:行为金融学解释动量效应的产生机制技术实现:Python全流程代码实现动量因子计算与回测实证分析:统计检验、风险收益指标、敏感性分析应用拓展:结合市场微观结构的策略优化方案动量因子(Momentum Factor)

2501_92132293的博客 2480

vue-element-admin项目开发全流程

vue组件开发 编写组件时应该先定义API props名称具备语义化,类型符合规范 props可以添加自定义校验validator,值是一个函数,参数是当前传入值,返回值是布尔值 组件使用时绑定的类似于原生的事件,不能被识别,需要添加.native修饰符或者当成自定义事件处理 <template> <button class="h-btn" :class="[sizeClass,typeClass]" @click="clickHandler"> <

guanan1230的博客 1196

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Sass和Less(预处理器)

Sass和Less(预处理器)一、了解Sass和Less二、Sass和Less 语法2.1 注释2.2 语法 一、了解Sass和Less Sass 对自己的定位首先是一个预处理器。其最主要的竞争对手包括 LESS,一个基于 Node.js 的预处理器,因著名 CSS 框架 Bootstrap 的使用而声名鹊起。此外还有 Stylus ,一种对形式无所限制的 LESS 版本。它是一种无论你想怎么样使用,大都能顺利转换成 CSS 的程序语言。 Sass和Less都属于预处理器。Less文件以.less结尾,Sa

sam80000的博客 3508

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

CSS预处理器之Sass

*`:root` 伪类选择器用于选择文档根元素,对于 HTML 文档来说,它选择的是 `<html>` 元素。在这里,它定义了全局的 `CSS` 变量。*/:root {/*`body` 选择器选择了页面的 `<body>` 元素,这里定义了其他全局的 `CSS` 变量。*/body {/*`.header` 选择器选择了页面的 .header 类元素,这里定义了 header 元素区域的 `CSS` 变量*/.header {定义规则变量以开头,后跟变量名。

zrblue的博客 1201

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SASS 插值语句 #{ }

如果需要使用变量,同时又要确保 / 不做除法运算而是完整地编译到 CSS 文件中,只需要用 #{} 插值语句将变量包裹。引入之前的案例发出一个问题。

qq_22187895的专栏 199

Sass预编译

sass基于Ruby ruby的模块管理器叫gem 正规的安装方式是gem install sass 调用命令 sass sass文件 css文件 webpack编译sass 需要的模块 style-loader css-loader sass-loader node-loader ...

weixin_30730053的博客 540

sass,less面试准备

1.sass,less都是CSS的预处理器,其基本思想就是用编程的思路编写CSS代码。增加了变量,嵌套,函数,语句,继承等概念。有助于模块化开发,例如写一个换肤的效果,以前我们需要写多套css样式,现在引入了变量的概念,只需要写一套css,改变变量就可以了。2.浏览器对sass和less是不识别的,在vscode中下载插件easyless/easysass将编写好的sass和less文件转化成css文件,在项目开发中会用npm下载其他的插件。4.(1)注释单行会被编译,多行不会被编译。......

qq_51868859的博客 2005

SASS的相关内容

1.什么是SASS(Syntactically Awesome Stylesheets Sass)? SASS是一套利用Ruby实现的, 最早最成熟的CSS预处理器, 诞生于2007年. 它扩展了 CSS 语言,增加了变量、Mixin(混合)、嵌套、函数和运算等特性,使 CSS 更易维护和扩展 2.如何学习SASS? LESS是一套利用JavaScript实现的CSS预处理器, 诞生于2009年. 由于LESS的诞生比SASS要晚, 并且LESS受到了Sass的影响, 所以在LESS中能看到大量SASS中的

ME_GIRL的博客 348

完全干死Sass只需要15分钟

一、安装及编译 sass基于Ruby语言开发而成,因此安装sass前需要安装Ruby,安装过程直接下一步到底。安装sass和compass gem install sass gem install compass 复制代码编译单个文件和整个文件夹的命令如下[ ]为可选--watch为监听文件变化--style为编译模式有nested|compact|compressed|expanded四个选项,...

weixin_34187862的博客 196

速通sass基础语法

【代码】速通sass基础语法。

Good_Luck_Kevin2018的博客 580

SASS基本语法总结

SASS是一种无法被浏览器直接执行的语言,我们需要通过预处理工具(可以理解为翻译工具),把SASS文件转化为CSS文件,预处理工具有很多,最推荐的方法的就是VScode的插件Easy SASS的方法,也可用webpack的插件sass-loader。-用作减法规则:number1 - number2前后带空格,(number1-number2)加括号,或者-number-前加空格后加数字。SASS是CSS预处理器,简单来说,SASS是比CSS更高一级的语言,它拥有CSS不具备的语法,比如if条件控制。

shuiyunjian1的博客 2140

sass的常用语法总结

(嵌套规则,属性使用变量、算数运算,@import,@extend继承样式,混合指令 @mixin和@include)

m0_52518047的博客 1025

sass/scss 浅谈

一、安装 sass npm install node-sass --save-dev npm install sass-loader --save-dev 二、使用 sass

青蛙king的博客 3836

前端领域Sass的高级特性解析

在前端开发中,CSS的“全局作用域”和“面条式代码”曾让无数开发者头疼:重复的媒体查询、换主题时的全局变量修改、大型项目中的样式冲突……Sass作为最流行的CSS预处理器,通过引入编程特性(如变量、嵌套、函数)让CSS变得可维护。但大多数开发者仅停留在“变量+嵌套”的基础用法,本文将聚焦Sass高级特性,教你用“样式编程思维”解决复杂场景问题。本文将按照“概念-原理-实战-场景”的逻辑展开:先用生活案例类比核心概念→拆解特性底层原理→通过项目实战演示用法→总结实际应用场景。

小白菜的博客 1042

Sass 笔记

如果有一些重复样式,那么使用变量来统一处理这种情况非常不错的选择。但当样式变得越来越复杂,需要大段的重复样式代码,独立的变量就没办法应付这种情况了。所有可以通过sass的混合器实现大段样式的重用。上面定义了一个混合器,那么引入它就需要用到@include最终生成的css为便于书写,@mixin可以用表示,而@include可以用表示。

偷得浮生半日闲 952

node-sass改dart-sass and 一些七七八八,实现sass主题色修改

目前Dart Sass已作为Sass最新版本,当执行npm install sass -D默认使用的是Dart Sass包,vue-cli,Vite默认也是使用最新版本Dart Sass,而且不需要安装node-sass(node-sass与sass-loader会有版本问题冲突)注:element-plus组件库也使用dart sass模块的sass:map 和 @use 重构了所有scss变量,解决了由@import造成的重复输出问题。如果在安装之前项目安装了node-sass,先卸载。

weixin_43843679的博客 2512
上一篇: css3创建动画属性_创建CSS3动画预加载器的集合
下一篇: css 发光_跨浏览器CSS反射,发光和模糊
daique1908
博客等级 码龄10年 29粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值