CSS3 & SCSS 样式简洁之道

本文介绍如何使用SCSS预处理器和React框架创建动态的、具有随机特性的礼物盒界面。通过定义SCSS混合方法实现礼物盒的样式定制,结合React组件渲染大量随机属性的礼物盒实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSS3 & SCSS 样式简洁之道

SCSS 代码

*{
  html, body {
    width: 100%;
    height: 100%;
    background-color:#fff;
    margin:0;
    display: flex;  // flex 弹性盒子布局
    flex-wrap: wrap;  // 换行
  }
}
// 定义一个方法
@mixin present($size:100px,$bodyColor:#ff5151, $rebbonColor: #fff, $rotateDeg: 0deg) {
  width: $size;
  height: $size;
  position: relative;
  background-color:$bodyColor;
  box-shadow: 0px 0px 20px rgba(black, 0.5);
  transform: rotate($rotateDeg);
  margin: 10px;
  .vribbon, .hribbon {
    background-color: $rebbonColor;
    box-shadow: 0 0 20px rgba(black, 0.5);
  }
  .cap{
    background-color: $bodyColor;
  }
}

// 纵向绑带
.vribbon {
  width: 15%;
  height: 100%;
  position: absolute;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
}

// 横向绑带
.hribbon {
  width: 100%;
  height: 15%;
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
}

// 盖子
.cap {
  height: 15%;
  width: calc(100% + 10px);  // 盖子比盒子左右宽出5cm
  position: absolute;
  left: 0;
  top: 0;
  transform: translateX(-5px);  // 左侧定位, 盒子左移5cm
  box-shadow: 0 0 20px rgba(black, 0.5);
}

// 定义颜色变量
$colorRed: #f24;
$colorWhite: #fff;
$colorBlue: #3364f7;
$colorYellow: #ffd221;
$colorPurple: #c747ff;
// 定义颜色集合
$colors: ($colorRed,$colorWhite,$colorBlue,$colorYellow,$colorPurple);




@for $i from 0 through 50 {
  $size: random(50) + 50;
$rotateDeg: random(20) - 10;
$bodyColor: nth($colors, random(5));
$ribbonColor: nth($colors, random(5));

  .present#{$i}{
    @include present(#{$size}px, $bodyColor, $ribbonColor,#{$rotateDeg}deg)
  }
}

React 随机盒子代码


 {
            Array.from(new Array(50).keys()).map((item, index) => {
              return (
                <div className={`present${index}`} key={index}>
                  <div className="cap"></div>
                  <div className="vribbon"></div>
                  <div className="hribbon"></div>
                </div>
              )
            })
          }

效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值