less&scss 常用 mixin&function集合
scss
mixin:返回樣式集合
定義:@mixin 變量名(參數) { 樣式 }
調用:@include 變量名(參數);
-
mixin 基礎用法
// 單行文本溢出 @mixin oneRowOverflow { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -
mixin 傳參
// 多行文本溢出 @mixin multipleRowsOverflow($width, $row) { width: $width; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; word-break: break-all; text-overflow: ellipsis; -webkit-line-clamp: $row; } -
mixin 參數默認值
// 多行文本溢出 @mixin multipleRowsOverflow($width: 100%, $row: 2) { width: $width; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; word-break: break-all; text-overflow: ellipsis; -webkit-line-clamp: $row; } -
mixin + 條件
// 彈性盒佈局 @mixin flexLayout($justify: null, $align: null, $direction: null) { display: flex; @if $direction !=null { flex-direction: $direction; } @if $justify !=null { justify-content: $justify; } @if $align !=null { align-items: $align; } } -
mixin + while循環
// 批量fontsize @mixin fontSizeLoop($base:10, $increment:2, $max:52, $unit: 1px) { @while $base<= $max { .fz-#{$base + $increment} { font-size: ($base + $increment) * $unit; } $base: $base + $increment; } } -
mixin 內調用 mixin
// 居中圖片 @mixin imgLayout($width: null) { @if $width !=null { @if not unitless($width) { width: px2rem($width); } @else { width: $width; } } @include flexLayout(center, center); overflow: hidden; img { font-size: px2rem(12); width: 100%; object-fit: fill } }
function: 用於處理參數最後返回一個特定值
定義:@function 變量名(參數) { return 返回值 }
調用:變量名(參數);
-
function 傳參
@function stripUnits($target) { @return math.div($target, $target * 0 + 1); } -
function + 條件
@use 'sass:math'; @function px2rem($px, $context: $root-font-size) { @if not unitless($px) { $px: stripUnits($px); } @if not unitless($context) { $context: stripUnits($context) } @return $px / $context * 1rem; }