Pagina inicial » Codificação » Como personalizar e temas jQuery UI Datepicker

    Como personalizar e temas jQuery UI Datepicker

    O jQuery UI é simplesmente incrível e, devido à facilidade de uso, é popular e amplamente usado em quase todos os sites que precisam de recursos interativos..

    E, neste post, vamos ver um dos recursos fornecidos, o widget DatePicker.

    Vamos tentar aprender como personalizar o tema do calendário, para que você possa criar seu próprio tema que corresponda ao seu design geral. No entanto, você precisa de um pouco de compreensão em JavaScript e familiaridade com o CSS antes de seguir este tutorial.

    • Demonstração
    • Fonte de download

    Se você estiver pronto, vamos começar.

    Os ativos

    Vamos preparar alguns dos ativos essenciais para o calendário.

    Primeiro, o design do calendário se referirá a esse arquivo PSD da Premium Pixels. Então é melhor baixarmos primeiro para nos ajudar a tirar uma amostra das cores que precisamos. Então, baixe dois padrões de Sutil Padrões que usaremos como plano de fundo do nosso calendário. Neste exemplo, decidimos usar os seguintes padrões: denim preto e couro escuro.

    Também precisaremos de uma ferramenta de desenvolvimento web como o Firebug para inspecionar classes / ids de elemento gerados pela interface do usuário do jQuery.

    Bem, acho que já tivemos preparação suficiente. Agora vamos ao primeiro passo.

    Etapa 1: jQuery UI Datepicker

    Primeiro, vá para a página de download da jQuery UI. Nesta página você será presenteado com algumas opções, como segue; o núcleo da interface do usuário, widgets, interações e efeitos.

    Deveríamos desmarque todos os componentes, como não precisamos de todos eles.

    Então, no Widgets seção selecione apenas o datepicker. A interface do usuário do jQuery selecionará as dependências essenciais automaticamente e, em seguida, baixar o arquivo.

    Vincular todos os arquivos baixados - exceto o CSS - para o seu documento em branco HTML, da seguinte forma:

     

    Etapa 2: Personalizando o DatePicker

    Nesta etapa, vamos configurar um datepicker com as seguintes opções.

    O código acima instruirá o jQuery a exibir o calendário em um elemento com datepicker identidade. Então, precisamos colocar o seguinte div tag with - datepicker ID - na seção do corpo para formar o calendário:

    Agora o calendário já deveria ter sido gerado e aparecer assim, simples sem qualquer estilo, mas ainda tem a funcionalidade.

    Etapa 3: os estilos

    Agora vamos começar a estilizar o calendário. Começaremos normalizando todos os elementos - como sempre - e criando uma nova folha de estilo, neste exemplo eu a nomeio datepicker.css. Em seguida, vincule todos eles ao documento HTML.

     

    Então, vamos primeiro anexar um fundo ao corpo para que o nosso HTML não pareça muito claro.

    body background: url ('… /img/darkdenim3.png') repita 0 0 # 555; 

    Em seguida, vamos especificar a largura do separador de data, posicioná-lo no centro e adicionar sombra projetada para dar o efeito proeminente ao calendário.

    .ui-datepicker width: 216px; altura: auto; margin: 5px auto 0; fonte: 9pt Arial, sans-serif; -webkit-box-shadow: 0px 0px 10px 0px rgba (0, 0, 0, 0,5); -moz-box-shadow: 0px 0px 10px 0px rgba (0, 0, 0, 0,5); box-shadow: 0px 0px 10px 0px rgba (0, 0, 0, 0,5); 

    Também removeremos a decoração de sublinhado padrão de todas as tags de âncora.

    .ui-datepicker a text-decoration: nenhum; 

    O calendário na jQuery UI é formado com um mesa. Então, vamos adicionar 100% largura para o mesa, por isso, terá a mesma largura máxima que o invólucro acima; isso é 216 px

    .tabela ui-datepicker width: 100%; 

    Estilizando a seção de cabeçalho

    O datepicker tem uma seção de cabeçalho contendo Mês ano do calendário. Esta seção terá a textura de couro escura que baixamos anteriormente com cor de fonte ligeiramente branca e 1px sombra branca no topo.

    .ui-datepicker-header background: url ('… /img/dark_leather.png') repita 0 0 # 000; cor: # e0e0e0; intensidade da fonte: Negrito; -webkit-box-shadow: inserção 0px 1px 1px 0px rgba (250, 250, 250, 2); -moz-box-shadow: inserção 0px 1px 1px 0px rgba (250, 250, 250, 0,2); box-shadow: inserção 0px 1px 1px 0px rgba (250, 250, 250, 0,2); text-shadow: 1px -1px 0px # 000; filter: dropshadow (cor = # 000, offx = 1, offy = -1); altura da linha: 30px; largura da borda: 1px 0 0 0; estilo de borda: sólido; border-color: # 111; 

    Em seguida, vamos centralizar o Mês posição.

     .ui-datepicker-title text-align: center; 

    Substitua o Próximo e Anterior texto com as imagens de flecha de sprite cortadas do PSD.

    .ui-datepicker-prev, .ui-datepicker-next exibição: inline-block; largura: 30px; altura: 30px; texto-alinhar: centro; cursor: ponteiro; background-image: url ('… /img/arrow.png'); repetição de fundo: sem repetição; altura da linha: 600%; estouro: oculto; 

    Em seguida, ajuste a posição da seta respectivamente.

    .ui-datepicker-prev float: left; posição de fundo: centro -30px;  .ui-datepicker-next float: right; posição de fundo: centro 0px; 

    Enquanto o nomes do dia seção é embrulhado dentro de um cabeça, com base em nossa referência de design, ele terá um gradiente ligeiramente branco. E, para simplificar nossa tarefa, usaremos essa ferramenta para gerar o código de gradiente:

    .ui-datepicker thead background-color: # f7f7f7; background-image: -moz-linear-gradient (superior, # f7f7f7 0%, # f1f1f1 100%); background-image: -webkit-gradient (linear, superior esquerdo, inferior esquerdo, cor-stop (0%, # f7f7f7), cor-stop (100%, # f1f1f1)); background-image: -webkit-linear-gradient (superior, # f7f7f7 0%, # f1f1f1 100%); background-image: -o-linear-gradiente (superior, # f7f7f7 0%, # f1f1f1 100%); background-image: -ms-linear-gradiente (superior, # f7f7f7 0%, # f1f1f1 100%); background-image: gradiente linear (top, # f7f7f7 0%, # f1f1f1 100%); filter: progid: DXImageTransform.Microsoft.gradient (startColorstr = "# f7f7f7", endColorstr = "# f1f1f1", GradientType = 0); border-bottom: 1px sólido #bbb; 

    o nomes do dia texto terá a cor cinza escuro de # 666666 e eles também terão um branco fino text-shadow para dar o efeito pressionado.

    .ui-datepicker th text-transform: maiúscula; tamanho da fonte: 6pt; preenchimento: 5px 0; cor: # 666666; text-shadow: 1px 0px 0px #fff; filter: dropshadow (cor = # fff, offx = 1, offy = 0); 

    Neste ponto, o calendário aparecerá assim:

    Estilizando as datas

    As datas do calendário são agrupadas td ou dados da tabela. Então, vamos definir o preenchimento para 0 para remover os espaços entre o td e dê uma borda direita de 1px.

    .ui-datepicker tbody td preenchimento: 0; borda direita: 1px sólido #bbb; 

    Exceto pela última td, que não terá borda direita. Nós definimos a borda direita para 0 para este.

    .ui-datepicker tbody td: último filho border-right: 0px; 

    A linha da tabela será quase a mesma. Ele terá um fundo de borda de 1px, exceto a última linha.

    .ui-datepicker tbody tr borda inferior: 1px sólida #bbb;  .ui-datepicker tbody tr: último filho border-bottom: 0px; 

    Estilizando o padrão, o foco e o estado ativo

    Nesta etapa, definiremos o hover da data e os estilos ativos. Primeiro, definiremos o estado padrão da data especificando a dimensão; centre a posição do texto da data, adicione a cor do gradiente e a sombra branca interna.

    .ui-datepicker td span, .ui-datepicker td a exibição: inline-block; intensidade da fonte: Negrito; texto-alinhar: centro; largura: 30px; altura: 30px; altura da linha: 30px; cor: # 666666; text-shadow: 1px 1px 0px #fff; filter: dropshadow (cor = # fff, offx = 1, offy = 1);  .ui-datepicker-calendar .ui-state-default background: #ededed; background: -moz-linear-gradient (superior, #ededed 0%, #dedede 100%); background: -webkit-gradiente (linear, superior esquerdo, inferior esquerdo, cor-stop (0%, # ededed), cor-stop (100%, # dedede)); background: -webkit-linear-gradient (top, #ededed 0%, # dedede 100%); background: -o-linear-gradiente (top, #ededed 0%, # dedede 100%); background: -ms-linear-gradient (superior, #ededed 0%, # dedede 100%); background: gradiente linear (top, #ededed 0%, # dedede 100%); filter: progid: DXImageTransform.Microsoft.gradient (startColorstr = "# ededed", endColorstr = "# dedede", GradientType = 0); -webkit-box-shadow: inserção 1px 1px 0px 0px rgba (250, 250, 250, 0,5); -moz-box-shadow: inserção 1px 1px 0px 0px rgba (250, 250, 250, 0,5); box-shadow: inserção 1px 1px 0px 0px rgba (250, 250, 250, .5);  .ui-datepicker-unelectable .ui-state-default segundo plano: # f4f4f4; cor: # b4b3b3; 

    Quando você passa o mouse sobre a data, ela fica ligeiramente branca.

     .ui-datepicker-calendar .ui-state-hover segundo plano: # f7f7f7; 

    Quando a data está em um estado ativo, ela terá os seguintes estilos.

     .ui-datepicker-calendar .ui-state-active segundo plano: # 6eafbf; -webkit-box-shadow: inserção 0px 0px 10px 0px rgba (0, 0, 0, .1); -moz-box-shadow: inserção 0px 0px 10px 0px rgba (0, 0, 0, .1); box-shadow: inserção 0px 0px 10px 0px rgba (0, 0, 0, 1); cor: # e0e0e0; text-shadow: 0px 1px 0px # 4d7a85; filter: dropshadow (cor = # 4d7a85, offx = 0, offy = 1); borda: 1px sólido # 55838f; posição: relativa; margem: -1px; 

    Agora, o calendário deve ficar muito melhor.

    Corrigindo a posição

    Neste ponto, olhe a data cuidadosamente. Ao clicar na data na primeira ou na última coluna, você notará que o estado ativo está transbordando um pixel da borda do calendário.

    Então, aqui, faremos algumas pequenas correções.

    Primeiro vamos diminuir a largura da data para 29px, e defina a margem direita da última coluna e margem esquerda da primeira coluna para 0 para inverter o -1px margem que definimos anteriormente para o estado ativo.

    .ui-datepicker-calendar td: primeiro filho .ui-state-active largura: 29px; margem esquerda: 0;  .ui-datepicker-calendar td: último filho .ui-state-active largura: 29px; margem-direita: 0;  

    A data na última linha do calendário também terá um tratamento semelhante.

    .ui-datepicker-calendar tr: último filho .ui-state-active altura: 29px; margem-fundo: 0; 

    Agora vamos ver o resultado. Bem, o calendário agora está lindo e se encaixa perfeitamente como nossa referência de design. E você pode ver a demonstração e baixar a fonte para examinar o código dos links abaixo da imagem.

    • Demonstração
    • Fonte de download

    Bônus: estenda o calendário

    Bem, hoje aprendemos bastante sobre como criar um tema personalizado para o jQuery UI Datepicker. Mas você não deve parar por aqui, pois ainda há muitas coisas que podem ser estendidas a partir deste datepicker. Dependendo da sua proficiência em jQuery e CSS, você estende o calendário para que seja assim: entrada de texto com um datepicker de sobreposição.

    • Demonstração
    • Fonte de download

    Leitura Adicional

    Para mais informações sobre a interface do usuário do jQuery. Você pode ler a documentação completa aqui:

    • Introdução ao jQuery UI
    • Theming jQuery UI
    • IU do jQuery: classes de API do Theming

    Pensamentos finais

    Obrigado por ler e seguir este tutorial, espero que seja útil. E, se você tiver algum comentário ou quiser adicionar coisas que possam estar faltando neste tutorial, fique à vontade para indicá-lo na seção de comentários abaixo. Obrigado novamente).