[SCSS] Write similar classes with the SCSS @for Control Directive
Writing similar classes with minor variations, like utility classes, can be a pain to write and update. Sometimes just a single character is the only difference between classes and updating the defining parameter means we need to change it for every class name and value. We can write a class one time and the @for directive can write all the minor variations for us. If the similar classes need to be updated, with the help of the @for directive, they only need to be updated once. In this lesson we learn how to leverage the power of the SCSS @for control directive to relieve the pain.
Basic @for-to loop in SCSS:
// doesn't include 10
@for $i from 1 to 10 {
.order {
order: $i;
}
}
output:
.order {
order:; }
.order {
order:; }
...
.order {
order:; }
@for-through:
// includes 5
@for $x from 1 through 5 {
.level {
z-index: $x;
}
}
output:
.level {
z-index:; }
...
.level {
z-index:; }
@for with 'if' condition:
@for $i from 0 through 10 {
$value: .5 * $i;
$has-decimal: floor($value) != $value;
$class-name: if(
$has-decimal,
#{$value - 0.5}pt5, // if true
$value // if false
);
.mt-#{$class-name} {
margin-top: #{$value}rem;
}
}
output:
.mt-0 {
margin-top: 0rem; }
.mt-0pt5 {
margin-top: 0.5rem; }
.mt-1 {
margin-top: 1rem; }
.mt-1pt5 {
margin-top: 1.5rem; }
..
.mt-5 {
margin-top: 5rem; }
Using attr selector:
@for $i from 0 through 10 {
$value: .5 * $i;
[class~="mt-#{$value}"] {
margin-top: #{$value}rem;
}
}
output:
[class~="mt-0"] {
margin-top: 0rem; }
[class~="mt-0.5"] {
margin-top: 0.5rem; }
[class~="mt-1"] {
margin-top: 1rem; }
..
[class~="mt-5"] {
margin-top: 5rem; }
@for with @mixin
@mixin light-color-class($color, $color-name,$i) {
$color-value: if($i == 0, $color, lighten($color, 5% * $i));
.#{$color-name}#{$i} {
color: $color-value;
}
}
@for $i from 0 through 5 {
@include light-color-class(red, 'passion', $i);
@include light-color-class(green, 'natural', $i);
@include light-color-class(blue, 'cool', $i);
}
output:
.passion0 {
color: red; }
.natural0 {
color: green; }
.cool0 {
color: blue; }
.passion1 {
color: #ff1a1a; }
.natural1 {
color: #009a00; }
.cool1 {
color: #1a1aff; }
...
[SCSS] Write similar classes with the SCSS @for Control Directive的更多相关文章
- [SCSS] Loop Over Data with the SCSS @each Control Directive
The SCSS @for directive is great when we know how many iterations are required and we only need 1 va ...
- [SCSS] Write Custom Functions with the SCSS @function Directive
Writing SCSS @functions is similar to writing functions in other programming languages; they can acc ...
- vue,一路走来(17)--vue使用scss,并且全局引入公共scss样式
最近朋友问如何在vue项目中使用scss样式,想起之前项目是直接在main.js直接import css文件的,然而main.js不可以直接import scss文件. import './asset ...
- 在vue-cli中安装scss,且可以全局引入scss的步骤
简历魔板__个人简历模板在线生成 在写vue的css样式时,觉得需要css预处理器让自己的css更加简洁.适应性更强.可读性更佳,更易于代码的维护,于是在vue-cli脚手架采用scss.写过的人都知 ...
- Upgrading to Java 8——第三章 Optional and Similar Classes
Java程序员对付空指针异常已经好多年了.在Java8中将有新的方式去处理他们.通过包装一个潜在的可能为null的类称为Optianal. 在Java8中添加了the Optional, Option ...
- Ruby安装Scss
Ruby安装Scss 引言 已经许久不写HTML了,今天有点以前的东西要改.但是刚装的Windows10,已经没有以前的Web开发环境了.只好重新安装. 结果Webstorm装好后配置Scss出现错误 ...
- webstorm配置scss自动编译路径
webstorm支持sass的同步编译,也就是即写即编译,并且可以指定编译后的css的目录. 本文使用的webstorm为8.0版本 scss安装:http://www.w3cplus.com/sas ...
- scss语法介绍
这里既然是对语法的介绍,那么至于如何安装和编译scss我就不多少了,主要是因为本人在群里认识的小伙伴有的不会用scss,所以就借着放假的机会来对scss语法做个总结,博主在开发过程中用scss蛮多,所 ...
- SCSS 在项目中的运用
最后一段时间一直在做一些网站或是CMS的项目,想用bootstrap,但是,设计那哥们说了,用什么都行,就不能用bootstrap,我去了个..... 无语中,逼着自己写.说实话,就是用bootstr ...
随机推荐
- 平衡树之RB-tree
#include <memory> template<class T> struct rb_node { T key; bool color;//true red | fals ...
- ZOJ 3674 Search in the Wiki(字典树 + map + vector)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4917 题意:每一个单词都一些tips单词. 先输入n个单词和他们的t ...
- c#操作ElasticSearch5详解
c#操作ElasticSearch详解 ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearc ...
- Maven学习笔记4
POM解析pom描述自身坐标,以及它关联的依赖,插件,仓库等. 项目模块设计项目聚合和继承. pom标签解析1. pom标签解析2. pom标签解析3. pom标签解析4. 聚合和继承 聚合模块只保留 ...
- 快速傅里叶变换FFT(模板)
好不容易闲下来总结一下FFT.QAQ 1.DFT: 对于多项式的乘法,DFT给了我们新的思路(点值表达式的O(n)相乘) 对于我们习惯的多项式算法例如多项式A(x)=5x+1和B(x)=2x+2 C( ...
- C#之在treeview中鼠标点击的所选的节点触发事件
一.背景 如下图所示,我想实现通过鼠标点击treeview的根节点,然后在文本框控件中显示鼠标点击的节点号. 二.程序实现 因为是要通过鼠标点击才发生的事情,所以这属于一个事件,需要触发才行,刚开始不 ...
- Talk the Talk
 Talk the Talk Mark Richards in Any pRoFESSion, jargon is used so that individuals within that pro- ...
- 【CS Round #43 A】Expected Dice
[链接]https://csacademy.com/contest/round-43/task/expected-dice/ [题意] 大水题 [题解] 把36种可能的结果都存下来. 然后把重复出现的 ...
- Zookeeper源码用ant进行编译为eclipse工程--转载
原文地址:http://www.it165.net/os/html/201411/10142.html Zookeeper GitHub的下载地址是:https://github.com/apache ...
- Ext常用控件
多选下拉框 var workname = new Ext.form.MultiSelect({ store: pointComboBoxStore, fieldLabel: '工作面', labelS ...