SCSS/Less/Sass与<;相比有哪些优势功能;?php标题(“内容类型:text/css”);

SCSS/Less/Sass与<;相比有哪些优势功能;?php标题(“内容类型:text/css”);,php,css,sass,less,Php,Css,Sass,Less,我是一名长期的PHP开发人员,虽然我用CSS做了很多聪明的事情,但我从未真正深入研究过SCSS/Less/Sass 在LAMP stack中工作时,我从未见过任何来自SCSS/Less/Sass的东西,只要将我的“css文件”设置为一个带有 <?php header("Content-type: text/css"); /* Variables to be used in the following CSS heredoc */ echo <<< CSS /* Lots

我是一名长期的PHP开发人员,虽然我用CSS做了很多聪明的事情,但我从未真正深入研究过SCSS/Less/Sass

在LAMP stack中工作时,我从未见过任何来自SCSS/Less/Sass的东西,只要将我的“css文件”设置为一个带有

<?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一直在灯堆中使用,除了我自己和少数几个其他人之外,我几乎从未见过使用的头技术。我已经尝试过SCS/Less/Sass两种方法好几次了,只是对它们的局限性感到恼火。我错过了什么

SCSS/Less/Sass提供了哪些功能,这些功能仅仅通过创建带有css头声明的PHP文件就缺少了

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


但是这一小小的一次性不便似乎无法弥补功能的损失?。

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

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

#main {
    // some rules
}

#main .p {
    // some more rules
}
变得更清晰(更重要的是,从逻辑/可读性的角度来看更清晰):

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

a {
    // some rules

    &:hover {
        // some rules just for the hover
    }
}
同样的方法也可以用于媒体查询。非常方便:

#foo {
    // some rules

    @media screen and (max-width: 320px) {
        // some media queried rules
    }
}
或者,对于数学,PHP无法本机处理(下面是一个明显人为的示例,但这类事情可能非常有用):

颜色数学:

>> #777 + #777
#eeeeee
在PHP中,您必须复制各种各样的内容。根据我的经验,彩色的可能非常有用


最后一点注意:我见过的大多数人使用PHP作为CSS路径,他们不会对其进行任何缓存,每次都需要PHP生成CSS。Sass可编译为静态文件,这在您的服务器上更方便。

根据您的场景需要使用任何文件。如果两者都不是出于任何原因而需要的,那么就选择一个。这对于这个网站来说太宽泛和固执己见了。许多好的问题都会根据专家经验产生一定程度的意见,但对这个问题的回答往往几乎完全基于意见,而不是事实、参考资料或特定的专业知识。通常,人们会发布前端资产的“构建”版本,其中包含文件,在发布新版本之前,在前端运行这些工具时,只需更改一些变量等,就可以很方便地扩展其他SCSS项目(如bootstrap)。。。不要忘记,对于您自己的自定义函数,
@扩展了另一个规则的
include()
样式的包含,等等。您描述的“功能丧失”可能只是缺乏对Sass等实际功能的理解。@liljoshu所以,所有这些都是可能的,但逻辑不应该以您所想的方式出现在CSS中。一些例子。。。通过放置
或诸如此类的内容以及一些适用于
.morning
的CSS规则,按时间/日期更改功能。使用您的PHP在HTML中吐出类名,而不是在CSS.Header颜色中吐出规则(如果登录的话),而不是以相同的方式工作。你可以做一些像
的事情,然后做
body.logged-in#header{color:red;}
。对于真正独特的东西,比如用户配置的背景图像,你可以使用
是的,如果你让用户设置整个自定义主题,你可能需要采用数据库驱动的PHP方法。您仍然可以使用Sass制作主站点CSS,然后将用户的CSS作为一个单独的(PHP驱动的)CSS文件包含进来。这样,两者都有好处。
width: 1px + 1px + 1px;
>> #777 + #777
#eeeeee