带ZF的样式表顺序

时间:2013-11-01 09:56:25

标签: php zend-framework

我正在使用ZF 1.11,我对样式表的顺序有一个愚蠢的问题:

在我的layoyut.phtml我想设置全局样式表:

<!-- layout.phtml --> 
<head>
     <?php
        $this->headLink()
                ->appendStylesheet('/css/a.css')
                ->appendStylesheet('/css/b.css')
                ->appendStylesheet('/css/c.css');
     ?>
     <?php echo $this->headLink(); ?>
</head>

在我看来,我添加了特定的stylehseets:

<!-- view.phtml --> 
<?php
        $this->headLink()
                ->appendStylesheet('/css/d.css')
                ->appendStylesheet('/css/e.css');
?>

我希望按此顺序看到它们:

  • a.css
  • b.css
  • c.css
  • d.css
  • e.css

但我把它们视为这个(全局视图之前的视图css文件):

  • d.css
  • e.css
  • a.css
  • b.css
  • c.css

我做错了什么?

2 个答案:

答案 0 :(得分:1)

CSS的顺序非常重要;

由于级联的顺序,您可能需要确保按特定顺序加载声明;使用各种 append, prepend, offsetSet 指令来帮助完成此任务:

// Putting styles in order

// place at a particular offset:
$this->headStyle()->offsetSetStyle(100, $customStyles);

// place at end:
$this->headStyle()->appendStyle($finalStyles);

// place at beginning
$this->headStyle()->prependStyle($firstStyles);
When you're finally ready to output all style declarations in your layout script, simply echo the helper:

<?php echo $this->headStyle() ?>

有关样式附加的更多信息,您可以抛出此

offcial zend Docuemtnation所以你可能有更好的想法。

希望这一定会帮到你

答案 1 :(得分:0)

视图在布局之前呈现,这就是为什么你首先得到d和e。一种选择是将布局调用更改为prepend:

$this->headLink()
     ->prependStylesheet('/css/c.css')
     ->prependStylesheet('/css/b.css')
     ->prependStylesheet('/css/a.css');