scss实用小技巧 循环+自定义函数的使用,学会它构建组件轮子工程时轻松 N+ 倍

SCSS 基本使用详解 SCSS 是 Sass(Syntactically Awesome Stylesheets)的其中一种语法,是一种预处理器脚本语言,能够扩展 CSS 的功能,使其更加强大和高效。SCSS 保留了 CSS 的原有语法,同时增加了变量、嵌套规则、混合宏(mixin)、继承等高级功能。本文将详细介绍 SCSS 的基本使用方法,帮助读者快速上手并掌握 SCSS 的核心概念和技巧。 阅读详情

使用scss循环样式代码,减少代码量

1、首先定义一个scss变量用于存储所有的type类型

$type:('success', 'primary', 'danger', 'warning', 'info', 'default');

2、其次定义一个scss自定义函数用于 return 对应的数据变量类型

因为我在这边对应使用了全局变量 下方是其数据对应

名称颜色
$color-primary#1089ff
$color-success#52c41a
$color-info#35495E
$color-warning#fea638
$color-danger#ff4d4f
$color-primary : #1089ff;
$color-success :#52c41a;
$color-info : #35495E;
$color-warning : #fea638;
$color-danger : #ff4d4f;

@function typeFunction($t) {
  @if $t==success {
    @return $color-success 
  }

  @else if $t==primary {
    @return $color-primary
  }

  @else if $t==info {
    @return $color-info
  }

  @else if $t==danger {
    @return $color-danger
  }

  @else if $t==warning {
    @return $color-warning
  }

  @return $color-primary
}


3、最后也就是对应type类型所展示的代码

@each $t in $type {
  .radio-type_#{$t} {
    width: 20px;
    height: 20px;
    appearance: none;
    position: relative;
    outline: none;
  }

  .radio-type_#{$t}:before {
    content: "";
    width: 75%;
    height: 75%;
    border: 1px solid typeFunction($t);
    display: inline-block;
    border-radius: 50%;
    vertical-align: middle;
  }

  .radio-type_#{$t}:checked:before {
    content: "";
    width: 75%;
    height: 75%;
    border: 1px solid typeFunction($t);
    display: inline-block;
    border-radius: 50%;
    vertical-align: middle;
  }

  .radio-type_#{$t}:checked:after {
    content: "";
    width: 45%;
    height: 45%;
    text-align: center;
    background: typeFunction($t);
    border-radius: 50%;
    display: block;
    position: absolute;
    top: 20%;
    left: 20%;
  }

  .radio-type_#{$t}:checked+label {
    color: typeFunction($t);
  }

}

4、完整代码+对应react代码及呈现效果

css


$type:('success', 'primary', 'danger', 'warning', 'info', 'default');
$color-primary : #1089ff;
$color-success :#52c41a;
$color-info : #35495E;
$color-warning : #fea638;
$color-danger : #ff4d4f;
@function typeFunction($t) {
  @if $t==success {
    @return $color-success
  }

  @else if $t==primary {
    @return $color-primary
  }

  @else if $t==info {
    @return $color-info
  }

  @else if $t==danger {
    @return $color-danger
  }

  @else if $t==warning {
    @return $color-warning
  }

  @return $color-primary
}


@each $t in $type {
  .radio-type_#{$t} {
    width: 20px;
    height: 20px;
    appearance: none;
    position: relative;
    outline: none;
  }

  .radio-type_#{$t}:before {
    content: "";
    width: 75%;
    height: 75%;
    border: 1px solid typeFunction($t);
    display: inline-block;
    border-radius: 50%;
    vertical-align: middle;
  }

  .radio-type_#{$t}:checked:before {
    content: "";
    width: 75%;
    height: 75%;
    border: 1px solid typeFunction($t);
    display: inline-block;
    border-radius: 50%;
    vertical-align: middle;
  }

  .radio-type_#{$t}:checked:after {
    content: "";
    width: 45%;
    height: 45%;
    text-align: center;
    background: typeFunction($t);
    border-radius: 50%;
    display: block;
    position: absolute;
    top: 20%;
    left: 20%;
  }

  .radio-type_#{$t}:checked+label {
    color: typeFunction($t);
  }

}

