博客 / 詳情

返回

less&scss 常用 mixin&function集合

less&scss 常用 mixin&function集合

scss
mixin:返回樣式集合
定義:@mixin 變量名(參數) { 樣式 }
調用:@include 變量名(參數);
  1. mixin 基礎用法

    // 單行文本溢出
    @mixin oneRowOverflow {
     white-space: nowrap;
     overflow: hidden;
     text-overflow: ellipsis;
    }
  2. 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;
    }
  3. 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;
    }
  4. 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;
     }
    }
  5. 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;
     }
    }
  6. 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 返回值 }
調用:變量名(參數);
  1. function 傳參

    @function stripUnits($target) {
     @return math.div($target, $target * 0 + 1);
    }
  2. 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;
    }
less
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.