SCSS动态生成类

前言

在项目开发中,为了方便样式的复用和规范化,通常都会统一一些公共的样式类,如果用传统的css来写就会显得很臃肿。
最近看了看接手的项目的公共css文件,发现很多重复的样式声明,还有全局的样式使用不统一问题。
例如下图,就有很多重复的声明,并且代码看起来也不太优雅!下面使用scss来优化一下。

image.png

统一定义样式颜色

$primary:#4e9afe;
$success:#07c160;
$danger:#ed151c;
$yellow:orange;
$green:green;
$violet:violet;
$default:#8a8a8a;

利用循环 动态生成样式类

1、生成全局统一按钮样式类、颜色类名

(1)定义好按钮主题色
$colors: (primary: $primary,danger: $danger,success: $success,yellow: $yellow,green: $green,violet: $violet,default:$default,grey:#8a8a8a
);
(2)利用mixin编写公共的样式方法(可根据实际项目设计来编写)
@mixin button {border-radius: 20px;padding: 3px 8px;font-size: 14px;
}
//正常按钮
@mixin btnOrigin($btn_them) {color: #fef4e9;background: #{$btn_them};@include button;
}
//线条按钮
@mixin btnLine($btn_them) {color: $btn_them;border: 1rpx solid $btn_them;@include button;
}
(3)利用@each来遍历生成class
@each $name, $color in $colors {.#{$name} {&-color {//生成颜色类目color: $color;}&-btn {//按钮@include btnOrigin($color);&:active {@include btnOrigin(rgba($color, 0.4));}}&-line-btn {//线条按钮@include btnLine($color);&:active {@include btnLine(rgba($color, 0.4));}}}
}

按照上面的方法,生成的类.primary-btn、.danger-btn,primary-line-btn等样式类,类名可以自定义拼接的。

如primary-line-btn按钮

image.png
生成的样式如下

.primary-line-btn {color: #4e9afe;border: 1rpx solid #4e9afe;border-radius: 20px;padding: 3px 8px;font-size: 14px;
}
.primary-line-btn:active{....
}
(4)可以利用if else来自定义个别按钮样式
@each $name, $color in $colors {.#{$name} {&-btn {@include btnOrigin($color);@if #{$name}=='grey' {color: black;&:active {color:rgba(black,0.5)!important;}}&:active {@include btnOrigin(rgba($color, 0.4));}}}
}

2、利用for循环生成字体大小类

生成font-size从12到20的类,类名是fs-12,fs-13…

@for $i from 12 to 20 {.fs-#{$i} {font-size: #{$i}px;}
}

3、生成宽度

生成的类名是w-10,w-25…

$ws:(10,15,20,25,30,35,40,45,50,60,70,80,90,100,98,95,85,
)
@each $i in $ws{.w-#{$i}{width: #{$i}+'%'}
}

总结

以上只是小部分举例应用,都大同小异,实际上还可以灵活使用生成各种各式的样式、提高我们的样式代码灵活度,最后想说:真正使用上scss还是很香的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/145324.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交易想简化分析并少失误,波浪原则anzo capital认为必不可少

要想在交易中简化分析并少失误,不管是交易新手还是交易高手,anzo capital认为其实很容易,只要了解艾略特波浪原则。 艾略特波浪原则,每一个趋势都由特定的基本元素(波浪)组成,这些元素具有重复的趋势。这些波浪可以根…

【Docker从入门到入土 4】使用Harbor搭建Docker私有仓库

私有仓库 一、Harbor简介1.1 什么是Harbor?1.2 Harbor的特性1.3 Harbor和docker registry的关系1.4 Harbor的构成1.4 Harbor 配置文件中的两类参数1.4.1 所需参数1.4.2 可选参数 二、Harbor部署2.1 部署Docker-Compose服务2.2 部署 Harbor 服务Step1 下载或上传 Harbor 安装程…

【Linux】32条指令带你玩转 Linux !

目录 1,whoami 2,who 3,pwd 4,ls 1,ls 2,ls -l 3,ls -a 4,ls -al 5,ls -d 6,ls -ld 5,clear 6,cd 1,cd 2&…

这Bug只能通过压测发现

大家好,我是洋子。之前发布过一篇有关于在性能测试当中发现Bug的文章《因为一个Bug,差点损失了100w》 这篇文章当时还登上了CSDN全站综合热榜TOP1,最近工作在做性能测试时,又发现了几个比较有意思得Bug,本期分享其中的…

估值 10 亿美金的红帽 (Red Hat) 公司究竟是从哪冒出来的?

译者序 原文链接:The History of Red Hat[1] 译者水平有限,不免存在遗漏或错误之处。如有疑问,敬请查阅原文。 以下是译文。 Bob Young 的创业之路 成长背景 Bob Young 于 1954 年出生于加拿大安大略的汉密尔顿。他与祖母住得很近&#xff0c…

DC电源模块的数字电源优势

BOSHIDA DC电源模块的数字电源优势 数字电源模块是指在电源的设计和控制上采用数字式方案,采用数字化技术,将传统的电源模块从模拟传统电源转变为数字电源变成的模块。 传统的电源模块使用模拟技术,其主要优势在于可控性高、稳定性好&#…

跨越单线程限制:Thread类的魅力,引领你进入Java并发编程的新纪元

线程的概述 线程是一个程序的多个执行路径,执行调度的单位,依托于进程存在。 线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做线程栈,是在建立线程时由系统分配的,主要用…

学习笔记2——Nosql

学习笔记系列开头惯例发布一些寻亲消息 链接:https://baobeihuijia.com/bbhj/contents/3/194205.html 跟学链接 跟学视频链接:https://www.bilibili.com/video/BV1S54y1R7SB/?spm_id_from333.999.0.0 (建议有java基础的同学学习或者一直…

一天吃透Java面试题

给大家分享我整理的Java高频面试题,有小伙伴靠他拿到字节offer了。 Java基础面试题 Java的特点Java 与 C 的区别JDK/JRE/JVM三者的关系Java程序是编译执行还是解释执行?面向对象和面向过程的区别?面向对象有哪些特性?数组到底是…

为什么嵌入通常优于TF-IDF:探索NLP的力量

塔曼纳 一、说明 自然语言处理(NLP)是计算机科学的一个领域,涉及人类语言的处理和分析。它用于各种应用程序,例如聊天机器人、情绪分析、语音识别等。NLP 中的重要任务之一是文本分类,我们根据文本的内容将文本分类为不…

VS Code关闭受限模式,关闭信任工作区

打开VS code每次出现这个界面,烦戳死!今天,贷款也要把它关掉! 1、打开设置: 2、搜索以下值 security.workspace.trust3、重新启动VS Code即可! 4、或者直接在用户的设置文件 settings.json中加入以下: &…

CMMI V2.2模型介绍

1、CMMI模型内容编排 模型内容主要由三篇组成,包括概述、实践域(PA)和附录,共分为6个章节。 章节 标题说明篇章:概述第1章关于CMMI V2.0概述CMMI V2.0产品套件,包括模型的执行摘要。第2章 成…