js

import React, { useEffect } from 'react'
import './index.scss'
interface Iprops {
  type: string
}
// const classnames = require('classnames')
function Radio(props: any) {
  const { type = 'default' }: Iprops = props
  // 声明一个名为“count”的新状态变量
  //   const [count, setCount] = useState(0)
  // 类似于 componentDidMount 和 componentDidUpdate:
  useEffect(() => {
    // 使用浏览器API更新文档标题
    document.title = `You clicked count times`
  }, [])
  return (
    <div className={['tb-radio'].join(' ')}>
      <input type='radio' className={[`radio-type_${type}`].join(' ')} />
    </div>
  )
}
export default Radio

最终效果
在这里插入图片描述

最终的样式也就呈现上去了,写在最后最近也是在尝试使用 react-hook 尝试去写一套组件库,后续也会开展轮子公开课程,从零开始如何造轮子组件展现在博客上,希望大家后续可以多多支持,多多关注,一起共同进步。

【SCSS入门】3、SCSS的基本语法 Sass(Syntactically Awesome Stylesheets)是一种强大的CSS预处理器,它通过引入变量、嵌套、混合(mixins)、继承和函数等高级特性,显著增强了CSS的功能和灵活性。Sass允许你使用更简洁和模块化的语法来编写样式表,从而提高代码的可读性和可维护性。变量使得颜色、字体和其他值可以重复使用,嵌套规则让样式结构更加清晰,混合可以创建可重用的代码块,继承和函数则提供了更高级的样式控制。最终,Sass代码会被编译成标准的CSS,使其兼容所有浏览器。这种预处理器特别适用于大型项目 阅读详情

相关推荐

思科模拟器汉化教程(附带中文汉化包)

思科模拟器是一种模拟Cisco网络设备的软件工具。它可以模拟Cisco网络设备的所有功能,包括路由器、交换机、防火墙等,并提供了一个可视化的用户界面,让用户可以通过图形化的方式来管理网络设备。思科模拟器因其便捷、易用的特点被广泛应用于网络工程师的实验、测试和培训等方面思科模拟器的功能是强大的,但当我们在使用思科模拟器的时候就会有一些烦恼,由于思科是全球最大的企业级网络设备供应商之一。思科公司的产品和服务被广泛应用于各种领域和行业,所以思科模拟器默认是全英文的,但是在最新版本中是支持中文的。

2302_76908369的博客 4万+

scss循环的用法

今天刚解锁的,scss循环用法: 使用:<div class="margin-left-10">123</div> 直接赋值给class就可以了。margin-left-10:就代表:margin-left:10px;

weixin_39845185的博客 4076

手把手教你用Wireshark抓包分析Profinet非周期通信(附实战案例)

本文详细解析了PROFINET非周期通信(RTA)的技术原理与实战应用,通过Wireshark抓包分析,揭示从PLC请求到驱动器响应的完整对话过程。涵盖实验环境搭建、关键配置步骤、典型参数访问流程及故障诊断案例,帮助工程师深入理解并优化工业网络通信性能。

Black的专栏 1049

scss的常用技巧、循环、判断等

使用scss加强对样式的维护

weixin_45932463的博客 2638

从零开始:Vivado中自定义串口通信IP核的完整实现

本文详细介绍了在Vivado中从零开始实现自定义串口通信IP核的完整流程,包括Verilog核心代码编写、仿真验证、IP核封装与参数化配置技巧。通过AXI-Lite总线实现动态配置,提升FPGA开发效率,适用于各种嵌入式系统通信需求。

weixin_29274969的博客 326

使用Tansformer分割三维腹部多器官--UNETR实战

