Definindo o estilo de AppBars e ToolBars (HTML)
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente ]
Fornece exemplos de como definir o estilo de uma AppBar ou ToolBar e seus controles.
Pré-requisitos
- Guia de início rápido: adicionando uma AppBar com comandos
- Guia de início rápido: Definindo o estilo de controles
Introdução
O Guia de início rápido: Definindo o estilo de controles explica como as folhas de estilos da Biblioteca do Windows para JavaScript fornecem um conjunto de estilos que deixa seu aplicativo com a aparência do Windows 10 automaticamente. Os exemplos a seguir demonstram o uso de CSS (folhas de estilos em cascata) para personalizar alguns estilos de AppBar.
Temas claro e escuro
Quando você escolhe a folha de estilos clara ou escura para seu aplicativo, isso afeta a aparência da AppBar e dos demais controles do aplicativo. Neste exemplo de AppBar:
<div id="createAppBar" data-win-control="WinJS.UI.AppBar" data-win-options="{placement:'bottom'}">
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdAdd',disabled:'true',label:'Add',icon:'add',tooltip:'Add item',section:'primary',type:'flyout',
flyout:select('#addFlyout'),onclick:Sample.outputCommand}"></button>
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdRemove',label:'Remove',icon:'remove',tooltip:'Remove item',section:'primary',
onclick:Sample.outputCommand}"></button>
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdEdit',label:'Edit',icon:'edit',tooltip:'Edit item',section:'primary',onclick:Sample.outputCommand}">
</button>
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdCamera',label:'Camera',icon:'camera',tooltip:'Take a picture',section:'primary',
onclick:Sample.outputCommand}"></button>
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdSettings',label:'Settings',icon:'settings',tooltip:'Settings',section:'primary',
onclick:Sample.outputCommand}"></button>
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdShare',label:'Share',icon:'reshare',tooltip:'Share',section:'primary',onclick:Sample.outputCommand}">
</button>
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdPrint',label:'Print',section:'secondary',onclick:Sample.outputCommand}"></button>
<button data-win-control="WinJS.UI.AppBarCommand"
data-win-options="{id:'cmdNetwork',label:'Network',section:'secondary',onclick:Sample.outputCommand}"></button>
</div>
Para escolher a folha de estilos escura:
<link href="//Microsoft.WinJS.2.0/css/ui-dark.css" rel="stylesheet">
Que cria uma AppBar com esta aparência:
Ou para escolher a folha de estilos clara:
<link href="//Microsoft.WinJS.2.0/css/ui-light.css" rel="stylesheet">
Que cria uma AppBar com esta aparência:
A ToolBar terá uma aparência semelhante usando as mesmas folhas de estilo.
Propriedades CSS úteis
As seguintes propriedades CSS costumam ser utilizadas com os controles da AppBar e da ToolBar:
Cor da borda: Controla a cor da borda da AppBar.
Por exemplo, cor da borda: rgb(255, 224, 100);
Cor da tela de fundo: Controla a cor da tela de fundo da AppBar.
Por exemplo, cor da tela de fundo: rgb(255, 224, 100);
Observação Esses valores são normalmente predefinidos por ui-light.css ou ui-dark.css.
Seletores de partes e estados comuns
Veja alguns seletores CSS úteis para a definição do estilo de partes e estados do seu controle:
.win-command define o estilo do rótulo do comando da AppBar:
.win-appbar .win-command { color: rgb(28, 160, 218); }
Observação O usuário deve tocar ou clicar nas reticências para abrir a AppBar e ver esse efeito. Rótulos de comandos estão ocultos por padrão.
.win-commandimage define o estilo da imagem do ícone do botão:
.win-appbar .win-commandimage { color: rgb(28, 160, 218); }
Pseudoclasses
Você pode usar as seguintes Pseudoclasses como seletores para definir o estilo dos botões da AppBar, quando estão em determinados estados:
:hover — O usuário coloca o cursor sobre o ícone do botão e não o ativa clicando, alterando a cor de plano de fundo do botão até que o cursor saia dele. Uma dica de ferramenta para o botão também é exibida por padrão durante a focalização.
:active — O botão é ativado entre o momento em que o usuário pressiona o controle e escolhe uma opção ou se o botão for configurado para
type="toggle"
.:disabled — A mudança de cor do ícone indica que o botão não pode aceitar a interação do usuário. A propriedade desabilitada do botão deve ser definida como "disabled" para essa pseudoclasse ser aplicada.
Definindo o estilo de uma AppBar com cores personalizadas
Veja mais um exemplo de definição de estilo de uma AppBar:
.win-appbar .win-appbar-actionarea
{
background-color: yellow;
}
.win-appbar .win-commandimage
{
color: red;
}
cria as seguintes cores de AppBar:
A definição do estilo da cor do plano de fundo da área de excedentes teria esta aparência:
.win-appbar .win-appbar-overflowarea
{
background-color: green;
}
E a definição do estilo de uma ToolBar da mesma maneira teria esta aparência:
.win-toolbar win-toolbar-overflowarea{
background-color: green;
}
.win-toolbar .win-commandimage
{
color: red;
}
.win-toolbar win-toolbar-overflowarea
{
background-color: green;
}
Estilos que devem ser evitados
É possível usar CSS para mudar a aparência de AppBars e de ToolBars. Isso serve especialmente para o funcionamento adequado de animações da AppBar e da ToolBar. Veja as áreas de risco conhecidas:
padding
— Não altere os padrões.border
— Não altere os padrões.margin
— Defina o estilo das margens uniformemente, mas somente nos elementos da ToolBar e da AppBar:.win-toolbar, .win-appbar { margin: 3px; }
background-color
— A definição do estilo pode ser feita com segurança em áreas de ação e em áreas excedentes:.win-toolbar-actionarea, .win-appbar-actionarea { background-color: rgb(0,0,127); } .win-toolbar-overflowarea, .win-appbar-overflowarea { background-color: rgb(0,0,255);
position
,float
— Não defina o estilo desses atributos CSS no elemento da ToolBar diretamente, mas você pode encapsular a ToolBar em um elemento pai que defina essas regras de estilo. Observação Essa restrição não se aplica à AppBar.
Problemas conhecidos
Ocultando a ToolBar — o componente da ToolBar só deve ficar oculto usando-se APIs públicas. Embora seja prática comum usar uma classe CSS "umbrella" para ocultar vários componentes do modo de exibição, isso não é uma prática recomendável para a ToolBar (ou a AppBar). O problema é que a ToolBar teve o desempenho otimizado para armazenar em cache o estado dos seus comandos, em vez de depender do DOM para informar se um comando está visível ou não. Isso permite que a ToolBar seja adaptável e estoure comandos quando eles não couberem na área ativa disponível, ao mesmo tempo evitando layouts de navegador dispendiosos que ocorrem quando você lê do DOM. Usar CSS para definir o estilo de botões como ocultos significa que a ToolBar não reconhecerá que algum comando foi oculto e iniciará o estouro de comandos muito cedo, já que o espaço disponível na área ativa da ToolBar diminui durante o redimensionamento de janela.
Em vez disso, você só deve definir a propriedade
Command.hidden
ou chamar o métodoToolBar.showOnlyCommands()
para mostrar e ocultar comandos na ToolBar.Falha de estouro adaptável — o comportamento de estouro adaptável da ToolBar não funciona bem quando o elemento ToolBar é criado para "acomodar o conteúdo".
Por exemplo, o componente da ToolBar foi projetado para existir dentro de outros componentes (normalmente aninhado dentro de outro elemento div). Normalmente, dentro de seu próprio div, a ToolBar ocupará 100% da largura do elemento pai. Mas, se o layout CSS usado pelo elemento pai o tiver aninhado dentro de algumas caixas flexíveis e a classe personalizada transportcontrols do pai estiver usando
align-items:center;
a fim de espremer a ToolBar para ser apenas da largura de seus comandos, haverá um comportamento inesperado. Isso ocorre porque a ToolBar armazena em cache sua width e tenta estourar os comandos quando acha que ele não há espaço suficiente para eles. A ToolBar requer uma largura de elemento constante, mas os estilos usados neste cenário estão dando uma largura flexível.A solução alternativa para esse cenário (mesmo em combinação com a solução de Ocultando a ToolBar) envolve alterar a classe personalizada pai transportcontrols para usar
align-items:stretch;
. Testes mostraram que isso é uma solução simples, mas se você não puder fazer a mudança paraalign-items
por algum motivo, poderá obter o resultado final colocandoalign-self:stretch
no elemento da ToolBar diretamente.
Resumo e próximas etapas
Neste artigo, mostramos alguns exemplos de definição de estilo de uma AppBar e de uma ToolBar e seus controles. Também fornecemos informações sobre algumas questões de design para que você possa evitar problemas usando AppBars e ToolBars em seu aplicativo.
Saiba mais — de modo prático — sobre como definir estilos de AppBars e ToolBars no site Experimente o WinJS. Experimente o código e veja imediatamente os resultados.