Scss学习--关于Scss指令@at-root、@warn、@debug、@error

本文深入解析Sass预处理器中的@at-root、@debug、@warn和@error指令的使用方法及场景,帮助读者掌握如何利用这些指令进行更高效、灵活的样式编写与调试。

@at-root

将标签放到根路径下

.parent{
    width: 600px/960px*100%;
    height: 300px/960px*100%;

    @at-root .child{
        width: 200px;
        height: 250px;
    }
    .brother{
        background-color: palegreen;
        @at-root .his_son{
            font-size: 25px;
        }
    }
}
//编译为
.parent{
    width: 600px/960px*100%;
    height: 300px/960px*100%;
    .brother{
        background-color: palegreen;
        @at-root .his_son{
            font-size: 25px;
        }
    }
}
 .child{
        width: 200px;
        height: 250px;
    }
@at-root(with…)
@at-root(without…) 移动到…指令之外
默认的@at-root 就是 @at-root(rule)
// @media p{

     div{
              overflow: hidden;
         @at-root .his_son {
             color: #000;
         }

       @at-root (with: media) { /*!不会跳出media*/
            p{
                color: red;
             }
         }

        @at-root (without:media){ /*!将会跳出media*/
             p{
                 color: red;
             }
         }
   }
}
@debug

将sasscript表达式的值打印到标准错误输出流,它对于调试Sass文件非常有用

	@debug 10em+12em;

注意:可以在控制台中看到结果(cmd也可以)

@warm

指令将sasscript表达式的值打印到标准错误输出流
对于那些需要警告用户不推荐使用或从轻微mixin使用错误中恢复的库来说
它非常有用

@mixin adjust-location($x, $y){
 @if unitless($number: $x){
     @warn "Assuming #{$x} to be in pixels";
     $x:1px * $x;
 };
 @if unitless($number: $y){
     @warn "Assuming #{$y} to be in pixels";
     $y:1px * $y;
 };
 position: relative;
 left: $x;
 top: $y;
}
.divbox{
 @include adjust-location(1,2);
}
div{
 height: 20px;
 width: 20px;
 @warn "Dont't set unnumber type";
}

注意:可以在控制台中看到结果(cmd也可以)

@error

调用时的错误判断,将sasscript表达式的值作为致命错误抛出,包括一个很好的堆栈跟踪,对于验证mixin和函数的参数非常有用

@mixin adjust-location($x, $y){
    @if unitless($number: $x){
        @error "$x may not be unitless,was #{$x}";
    };
    @if unitless($number: $y){
        @error "$y may not be unitless,was #{$y}";
    };
    position: relative;
    left: $x;
    top: $y;
}

$error_x:10;
.divbox{
    @include adjust-location(1,2px);
}

注意:可以在控制台中看到结果(cmd也可以)

npm warn Unknown user config "start". This will stop working in the next major version of npm. npm error code ERESOLVE npm error ERESOLVE could not resolve npm error npm error While resolving: hongrongshuzi@1.0.0 npm error Found: sass@1.32.13 npm error node_modules/sass npm error dev sass@"^1.26.5" from @vue/cli-service@4.4.6 npm error node_modules/.pnpm/@vue+cli-service@4.4.6_sass-loader@10.1.1_vue-template-compiler@2.6.12/node_modules/@vue/cli-service npm error @vue/cli-service@4.4.6 npm error node_modules/@vue/cli-service npm error dev @vue/cli-service@"4.4.6" from the root project npm error @vue/cli-service@4.4.6 npm error node_modules/.pnpm/@vue+cli-plugin-eslint@4.4.6_@vue+cli-service@4.4.6_eslint@7.15.0/node_modules/@vue/cli-service npm error peer @vue/cli-service@"^3.0.0 || ^4.0.0-0" from @vue/cli-plugin-eslint@4.4.6 npm error node_modules/.pnpm/@vue+cli-plugin-eslint@4.4.6_@vue+cli-service@4.4.6_eslint@7.15.0/node_modules/@vue/cli-plugin-eslint npm error @vue/cli-plugin-eslint@4.4.6 npm error node_modules/@vue/cli-plugin-eslint npm error @vue/cli-service@4.4.6 npm error node_modules/.pnpm/@vue+cli-plugin-babel@4.4.6_@vue+cli-service@4.4.6_core-js@3.25.3_vue@2.6.12/node_modules/@vue/cli-service npm error peer @vue/cli-service@"^3.0.0 || ^4.0.0-0" from @vue/cli-plugin-babel@4.4.6 npm error node_modules/.pnpm/@vue+cli-plugin-babel@4.4.6_@vue+cli-service@4.4.6_core-js@3.25.3_vue@2.6.12/node_modules/@vue/cli-plugin-babel npm error @vue/cli-plugin-babel@4.4.6 npm error node_modules/@vue/cli-plugin-babel npm error @vue/cli-service@4.4.6 npm error node_modules/.pnpm/@vue+cli-plugin-router@4.5.19_@vue+cli-service@4.4.6/node_modules/@vue/cli-service npm error peer @vue/cli-service@"^3.0.0 || ^4.0.0-0" from @vue/cli-plugin-router@4.5.19 npm error node_modules/.pnpm/@vue+cli-plugin-router@4.5.19_@vue+cli-service@4.4.6/node_modules/@vue/cli-plugin-router npm err
09-13
gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir '/root/vue/admin/node_modules/node-sass/.node-gyp' gyp ERR! System Linux 3.10.0-1160.119.1.el7.x86_64 gyp ERR! command "/root/node-v14.15.1-linux-x64/bin/node" "/root/vue/admin/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library=" gyp ERR! cwd /root/vue/admin/node_modules/node-sass gyp ERR! node -v v14.15.1 gyp ERR! node-gyp -v v8.4.1 gyp ERR! not ok Build failed with error code: 1 npm WARN notsup Unsupported engine for node-sass@9.0.0: wanted: {"node":">=16"} (current: {"node":"14.15.1","npm":"6.14.8"}) npm WARN notsup Not compatible with your version of node/npm: node-sass@9.0.0 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.3 (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/webpack-dev-server/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/watchpack-chokidar2/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@9.0.0 postinstall: `node scripts/build.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the node-sass@9.0.0 postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2025-04-01T04_39_46_911Z-debug.log
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值