Zend_View-Helpers-HeadStyle.xml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <sect3 id="zend.view.helpers.initial.headstyle">
  2. <title>HeadStyle 助手 </title>
  3. <para>
  4. 在 HTML <code>&lt;head&gt;</code> 元素中 HTML <code>&lt;style&gt;</code> 元素用来包含 CSS stylesheets inline 。
  5. </para>
  6. <note>
  7. <title> 使用 HeadLink 来链接 CSS 文件 </title>
  8. <para>
  9. <link linkend="zend.view.helpers.initial.headlink">HeadLink</link> 为包含外部 stylesheets 应该用来生成 <code>&lt;link&gt;</code> 元素。如果想定义自己的 stylesheets inline, 使用 <code>HeadScript</code> 。
  10. </para>
  11. </note>
  12. <para>
  13. <code>HeadStyle</code> 助手支持下列方法来设置和添加 stylesheet 声明:
  14. </para>
  15. <itemizedlist>
  16. <listitem><para><code>appendStyle($content, $attributes =
  17. array())</code></para></listitem>
  18. <listitem><para><code>offsetSetStyle($index, $content, $attributes =
  19. array())</code></para></listitem>
  20. <listitem><para><code>prependStyle($content, $attributes =
  21. array())</code></para></listitem>
  22. <listitem><para><code>setStyle($content, $attributes =
  23. array())</code></para></listitem>
  24. </itemizedlist>
  25. <para>
  26. 对于所有情况,<code>$content</code> 是实际上的 CSS 声明。<code>$attributes</code> 是提供给 <code>style</code> 标签的任何额外的属性:lang、 title、 media 或 dir 都是允许的。
  27. </para>
  28. <para>
  29. <code>HeadStyle</code> 也允许抓取样式声明,如果想用程序生成声明,然后在任何地方自由使用,这很有用。这个用法将在下面的例子给出。
  30. </para>
  31. <para>
  32. 最后,你也可以用 <code>headStyle()</code>方法 来快速地添加声明元素,它的用法: <code>headStyle($content$placement = 'APPEND', $attributes = array())</code> 。<code>$placement</code> 是 'APPEND'、 'PREPEND' 或 'SET'。
  33. </para>
  34. <para>
  35. <code>HeadStyle</code> 覆盖 <code>append()</code>, <code>offsetSet()</code>,<code>prepend()</code> 和 <code>set()</code> 中的每一个来加强上述特殊方法的用法。 在内部,它存储每个条目为 <code>stdClass</code> 令牌,它在稍后用 <code>itemToString()</code> 方法 serializes 。这允许在堆栈里检查条目,并可选地通过修改返回的对象来修改这些条目。
  36. </para>
  37. <para>
  38. <code>HeadStyle</code> 助手是 <link linkend="zend.view.helpers.initial.placeholder"> 占位符助手 </link> 的一个具体实现。
  39. </para>
  40. <example id="zend.view.helpers.initial.headstyle.basicusage">
  41. <title>HeadStyle 助手的基本用法 </title>
  42. <para>
  43. 在任何时候都可以指定一个新的样式标签:
  44. </para>
  45. <programlisting role="php"><![CDATA[
  46. <?php // adding styles
  47. $this->headStyle()->appendStyle($styles);
  48. ?>
  49. ]]></programlisting>
  50. <para>
  51. 对 CSS 来说,顺序非常重要,因为层叠的顺序(the order of the cascade),你需要确保样式表中的声明按特定的顺序加载。使用append、 prepend 和 offsetSet 指令可帮助你达到目的:
  52. </para>
  53. <programlisting role="php"><![CDATA[
  54. <?php // Putting styles in order
  55. // place at a particular offset:
  56. $this->headStyle()->offsetSetStyle(100, $customStyles);
  57. // place at end:
  58. $this->headStyle()->appendStyle($finalStyles);
  59. // place at beginning
  60. $this->headStyle()->prependStyle($firstStyles);
  61. ?>
  62. ]]></programlisting>
  63. <para>
  64. 当准备好在布局脚本里输出所有样式声明,简单地 echo 助手:
  65. </para>
  66. <programlisting role="php"><![CDATA[
  67. <?= $this->headStyle() ?>
  68. ]]></programlisting>
  69. </example>
  70. <example id="zend.view.helpers.initial.headstyle.capture">
  71. <title> 用 HeadStyle 助手抓取样式声明 </title>
  72. <para>
  73. 有时候需要用程序生成 CSS 样式声明。当你可以使用字符串串联,heredoc等等, 通常通过创建脚本和在PHP标签里做手脚会更容易些。<code>HeadStyle</code> 可以做这个,把它抓取到堆栈:
  74. </para>
  75. <programlisting role="php"><![CDATA[
  76. <?php $this->headStyle()->captureStart() ?>
  77. body {
  78. background-color: <?= $this->bgColor ?>;
  79. }
  80. <?php $this->headStyle()->captureEnd() ?>
  81. ]]></programlisting>
  82. <para>
  83. 下面是一些假设:
  84. </para>
  85. <itemizedlist>
  86. <listitem><para>
  87. 样式声明将追加到堆栈。如果需要替换或者加到堆栈顶部,那么需要分别把 'SET' 或 'PREPEND' 作为第一个参数传递给 <code>captureStart()</code> 。
  88. </para></listitem>
  89. <listitem><para>
  90. 如果想指定任何另外的属性给 <code>&lt;style&gt;</code> 标签,通过数组把它们作为第二个参数传递给 <code>captureStart()</code> 。
  91. </para></listitem>
  92. </itemizedlist>
  93. </example>
  94. </sect3>
  95. <!--
  96. vim:se ts=4 sw=4 et:
  97. -->