代码之家  ›  专栏  ›  技术社区  ›  lilHar

scss/less/sass vs<有哪些优点?php header(“内容类型:text/css”);

  •  -1
  • lilHar  · 技术社区  · 7 年前

    我是一个长期的php开发人员,虽然我用css做了很多聪明的事情,但我从未真正深入到scss/less/sass。

    在lamp stack中工作时,我从来没有看到过scss/less/sass中的任何东西,只要让我的“css文件”是一个.php文件

    <?php
    header("Content-type: text/css");
    /* Variables to be used in the following CSS heredoc */
    echo <<< CSS
    /* Lots of CSS code here that grabs calculated variables when I need them */
    CSS;
    ?>
    

    在lamp堆栈中,这比安装额外的scss/less/sass编译器并遵循它们的语法更加通用和简单,而且它允许使用完整的语言。

    然而,我看到scss/less/sass一直在灯堆中使用,除了我自己和少数其他人之外,我几乎从来没有看到过头部技术的使用。我已经尝试过两种scss/less/sass几次了,但都被这些限制所困扰。我错过了什么?

    scss/less/sass提供了哪些特性,而仅仅创建一个带有css头声明的php文件就缺少了这些特性?

    (我自己发现的唯一一个问题是,旧版本的IE会坚持把.php扩展名看作-而不是-一个CSS文件,但这很容易通过一两行.htaccess重定向来解决,

    但这种小小的一次性不便似乎无法抵消功能的损失?).

    1 回复  |  直到 7 年前
        1
  •  3
  •   Pradeep    7 年前

    sass可以处理的不仅仅是变量。如果你认为这是sass的唯一/主要好处,

    really want to dig into the docs a bit more .

    首先,最有用的特性之一是允许嵌套,而本机css不允许嵌套。这使您可以按逻辑方式对规则进行分组,因此:

    #main {
        // some rules
    }
    
    #main .p {
        // some more rules
    }
    

    变得更干净(更重要的是, 更清晰 从逻辑/可读性的角度来看:

    #main {
        // some rules
    
        p {
            // some rules just for paragraphs
        }
    }
    

    它还可以方便地将伪类与其元素进行逻辑分组:

    a {
        // some rules
    
        &:hover {
            // some rules just for the hover
        }
    }
    

    同样的方法也可以用于媒体查询。非常方便:

    #foo {
        // some rules
    
        @media screen and (max-width: 320px) {
            // some media queried rules
        }
    }
    

    或者对于数学,php不能本机处理(下面是一个显然是人为的例子,但是这类事情 可以 非常有用):

    width: 1px + 1px + 1px;
    

    颜色数学:

    >> #777 + #777
    #eeeeee
    

    有很多种 built-in functions 你必须在php中复制。根据我的经验,彩色的可能很有用。

    最后一点:我看到的大多数人都将php作为css路由,但不会对其进行任何缓存,这就要求php每次都生成css。sass编译为 静止的 文件,这在服务器上更容易。