很多时候,当我为客户设计网站时,我使用构成整个表示层的一个(或多个)CSS文件来设计他的网站.通常情况下,客户的需求在"网站主题"方面发生了巨大变化.他可能会根据自己的口味要求从基于蓝/绿色的主题改为基于红色/橙色的主题.问题是,我的文件包含所有信息,包括:
什么是"解耦"CSS文件以使其"主题"意识到的最佳实践,同时保持其所有关于定位的信息?
我的可能做法清单如下:
编辑:根据下面提供的很好的答案,我更新了我的列表中的其他可能的解决方案列表:
在哪种情况下哪个更好?还有其他易于维护和灵活的方式吗?
迄今为止的最佳答案:使用SASS制作非常灵活的样式表.当然,这意味着轻微的学习曲线,但根据一些评论,SASS似乎是动态样式表(以及HAML)的下一个方法.
只是在上下文中阐明主要问题:
在我的开发机器上,PHP5.3.1作为模块安装在Apache上,我在应用程序的根.htaccess文件中使用SetEnv APPLICATION_ENVIRONMENT开发.然后可以使用getenv('APPLICATION_ENVIRONMENT')从任何php脚本轻松检索它.
在生产服务器上,在sharedhost(dreamhost)上,我自己编译了php5.3.1,因为它没有直接支持.除了getenv('APPLICATION_ENVIRONMENT')返回false之外,一切正常.
在我的域的sharedhost root .htaccess中,我使用此.htaccess文件
Options +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi
<FilesMatch "^php5?\.(ini|cgi)$">
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</FilesMatch>
Options -indexes
Run Code Online (Sandbox Code Playgroud)
php5.cgi驻留在/ cgi-bin中并且运行良好.当然在我的应用程序的根文件夹中,我有另一个.htaccess定义:
SetEnv APPLICATION_ENVIRONMENT production
Run Code Online (Sandbox Code Playgroud)
但是当使用getenv('APPLICATION_ENVIRONMENT')时它返回false,任何想法如何解决这个问题?
这篇文章是来自superuser.com 的重复,但由于我没有答案,我开始怀疑这是一个用户问题,可能更多是一个编程问题(因为配置文件),所以这里是:
我使用Windows 7作为主机,Ubuntu Karmic作为客户操作系统安装了客户工具,当从主机切换到客户机时我遇到了令人讨厌的故障:垂直滚动切换到水平!(使用鼠标滚轮).由于我不关心水平滚动,我该如何禁用它?
我检查过网页,我发现的唯一一件事是在xorg.conf文件中播放并添加"InputDevice"部分
选项"ZAxisMapping""4 5"
这将只启用垂直滚动.问题是,我的配置文件中没有该部分所以我猜我需要添加
Section "InputDevice"
Identifier "VBoxMouse"
Driver "vboxmouse"
Option "ZAxisMapping" "4 5"
EndSection
Run Code Online (Sandbox Code Playgroud)
但重启xserver后似乎没有用.
有什么解决方法吗?
我在那里,我正在编写一个单元测试,断言文件没有被修改.测试代码执行时间不到一秒,因此我想知道是否可以以毫秒为单位检索文件修改时间.filemtime()函数以秒为单位返回UNIX时间戳.
我目前的解决方案是使用sleep(1)函数,这将确保在检查它是否被修改之前经过1秒.我不喜欢这种解决方案,因为它大大减慢了测试速度.
我无法通过get_file_contents()声明内容相等,因为可以重写的数据是相同的.
我猜这不可能,是吗?
我已经看到很多网站在他们生成的HTML源代码中执行此操作(甚至是stackoverflow本身),使用GET参数访问特定版本的CSS或JavaScript文件.有什么意义呢?
例:
<link rel="stylesheet" href="http://sstatic.net/so/all.css?v=6230">
<script type="text/javascript"
src="http://sstatic.net/so/js/master.js?v=6180"></script>
Run Code Online (Sandbox Code Playgroud)
它只是一种连贯性或最佳实践方式吗?是否只是因为浏览器上具有旧缓存版本的客户端被迫更新其过时版本?
我知道在Symfony2的配置中,没有对基本URL的引用,因为没有请求; 应用程序可以在cli中运行,也可以在Web服务器中运行,因此我们不能依赖请求.但是,我仍然有配置要求样式表或javascript基本URL(例如JQueryHelperBundle,您可以在其中设置您的jquery本地路径 - 作为本地URL).问题是,有没有办法动态设置配置的基本URL,而不必更改它,以便:
有没有办法获得基本网址信息?使用$_SERVER['DOCUMENT_ROOT']减去内核根目录之间的区别是否可以检测这样的基本URL?但是虚拟主机如何将网址重新定位到网页目录?硬编码基本URL完全将项目耦合到它在开发中的位置,并且移动项目需要每次都更改基本URL,这很烦人.
那么,有没有办法根据环境动态检测Symfony2配置中的基本URL,而不依赖于请求?
是否有可能将缓冲区列表"附加"到Vim中的特定选项卡?我目前正在使用MiniBufferExplorer,它显示了很好的选项卡中的所有缓冲区.它可以使用标准vim选项卡进行组合,但插件的缓冲区列表包含所有缓冲区,使用选项卡变得有点无用.这是我想要的一个例子:
选项卡A包含以下缓冲区列表:
选项卡B包含以下缓冲区列表:
目前我拥有的是:
选项卡A包含缓冲区列表
选项卡B包含以下缓冲区列表:
当谈到"缓冲区列表"时,我指的是列出迷你缓冲区插件的选项卡.
任何解决方法来实现这一目标?
我在这里看到有一个可能的树枝模板,用于将表单呈现为基于表格的html.我想知道如何更改一个表单的默认布局,从默认的基于div的html到基于表.根据文档,可以做到:
{% form_theme form 'path_to_template.html.twig' %}
Run Code Online (Sandbox Code Playgroud)
我如何包含那个树枝模板,我尝试过这样的事情:
{% form_theme form 'Twig:Form:form_table_layout.html.twig' %}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
apache ×2
css ×2
php ×2
symfony ×2
.htaccess ×1
base-url ×1
filemtime ×1
forms ×1
html ×1
javascript ×1
minibuffer ×1
scrollwheel ×1
tabs ×1
twig ×1
ubuntu-9.10 ×1
vim ×1
virtualbox ×1
windows-7 ×1
x11 ×1