SCSS动态生成类

news2024/12/26 4:27:40

前言

在项目开发中,为了方便样式的复用和规范化,通常都会统一一些公共的样式类,如果用传统的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.coloradmin.cn/o/1123600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

港联证券:哪家证券公司开户好?

在现代社会,出资理财已经成为了一个不可或缺的部分。出资者在进行股票生意时,不可避免地需求选择一家证券公司进行开户。可是,哪家证券公司开户好?这是每个出资者都需求考虑的问题。本文将从多个角度分析,为您供给一些…

不知道怎么选CRM系统?看这篇就够了

CRM客户管理系统近年来已经从简单的客户管理软件发展成为了帮助企业运营发展的工具。它能够帮助企业优化业务流程、提高客户转化率、获得更多业绩。那么企业在选择CRM系统时有什么要点吗? 1、明确是否有自动化功能 自动化功能可以自动处理那些手动且琐碎的销售流程…

AI语音机器人的重点功能配置之话术

AI机器人运营中的重中之重就是对话术的配置,如何将话术运营好将是影响AI机器人效果的关键因素,那接下来我们了解一下AI机器人的话术模块的几个重点功能。 话术配置 有节点库、关键词、话术内容、转接人工、发送短信、知识库标签、客户意向、允许打断、…

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

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

win10下u2net tensorrt模型部署

TensorRT系列之 Win10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署…

企业需要拓展出海业务?CRM为您保驾护航(上)

2022年企业似乎格外艰难:线上流量看似见顶,线下受疫情影响严重,展会推迟,出差受阻,增长乏力沦为常态。为了寻求增长,一批又一批企业将目光看向海外,那里尚有流量红利和增长空间等待挖掘。CRM客户…

港联证券:短债基金收益?

跟着人们对理财的需求不断增加,短债基金成为了许多出资者关注的焦点。那么,短债基金可以带来什么样的收益呢?本文将从多个角度剖析短债基金的收益。 一、短债基金的概念 短债基金是一种基金类型,风险相对较低,一般出资…

【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 安装程…

密码即服务-初探vault

欢迎关注微信公众号 singless 1 介绍 https://www.vaultproject.io/ https://lonegunmanb.github.io/essential-vault/ 简单来说,在我们日常的工作中,免不了要和许多的机密信息打交道,可以是云服务的 Access Key 和 Secret Key,也…

whois人员信息python批处理读入与文本输出

使用pytho读取一个ip列表文本,批量获取whois输出并写入到一个文本 import socketif __name__ __main__:# 江苏电信DNS地址mylog open(whois.log, mode a,encodingutf-8)for line in open("ip.txt"):s socket.socket(socket.AF_INET, socket.SOCK_STR…

uniapp map polygons 区域填充色(fillColor)在ios显示正常,但在安卓手机显示是黑色的,怎么解决?

uniapp map polygons 区域填充色&#xff08;fillColor&#xff09;在ios显示正常&#xff0c;但在安卓手机显示是黑色的,怎么解决&#xff1f; <MapPage :longitude"item.centerCoord[0]" :latitude"item.centerCoord[1]":polygons"[{ points: it…

虚拟机使用linux常用问题(虚拟机操作系统:ubuntu 22.04LTS)

1.虚拟机连接外网 ubuntu解决网络连接的解决方案 明明连接好了但是没有网络的情况 2.虚拟机磁盘扩容 相关博客 利用gparted工具时,直接将unallocated空间的前一个位置的磁盘resize,将unallocated的空间全部覆盖 3.虚拟机与本机共享文件 安装vmtools 设置选项中安装vmtools…

软件为什么单独标注支持IPV6?IPV6和IPV4有什么区别?

ipv4和ipv6有何区别&#xff1f; 最关键的区别在于能够提供网络ip地址的数量。 ipv4是互联网协议第四版&#xff0c;地址长度为32位&#xff0c;可以提供ip地址总量为43亿个。目前ipv4地址资源已面临枯竭。 ipv6是互联网协议第六版&#xff0c;地址长度为128位&#xff0c;可…

python打包和发布package

打包 偶尔有一些复用性很高&#xff0c;复杂度也很高的函数要反复调用&#xff0c;可以自行打包&#xff0c;安装 打包结构如下 以iso_timer为例 mkdir common vim __init__.py cd common vim __init__.py vim format.py# init.py from .common import *# /common/init.p…

这Bug只能通过压测发现

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

Office技巧(持续更新)

1. Word 1.1 标题设置为多级列表 选住一级标题&#xff0c;之后进行“定义新的多级列表” 1.2 图片和表的题注自动排序 正常插入题注后就可以了。如果一级标题是 “汉字序号”&#xff0c;那么需要对题注进行修改&#xff1a; 从原来的 图 { STYLEREF 1 \s }-{ SEQ 图 \* A…

Android之Monkey源码分析(第十三篇:触摸事件流程分析)

前言 前面讲了一些monkey作者的设计思想&#xff08;有的我没写完&#xff0c;还没发布&#xff0c;惨&#xff09;&#xff0c;这篇来点实际的&#xff0c;monkey程序是如何发起一个触摸事件的呢&#xff1f; 本例子中假设使用的命令是&#xff1a; adb shell monkey -p com.…

公众号留言功能怎么使用?如何开启?

为什么公众号没有留言功能&#xff1f;根据要求&#xff0c;自2018年2月12日起&#xff0c;新申请的微信公众号默认无留言功能。有些人听过一个说法&#xff1a;公众号粉丝累计到一定程度或者原创文章数量累计到一定程度就可以开通留言功能。其实这个方法是2018年之前才可以&am…

每日一题 2316. 统计无向图中无法互相到达点对数(中等,图连通分量)

题目很简单&#xff0c;只要求出每个连通分量有多少个节点即可首先通过建立一个字典来表示每个节点的邻接关系遍历每个节点&#xff0c;并通过邻接关系标记在当前连通分量内的所有的点&#xff0c;这样就可以知道一个连通分量内有多少个点在这里我陷入了一个误区&#xff0c;导…

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

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