我可以在 PHP 中使用 LESS/SASS 混合颜色吗?
Posted
技术标签:
【中文标题】我可以在 PHP 中使用 LESS/SASS 混合颜色吗?【英文标题】:Can I use LESS/SASS mixin colors with PHP? 【发布时间】:2012-12-19 13:11:01 【问题描述】:我正在开发一个 WordPress 主题,该主题在管理面板中使用颜色选择器,用户可以在其中选择自定义链接颜色。我希望链接悬停颜色与正常链接颜色相同,但变暗 10%。在 LESS 中,我可以使用链接颜色作为变量并使用@link-hover: darken(@link-color, 10%);
,但是这与 php 颜色选择器无关。有没有办法让 PHP 引用 LESS 或 SASS 混合变量?或者也许其他一些解决方案可以获得我正在寻找的结果?
使用:PHP 5.4.4 / WordPress 3.5 / LESS 2.7.1
我的 WordPress“主题定制器”功能(来自 hal gatewood):
function stillcalm_customize_register( $wp_customize )
$colors = array();
$colors[] = array( 'slug'=>'content_bg_color', 'default' => '#ffffff', 'label' => __( 'Background Color', 'stillcalm' ) );
$colors[] = array( 'slug'=>'content_text_color', 'default' => '#000000', 'label' => __( 'Text Color', 'stillcalm' ) );
foreach($colors as $color)
// SETTINGS
$wp_customize->add_setting( $color['slug'], array( 'default' => $color['default'], 'type' => 'option', 'capability' => 'edit_theme_options' ));
// CONTROLS
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $color['slug'], array( 'label' => $color['label'], 'section' => 'colors', 'settings' => $color['slug'] )));
然后在标题中:
<?php
$text_color = get_option('text_color');
$background_color = get_option('background_color');
?>
<style>
body
color: <?php echo $text_color; ?>;
background-color: <?php echo $background_color; ?>;
</style>
【问题讨论】:
只是为了确定。 LESS 和 SASS 是两个不同的东西。它们通常做同样的事情,但它们是不同的项目,具有不同的语法和不同的解析器。 我使用 LESS,但如果效果更好,我愿意切换到 SASS。但实际上我想要的只是使用变量,所以 Calle 建议的仅限 PHP 的解决方案工作得很好。 【参考方案1】:如果您使用 javascript 来解析 LESS 或 SASS,您可以这样做。这是一个描述其工作原理的线程:Parse LESS client side。您将编写生成 LESS 的 PHP 代码,然后在客户端使用 javascript 对其进行解析。
这是一个关于如何使用 PHP 进行操作的线程:How to generate lighter/darker color with PHP?
【讨论】:
使用 PHP 听起来更简单,所以我想我会使用它。我不确定如何将颜色选择器的编号合并到其中,以及如何获得它来创建一个新变量而不仅仅是更改当前变量..?我在上面粘贴了更多代码以供参考。 例如,$background_color 是一个十六进制值,所以如果你想将它变暗十“步”,你只需写成 adjustBrightness($background_color, -10) 而不是 $background_color。当然包括了adjustBrightness 之后! (阅读我给你的链接中的第二个答案) (该页面上还有一个使用百分比的解决方案,但是我认为使用步骤的方法写得更优雅。正如他所说,它还有其他优点。) 非常感谢,它运行良好。我使用步骤使用 PHP 解决方案,因为我同意它是更简洁的代码。只是为了向其他人澄清:这根本不是使用 LESS,而是使用 PHP。以上是关于我可以在 PHP 中使用 LESS/SASS 混合颜色吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何知道在哪里使用 css、less 和 Sass? [关闭]