sass - 使用@mixin 来“干燥”@keyframes 是个好主意吗?
问题描述
使用 mixins 来干燥关键帧是否是个好主意,如下例所示:
请注意,我在这里只有左右,但如果我在哪里有更多,我认为使用@mixins 是一个更好的选择。我不熟悉编写整洁的scss / sass的习惯,首选的方式是什么?
@keyframes fade-in-left {
0% {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
100% {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
@keyframes fade-in-right {
0% {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
100% {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
对比
@mixin fade-in-horizontally($direction_value) {
@keyframes fade-in-left {
0% {
opacity: 0;
transform: translate3d($direction_value, 0, 0);
}
100% {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
}
解决方案
Mixin 很棒,但不应该仅仅用于缩短一些代码。在这种情况下,您只想定义@keyframes
一次。
$keyframes-fade: (
('left', -100%),
('right', 100%)
);
@each $dir, $translateTX in $keyframes-fade {
@keyframes fade-in-#{$dir} {
0% {
opacity: 0;
transform: translate3d($translateTX, 0, 0);
}
100% {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
}
这将使您的代码更短,同时保持易于理解。
推荐阅读
- html - 在 WCFM 前端管理器中创建下载按钮
- angular - 将 Firestore 项目添加到本地存储收藏夹列表 - Ionic / Angular
- css - 有没有办法使用 flexbox 使图像看起来像这样?
- firebase - Firebase 批量写入:一次写入需要之前执行的另一次写入
- firebase - onMessage:在传入消息时调用两次回调 Flutter web
- javascript - 在 three.js THREE.Points 对象中按索引隐藏点
- java - 如何检测 Mac(Java 应用程序)中的“空闲”状态
- python - Matplotlib 交互式条形图
- excel - 替换 B 列中的值
- reactjs - 如何在 react-native 中的两个功能组件之间传递数据?