不会 transformer 没关系,本教程开箱即用。Tina姐总算对transformer下手了,之前觉得难,因为刚开始学序列模型的时候就没学会。然后就一直排斥学transformer。这两周没什么事,加上MONAI有现成的教程,就打算先跑通后,再学理论。然后,顺利的跑通了代码,再学了一周理论,发现它也不过如此嘛,入门还是很容易的。有同学想了解的transformer的话,可以先看完这个实战教程,如果感兴趣,后续会出一个transformer入门路线。利用纯Transformers作为编码器来学习输入量的

Tina姐的博客 1万+

scss的高级用法——循环

周末愉快呀!一起来学一点简单但非常有用的css小知识。 最近在一个项目中看到以下css class写法。

xinTianou123的博客 2960

【WiFi软件开发】IOCTL和Netlink----用户空间和内核空间交互的两种方式

linux开发中通常会涉及用户空间和内核模块的交互。本文介绍了两种典型的用户空间和内核模块通信方式:ioctl和netlink

liuwe1ye的博客 2348

SCSS 循环

循环在 SCSS 中非常有用,可以有效地减少重复代码,提高样式的可维护性。通过使用@for和@each,你可以生成复杂的样式结构,并根据条件动态调整样式。

疯狂假前端的博客 1123

Unity技术开发干货 - 总目录

总目录 欢迎大家来到 passion 的《Unity技术开发干货》开始前博主先列出学习的大纲,同时也供大家学习参考,如果有什么问题,欢迎留言。 一.Unity基础: Unity基础-脚本生命周期 Unity基础-向量 Unity基础-寻路系统 Unity基础-物理系统 Unity基础-Mecanim动画系统 Unity基础-UGUI Unity基础-灯光 Unity-UGUI之Event System Unity-2018-粒子系统 Unity-协程入门 Unity-2D物理引擎、铰链、效应器 Unity-

TxNet 4257

【第一章】基于Simulink的控制器开发教程——目录

摘要:本文系统介绍了基于Simulink的控制器开发方法,涵盖PID、状态反馈、模型预测(MPC)、模糊控制、自适应控制等8类主流控制器。针对每种控制器,详细阐述了其基本原理、适用场景,并通过Simulink建模与仿真测试进行实践验证。文章采用"理论+实践"的结构,从算法设计到硬件实现全流程展开,为汽车、航空航天、工业控制等领域的控制器开发提供完整解决方案,最后通过应用对比与学习总结帮助读者掌握不同控制器的核心特性和应用场景。(149字)

熟悉MATLAB/fpga/RK3588/LABVIEW/protus/单片机/dsp/Multisim 387

scss语法,使用for循环批量设置class类

scss语法,使用for循环批量设置class类

有一棵树的博客 2975

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 5987

scss循环生成样式

其实循环生成css都是定义一个数组,然后遍历生成,主要在于各个语言的调用方式不一样. 这里使用的rem作为基准单位,也可以用px或者其他 _variable.scss文件 // 文件名以下划线开头表示被引用文件,引用时不用加下划线和后缀名 //定义颜色 $colors:(primary: #db9e3f, info: #4b67af, danger: #791a16, blue-1: #1f3695, 'blue': #4394e4, "white": #fff, //当键名与变量名

qq_43585229的博客 2623

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【SCSS进阶】5、自定义函数

Sass(Syntactically Awesome Stylesheets)是一种强大的CSS预处理器,它通过引入变量、嵌套、混合(mixins)、继承和函数等高级特性,显著增强了CSS的功能和灵活性。Sass允许你使用更简洁和模块化的语法来编写样式表,从而提高代码的可读性和可维护性。变量使得颜色、字体和其他值可以重复使用,嵌套规则让样式结构更加清晰,混合可以创建可重用的代码块,继承和函数则提供了更高级的样式控制。最终,Sass代码会被编译成标准的CSS,使其兼容所有浏览器。这种预处理器特别适用于大型项目

weixin_52938153的博客 2132

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

scss理解及用法

