<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: The Constants Gardener</title>
	<atom:link href="http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/feed/" rel="self" type="application/rss+xml" />
	<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/</link>
	<description>Things that Eric A. Meyer, CSS expert, writes about on his personal Web site; it&#039;s largely Web standards and Web technology, but also various bits of culture, politics, personal observations, and other miscellaneous stuff</description>
	<lastBuildDate>Fri, 10 May 2013 11:50:23 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: nate</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-385007</link>
		<dc:creator>nate</dc:creator>
		<pubDate>Sun, 15 Jun 2008 22:17:41 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-385007</guid>
		<description><![CDATA[Please check out &lt;a href=&quot;http://wiki.framwurk.org/pmwiki.php/Main/CSSPP&quot; title=&quot;CSSPP&quot; rel=&quot;nofollow&quot;&gt;CSSPP&lt;/a&gt;]]></description>
		<content:encoded><![CDATA[<p>Please check out <a href="http://wiki.framwurk.org/pmwiki.php/Main/CSSPP" title="CSSPP" rel="nofollow">CSSPP</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-378612</link>
		<dc:creator>James</dc:creator>
		<pubDate>Sat, 24 May 2008 19:34:39 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-378612</guid>
		<description><![CDATA[Try &lt;a href=&quot;http://klicman.org/p4/&quot; rel=&quot;nofollow&quot;&gt;p4&lt;/a&gt;, the Perl based macro processor. Works great for CSS.]]></description>
		<content:encoded><![CDATA[<p>Try <a href="http://klicman.org/p4/" rel="nofollow">p4</a>, the Perl based macro processor. Works great for CSS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CSS Pseudo-Selectors &#8226; Blog Archive &#8226; Joe&#8217;s Apt.</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-374749</link>
		<dc:creator>CSS Pseudo-Selectors &#8226; Blog Archive &#8226; Joe&#8217;s Apt.</dc:creator>
		<pubDate>Mon, 12 May 2008 17:59:07 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-374749</guid>
		<description><![CDATA[[...] maintenance sanity, Cascading Style Sheets Server-Side Constants. At the same time, I also share Eric Meyer&#8217;s frustration over the frequent knee-jerk &#8220;use a preprocessor&#8221; responses to proposals such as (and [...]]]></description>
		<content:encoded><![CDATA[<p>[...] maintenance sanity, Cascading Style Sheets Server-Side Constants. At the same time, I also share Eric Meyer&#8217;s frustration over the frequent knee-jerk &#8220;use a preprocessor&#8221; responses to proposals such as (and [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-225821</link>
		<dc:creator>John</dc:creator>
		<pubDate>Mon, 27 Aug 2007 18:50:25 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-225821</guid>
		<description><![CDATA[Time and time again I wish there were standard CSS constants. Why, oh why hasn&#039;t this happened yet? What is the reasoning behind this refusal, who refuses it, and why do they have they have a career/say-so in something they obviously don&#039;t know anything about? They must have an IT background...

Anyways, regarding post #2: agreed (kidding).]]></description>
		<content:encoded><![CDATA[<p>Time and time again I wish there were standard CSS constants. Why, oh why hasn&#8217;t this happened yet? What is the reasoning behind this refusal, who refuses it, and why do they have they have a career/say-so in something they obviously don&#8217;t know anything about? They must have an IT background&#8230;</p>
<p>Anyways, regarding post #2: agreed (kidding).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: refalo</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-36691</link>
		<dc:creator>refalo</dc:creator>
		<pubDate>Wed, 14 Jun 2006 12:35:46 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-36691</guid>
		<description><![CDATA[The server constants solution is great if I work and test directly with/in my cms - BUT:

Is there a way (in PHP - sorry, I&#039;m not a PHP expert!) to explicitly create/write the output/expanded css file (= css file after the substitution of the constants) on my disk. So I would be able to continue with testing the layout of my website (as I did before with my html-template + my expanded css file) separately in my favorite WYSIWYG-HTML-Editor (z.B. DreamWeaver) + Browser (without PHP!). After the layout testing I would put the files (html/css) separately in my cms backend... (as I did before).

Now (with the PHP server contants in the css file) I am not able to test my html layout any more... !?

Thank&#039;s for help.]]></description>
		<content:encoded><![CDATA[<p>The server constants solution is great if I work and test directly with/in my cms &#8211; BUT:</p>
<p>Is there a way (in PHP &#8211; sorry, I&#8217;m not a PHP expert!) to explicitly create/write the output/expanded css file (= css file after the substitution of the constants) on my disk. So I would be able to continue with testing the layout of my website (as I did before with my html-template + my expanded css file) separately in my favorite WYSIWYG-HTML-Editor (z.B. DreamWeaver) + Browser (without PHP!). After the layout testing I would put the files (html/css) separately in my cms backend&#8230; (as I did before).</p>
<p>Now (with the PHP server contants in the css file) I am not able to test my html layout any more&#8230; !?</p>
<p>Thank&#8217;s for help.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anne 2.0 &#187; CSS Makes Me Cry - Three Reasons</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-29046</link>
		<dc:creator>Anne 2.0 &#187; CSS Makes Me Cry - Three Reasons</dc:creator>
		<pubDate>Mon, 15 May 2006 21:15:22 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-29046</guid>
		<description><![CDATA[[...] ors. Sure, I can stick comments all over the place but that&#8217;s no substitute. You can do constants with a CSS preprocessor, but I want it baked into CSS. 2. No si [...]]]></description>
		<content:encoded><![CDATA[<p>[...] ors. Sure, I can stick comments all over the place but that&#8217;s no substitute. You can do constants with a CSS preprocessor, but I want it baked into CSS. 2. No si [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Viktor</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-10125</link>
		<dc:creator>Viktor</dc:creator>
		<pubDate>Tue, 13 Dec 2005 01:31:17 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-10125</guid>
		<description><![CDATA[This is great. Shaun Inman is truly the master of web development.]]></description>
		<content:encoded><![CDATA[<p>This is great. Shaun Inman is truly the master of web development.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Extra Hot &#187; Defining CSS Constants Using PHP</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-10020</link>
		<dc:creator>Extra Hot &#187; Defining CSS Constants Using PHP</dc:creator>
		<pubDate>Fri, 09 Dec 2005 18:08:46 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-10020</guid>
		<description><![CDATA[[...] r interesting technique pointed out in the discussion is the  CSS-SSC work by Shaun Inman. Thoughts by Eric Meyer. read more&#160;&#124;&#160;digg story	 													 	 [...]]]></description>
		<content:encoded><![CDATA[<p>[...] r interesting technique pointed out in the discussion is the  CSS-SSC work by Shaun Inman. Thoughts by Eric Meyer. read more&nbsp;|&nbsp;digg story	</p>
<p> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charlie Clark</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-9703</link>
		<dc:creator>Charlie Clark</dc:creator>
		<pubDate>Thu, 01 Dec 2005 12:14:36 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-9703</guid>
		<description><![CDATA[Inasmuch as CSS already supports constants or reserved names such as font names or colours then it would seem logical to extend this to support user definitions as this improve legibility and maintainability. Without it we are forced to jump through the hoops of server or client side procedural programming for essentially declarative presentation.

I&#039;ve been working in HTML for years but am only just making the switch to CSS (thank you Eric for an excellent book!). I have come across a number of areas where I am going to have to resort to programming where I might hope CSS to help me: rotating images and setting the navigation style for the active page. Faced with the prospect of two different levels of programming (server-side substitution for the image rotation and possibly Javascript for the active navigation) I&#039;ve been asking myself whether it wouldn&#039;t be easier to program everything in one level. For generated pages CSS should be easy to use and integrate otherwise it may be easier to ignore.

I agree CSS should not become XSLT and it should not become a full programming languages but support for dynamic, context-driven values can be included without this.

ie. a:current - highlight a navigation item for the current page without excessive and possibly tricky use of ids and classes;
{background-image URL:random(image1.gif, image2.gif...);}

Furthermore, pushing this into CSS gives both the designer and the user more control of what is seen.]]></description>
		<content:encoded><![CDATA[<p>Inasmuch as CSS already supports constants or reserved names such as font names or colours then it would seem logical to extend this to support user definitions as this improve legibility and maintainability. Without it we are forced to jump through the hoops of server or client side procedural programming for essentially declarative presentation.</p>
<p>I&#8217;ve been working in HTML for years but am only just making the switch to CSS (thank you Eric for an excellent book!). I have come across a number of areas where I am going to have to resort to programming where I might hope CSS to help me: rotating images and setting the navigation style for the active page. Faced with the prospect of two different levels of programming (server-side substitution for the image rotation and possibly Javascript for the active navigation) I&#8217;ve been asking myself whether it wouldn&#8217;t be easier to program everything in one level. For generated pages CSS should be easy to use and integrate otherwise it may be easier to ignore.</p>
<p>I agree CSS should not become XSLT and it should not become a full programming languages but support for dynamic, context-driven values can be included without this.</p>
<p>ie. a:current &#8211; highlight a navigation item for the current page without excessive and possibly tricky use of ids and classes;<br />
{background-image URL:random(image1.gif, image2.gif&#8230;);}</p>
<p>Furthermore, pushing this into CSS gives both the designer and the user more control of what is seen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Hanna</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-8772</link>
		<dc:creator>Steve Hanna</dc:creator>
		<pubDate>Tue, 22 Nov 2005 01:52:53 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-8772</guid>
		<description><![CDATA[Sorry again, folks. The examples above don&#039;t make much sense because the poster deleted a leading space. Let&#039;s try this:

&lt;code&gt;&#160;#navbar { ... }&lt;/code&gt;

will be OK. [In case this doesn&#039;t come through correctly either, there&#039;s supposed to be a blank space before the &#039;#&#039; in the line above.]]]></description>
		<content:encoded><![CDATA[<p>Sorry again, folks. The examples above don&#8217;t make much sense because the poster deleted a leading space. Let&#8217;s try this:</p>
<p><code>&nbsp;#navbar { ... }</code></p>
<p>will be OK. [In case this doesn't come through correctly either, there's supposed to be a blank space before the '#' in the line above.]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Hanna</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-8771</link>
		<dc:creator>Steve Hanna</dc:creator>
		<pubDate>Tue, 22 Nov 2005 01:48:09 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-8771</guid>
		<description><![CDATA[An amendment to my previous post: To prevent the C preprocessor from barfing on CSS files containing unqualified IDs (things like &quot;#navbar&quot;), you must do two things:

1. Put a space (one or more) before the &#039;#&#039; in the ID&#039;s definition. So,
&lt;code&gt;
#navbar { ... }
&lt;/code&gt;

will cause trouble, but
&lt;code&gt;
 #navbar { ... }
&lt;/code&gt;

will be OK.

2. Change the &#039;cc&#039; command in the shell script to invoke &quot;traditional&quot; C preprocessor behavior (which ignores preprocessor commands that don&#039;t begin in the first column). This will vary from compiler to compiler; on the Gnu C compiler (gcc) the correct command is
&lt;code&gt;
cat $1 &#124; cc -E &lt;strong&gt;-traditional-cpp&lt;/strong&gt; - &#124; grep -v ^# &#124; grep -v ^$
&lt;/code&gt;

Sorry for the inconvenience. As it turns out, I seldom use unqualified IDs, so I just noticed the problem.]]></description>
		<content:encoded><![CDATA[<p>An amendment to my previous post: To prevent the C preprocessor from barfing on CSS files containing unqualified IDs (things like &#8220;#navbar&#8221;), you must do two things:</p>
<p>1. Put a space (one or more) before the &#8216;#&#8217; in the ID&#8217;s definition. So,<br />
<code><br />
#navbar { ... }<br />
</code></p>
<p>will cause trouble, but<br />
<code><br />
 #navbar { ... }<br />
</code></p>
<p>will be OK.</p>
<p>2. Change the &#8216;cc&#8217; command in the shell script to invoke &#8220;traditional&#8221; C preprocessor behavior (which ignores preprocessor commands that don&#8217;t begin in the first column). This will vary from compiler to compiler; on the Gnu C compiler (gcc) the correct command is<br />
<code><br />
cat $1 | cc -E <strong>-traditional-cpp</strong> - | grep -v ^# | grep -v ^$<br />
</code></p>
<p>Sorry for the inconvenience. As it turns out, I seldom use unqualified IDs, so I just noticed the problem.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Hanna</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-8763</link>
		<dc:creator>Steve Hanna</dc:creator>
		<pubDate>Mon, 21 Nov 2005 19:46:13 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-8763</guid>
		<description><![CDATA[I&#039;ve recently been using the C preprocessor to implement constants in CSS files. For example, to define a color scheme, I insert the following lines in my .CSS file:

#define CLIENT_FG  #123456
#define CLIENT_BG  #987654
#define CLIENT_TXT #012

/* I can then use statements such as: */
body { background-color: CLIENT_BG; color: CLIENT_TXT; }

I have a one-line UNIX shell script named &#039;ppcss&#039; that handles the processing:

cat $1 &#124; cc -E - &#124; grep -v ^# &#124; grep -v ^$

By convention, I name my CSS files *.CSS for the &quot;raw&quot; files (those that contain preprocessor statements) and *.css for the &quot;clean&quot; files (those that contain pure css code, after preprocessing). I edit the .CSS files, then run the command

ppcss foo.CSS &gt; foo.css

to generate the &quot;clean&quot; css file. Note that this script strips comments and blank lines as well as preprocessor statements (which is OK, because I don&#039;t need the comments in the file when I upload it to the web server, and the fact that the comments never have to be downloaded to the user&#039;s browser make me feel better about including lots of comments in my css files).]]></description>
		<content:encoded><![CDATA[<p>I&#8217;ve recently been using the C preprocessor to implement constants in CSS files. For example, to define a color scheme, I insert the following lines in my .CSS file:</p>
<p>#define CLIENT_FG  #123456<br />
#define CLIENT_BG  #987654<br />
#define CLIENT_TXT #012</p>
<p>/* I can then use statements such as: */<br />
body { background-color: CLIENT_BG; color: CLIENT_TXT; }</p>
<p>I have a one-line UNIX shell script named &#8216;ppcss&#8217; that handles the processing:</p>
<p>cat $1 | cc -E &#8211; | grep -v ^# | grep -v ^$</p>
<p>By convention, I name my CSS files *.CSS for the &#8220;raw&#8221; files (those that contain preprocessor statements) and *.css for the &#8220;clean&#8221; files (those that contain pure css code, after preprocessing). I edit the .CSS files, then run the command</p>
<p>ppcss foo.CSS &gt; foo.css</p>
<p>to generate the &#8220;clean&#8221; css file. Note that this script strips comments and blank lines as well as preprocessor statements (which is OK, because I don&#8217;t need the comments in the file when I upload it to the web server, and the fact that the comments never have to be downloaded to the user&#8217;s browser make me feel better about including lots of comments in my css files).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: torresburriel.com &#187; CSS-SSC: preprocesador de hojas de estilo</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-6891</link>
		<dc:creator>torresburriel.com &#187; CSS-SSC: preprocesador de hojas de estilo</dc:creator>
		<pubDate>Wed, 28 Sep 2005 22:24:01 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-6891</guid>
		<description><![CDATA[[...] uilo. Resulta que mirando otra cosa en el weblog del gran Eric Meyer cuando he visto esto: The Constants Gardener. ]]></description>
		<content:encoded><![CDATA[<p>[...] uilo. Resulta que mirando otra cosa en el weblog del gran Eric Meyer cuando he visto esto: The Constants Gardener. </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Beacock's Blog</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-6415</link>
		<dc:creator>Andrew Beacock's Blog</dc:creator>
		<pubDate>Tue, 13 Sep 2005 20:55:13 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-6415</guid>
		<description><![CDATA[&lt;strong&gt;Constants in CSS - it&#039;s like waiting for a bus&lt;/strong&gt;

I&#039;m more of a server-side programmer really, and don&#039;t deal that much in client-side stuff like CSS and JavaScript, but I try to keep an eye on what is going on in those areas as they tie so closely to the backend stuff.]]></description>
		<content:encoded><![CDATA[<p><strong>Constants in CSS &#8211; it&#8217;s like waiting for a bus</strong></p>
<p>I&#8217;m more of a server-side programmer really, and don&#8217;t deal that much in client-side stuff like CSS and JavaScript, but I try to keep an eye on what is going on in those areas as they tie so closely to the backend stuff.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Hester</title>
		<link>http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-6344</link>
		<dc:creator>Chris Hester</dc:creator>
		<pubDate>Tue, 06 Sep 2005 08:32:17 +0000</pubDate>
		<guid isPermaLink="false">http://meyerweb.com/eric/thoughts/2005/08/31/the-constants-gardener/#comment-6344</guid>
		<description><![CDATA[This post inspired me to make a demo using CSS generated from PHP:

&lt;a href=&quot;http://www.designdetector.com/2005/09/css-gradients-demo.php&quot; rel=&quot;nofollow&quot;&gt;CSS Gradients Demo&lt;/a&gt;

There&#039;s one other server-side CSS approach people might consider for constants and variables, and that&#039;s &lt;a href=&quot;http://www.w3schools.com/xslfo/default.asp&quot; rel=&quot;nofollow&quot;&gt;XSL-FO&lt;/a&gt;. Or has that been abandoned due to its complexity and verbosity?]]></description>
		<content:encoded><![CDATA[<p>This post inspired me to make a demo using CSS generated from PHP:</p>
<p><a href="http://www.designdetector.com/2005/09/css-gradients-demo.php" rel="nofollow">CSS Gradients Demo</a></p>
<p>There&#8217;s one other server-side CSS approach people might consider for constants and variables, and that&#8217;s <a href="http://www.w3schools.com/xslfo/default.asp" rel="nofollow">XSL-FO</a>. Or has that been abandoned due to its complexity and verbosity?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->