# Assistente HeadStyle

O elemento HTML <style> é usado para incluir folhas de estilo CSS de forma inline no elemento HTML <head>.

## Use o HeadLink para "linkar" arquivos CSS

O HeadLink deve ser usado para criar elementos <link> para a inclusão de folhas de estilo externas. `HeadStyle` é usado quando você deseja definir folhas de estilo inline.

O assistente `HeadStyle` dá suporte aos seguintes métodos para a configuração e adição de declarações de folhas de estilo:

- `appendStyle($content, $attributes = array())`

- `offsetSetStyle($index, $content, $attributes = array())`

- `prependStyle($content, $attributes = array())`

- `setStyle($content, $attributes = array())`

Em todos os casos, `$content` é a verdadeira declaração CSS. `$attributes` são quaisquer atributos adicionais que você dejesa prover para a tag style: lang, title, media, ou dir são todos admissíveis.

## Configurando Comentários Condicionais

`HeadStyle` permite que você envolva a tag style em comentários condicionais, que permitem que você as esconda de navegadores específicos. Para adicionar as tags condicionais, passe o valor condicional como parte do parâmetro `$attributes` nas chamadas do método.

## Headstyle com Comentários Condicionais

    // adicionando scripts
    $this->headStyle()->appendStyle($styles, array('conditional' => 'lt IE 7'));

`HeadStyle` também permite a captura de declarações de estilo; isso pode ser útil se você quiser criar as declarações através de programação, e então colocá-las em outro lugar. A utilização disso será mostrada em um exemplo abaixo.

Finalmente, você pode usar o método `headStyle()` para acrescentar rapidamente elementos de declaração; a assinatura para isso é `headStyle($content$placement = 'APPEND', $attributes = array())`. `$placement` deve ser 'APPEND', 'PREPEND', ou 'SET'.

`HeadStyle` sobrescreve `append()`, `offsetSet()`, `prepend()`, e `set()` para forçar o uso dos métodos especiais listados acima. Internamente ele armazena cada item como um token stdClass, que depois é serializado usando o método `itemToString()`. Isso permite que você faça verificações nos itens da pilha, e opcionalmente modifique estes itens simplesmente modificando o objeto retornado.

O assistente `HeadStyle` é uma implementação concreta do assistente Placeholder.

## Codificação UTF-8 usada por padrão

Por padrão, o Zend Framework usa UTF-8 como sua codificação padrão, e, especificamente neste caso, o `Zend_View` faz isto muito bem. A codificação de caracteres pode ser definida de forma diferente no objeto de visualização em si usando o método `setEncoding()` (ou a instanciação do parâmetro `encoding`). No entanto, como `Zend_View_Interface` não define acessadores para codificação, é possível que se você estiver usando uma implementação de visualização personalizada com este assistente de visualização, você não terá um método `getEncoding()`, que é o que o assistente de visualização usa internamente para determinar o conjunto de caracteres na qual irá codificar.

Se você não quiser utilizar UTF-8 nessa situação, será necessário implementar um método `getEncoding()` em sua implementação de visualização personalizada.

## Uso Básico do Assistente HeadStyle

Você pode especificar uma nova tag de estilo a qualquer momento:

    // adding styles
    $this->headStyle()->appendStyle($styles);

A ordenação é muito importante no CSS; você talvez tenha que assegurar que as declarações sejam carregadas em uma ordem específica devido à ordem da cascata; use as diretivas append, prepend, e offsetSet para lhe auxiliar nessa tarefa:

    // 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);

Quando você estiver finalmente pronto para liberar todas as declarações de estilo em seu script layout, simplesmente imprima o assistente:

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

## Capturando Declarações de Estilo Usando o Assistente HeadStyle

Às vezes você precisa gerar declarações de estilo CSS de forma programática. Embora você possa usar concatenação de strings, heredocs, e assim por diante, muitas vezes é mais fácil apenas para fazer isso criando estilos e distribuindo-os em tags PHP. `HeadStyle` permite que você faça exatamente isso, capturando-os para a pilha:

    <?php $this->headStyle()->captureStart() ?>
    body {
        background-color: <?php echo $this->bgColor ?>;
    }
    <?php $this->headStyle()->captureEnd() ?>

As seguintes suposições são feitas:

- As declarações de estilo serão anexados à pilha. Se você deseja que elas substituam a pilha ou que sejam adicionadas ao topo, você vai precisar passar 'SET' ou 'PREPEND', respectivamente, como o primeiro argumento para `captureStart()`.

- Se você deseja especificar todos os atributos adicionais para a tag <style>, passe-os em uma matriz como o segundo argumento para `captureStart()`.