scss是一门很好用的类css,在现实中的工作当中几乎都是不采用css的,而是使用类css语言。全局变量是元素外声明的变量,局部变量是在元素里声明的变量,重复声明时局部变量会覆盖全局变量;局部变量值后加上!让css更加简洁,适应性更强,阅读性更佳,更易于代码的维护等诸多好处。特性丰富,scss拥有比其他的任何css扩展语言更丰富的功能和特性。

m0_71225058的博客 1万+

温度PID控制PLC程序

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

SCSS 函数(Functions)

使用@function在这个例子中,函数接受一个参数$size,返回转换后的值。SCSS 的函数功能使得样式更加灵活和动态,可以执行复杂的计算和逻辑处理,减少重复代码,提升可维护性。

疯狂假前端的博客 1327

less、scss中使用循环实现动态样式

less使用each遍历对象循环赋值,实现动态样式

ke_sin的博客 1781

[ sass/scss ] 自定义函数 去单位 px转em

在使用scss过程中,一直会有个疑惑它的内部是如何运作的。实际上它的运作与现实生活中一直。如果你想要移除一个值的单位,你想要将它除以1单位。比如 50cm 我想取它的数字,那么我们除以1cm,得到结果是 50。反过来就是 1cm x 50 = 50cm。同理这个原理也适用于scss $length: 50px; $value: $length / 1px; // -> 50 ...

ljw1412的博客 2246

sass,scss中定义变量和函数的方式

scss中定义变量的格式是 $变量名 : 数值 ; 举例说明 $background : #ededed; $border-base : #dbdbdb; $light-background : #f1f1f1; $danger : #fb5250; $base : #111111; $secondary : #999999; $primary : #006fff; 函数的格式是: @function 函数名(参数) { @return 变量表达式; } 举例说明 @function doubleWid

业余前端的职业经历 3393

scss如何循环创建样式

代码】scss如何循环创建样式。

qq_22481733的博客 1030

scss-函数

  在scss中除了可以定义变量,具有@extend和@mixins等特性之外,还自备了一系列的函数功能。   scss本身带有大量的内置函数,具体可以参阅官网函数模块。   一、字符串函数 unquote($string):只能删除字符串最前和最后的引号(双引号或单引号),而无法删除字符串中间的引号。如果字符没有带引号,返回的将是字符串本身。 quote($strin...

banchousuo6747的博客 1406

scss中循环的妙用

文章目录1 @each in 循环2 @for... from... to 循环 1 @each in 循环 使用一个变量: #{$变量名} $colors: ( p1: rgb(255, 113, 61), p2: lightblue, p3: lightseagreen ); @each $key, $color in $colors { &.#{$key} { background-color: $color; } } 2 @for

swallowblank的博客 6212

前端知识汇总【SCSS】

scss学习笔记

qq_44810886的博客 1083

scss基本使用及操作函数

操作函数 1、for循环 @for … from … through @for $var from <start> through <end> // 范围包括<start>和<end>的值 1 @for … from … to @for $var from <start> to <end> // 范围包括<start>,不包括<end>的值 1 获取数组中第i项的值nth($arr, $i) 获.

浩星 1万+

SCSS基本使用

Sass官网:https://www.sass.hk/docs/ Sass就是css的预处理器,它是Sass3版本中引入的新语法特性 vue中使用scss,安装: cnpm i -S node-sass sass-loader 使用: <style lang="scss" scoped> </style> 一、变量 使用$符号去声明一个变量 给同一个变量再次赋值时,后赋值的会替换先赋值的 可以在变量的结尾添加!default给一个未通过!defa...

5万+
上一篇: git 合并 dev 分支到 master
下一篇: (扩展 vue 思维)使用 React 构建一个轮子(LoadingBar加载组件)让 useState 挂载 ref 实例,函数外部 js 调用实例 ref.useState 实现子组件更新
归来巨星
归来巨星 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄7年 5391粉丝 95原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归来巨星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值