CSS3 & SCSS 样式简洁之道

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>
              )
            })
          }

效果

在这里插入图片描述

CSS (Cascading Style Sheets) 和 SCSS (Sassy CSS) 都是用于描述网页样式的标记语言,但它们之间存在一些关键的区别: 1. **语法扩展性**: - CSS 是一种基础的样式表语言,其语法相对简洁,但直接编写复杂的样式规则可能会变得繁琐。 - SCSSCSS 的预处理器,它引入了一些变量、嵌套规则、混入(mixin)和继承等特性,使得编写更加模块化和易于维护。 2. **编写体验**: - SCSS 提供了类似编程的语言结构,如花括号包裹块,使代码组织更清晰。 - SCSS 支持注释、条件语句和循环,有助于创建可重用的代码片段。 3. **编译过程**: - CSS 是直接应用在浏览器上的,不需要编译。 - SCSS 文件需要通过编译器(如 Compass、LibSass 或 PostCSS)转换成 CSS 文件,然后再应用到浏览器上。 4. **工具支持**: - SCSS 社区提供了丰富的工具链,如 Atom、VS Code 的插件,以及命令行工具。 - CSS 编辑器可能也提供了一些间接支持 SCSS 的功能,但不如直接使用 SCSS 工具链完整。 5. **社区和生态系统**: - SCSS 拥有更活跃的开发者社区和更多的第三方库。 - CSS 本身是浏览器原生支持的语言,而 SCSS 的普及程度可能会影响某些老旧项目的兼容性。 如果你打算开始一个新的项目,或者希望代码更易读和维护,那么 SCSS 可能是一个更好的选择。然而,如果你在维护一个已经成熟的 CSS 项目,那么继续使用纯 CSS 也是可行的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值