Framework7 - Guia rápido

Framework7 é um framework de código aberto e gratuito para HTML móvel. Ele é usado para desenvolver aplicativos móveis híbridos ou aplicativos da web para dispositivos iOS e Android.

Framework7 foi introduzido no ano de 2014. A versão mais recente 1.4.2 foi lançada em fevereiro de 2016 licenciada sob o MIT.

Por que usar o Framework7?

  • É mais fácil desenvolver aplicativos para iOS e Android.
  • A curva de aprendizado do Framework7 é muito fácil.
  • Tem muitos widgets / componentes pré-estilizados.
  • Possui bibliotecas auxiliares integradas.

Características

  • Framework7 é um framework de código aberto e de uso gratuito.

  • Framework7 tem uma sintaxe jQuery fácil e familiar para começar sem qualquer demora.

  • Para controlar o atraso do clique em interfaces de usuário de toque, o Framework7 possui uma biblioteca FastClick integrada .

  • Framework7 tem layout de sistema de grade embutido para organizar seus elementos de forma responsiva.

  • O Framework7 carrega páginas de modelos dinamicamente por meio de API de roteador flexível .

Vantagens

  • Framework7 não depende de nenhuma biblioteca de terceiros, mesmo para manipulação de DOM. Em vez disso, ele tem seu próprio DOM7 personalizado.

  • O Framework7 também pode ser usado com os frameworks Angular e React .

  • Você pode começar a criar aplicativos depois de conhecer HTML, CSS e um pouco de JavaScript básico.

  • Ele suporta um desenvolvimento mais rápido através do Bower .

  • É fácil desenvolver aplicativos para iOS e Android sem precisar aprender.

Desvantagens

  • Framework7 suporta apenas plataformas como iOS e Android.

  • O suporte da comunidade online para o framework Framework7 é menor em comparação com iOS e Andriod.

Neste capítulo, discutiremos como instalar e configurar o Framework7.

Você pode baixar o Framework7 de duas maneiras -

Baixe do repositório Framework7 Github

Você pode instalar o Framework7, usando o Bower conforme mostrado abaixo -

bower install framework7

Após a instalação bem-sucedida do Framework7, você precisa seguir as etapas fornecidas a seguir para usar o Framework7 em sua aplicação -

Step 1 - Você precisa instalar gulp-cli para construir versões de desenvolvimento e dist do Framework7 usando o seguinte comando.

npm install gulp-cli

O cli significa Command Line Utility for Gulp.

Step 2 - O Gulp deve ser instalado globalmente usando o seguinte comando.

npm install --global gulp

Step 3- Em seguida, instale o gerenciador de pacotes NodeJS, que instala os programas de nó que torna mais fácil especificar e vincular dependências. O seguinte comando é usado para instalar o npm.

npm install

Step 4 - A versão de desenvolvimento do Framework7 pode ser construída usando o seguinte comando.

npm build

Step 5- Depois de criar a versão de desenvolvimento do Framework7, comece a construir o aplicativo a partir de dist / pasta usando o seguinte comando.

npm dist

Step 6 - Mantenha a pasta do seu aplicativo no servidor e execute o seguinte comando para navegar entre as páginas do seu aplicativo.

gulp server

Baixe a biblioteca Framework7 de CDNs

Um CDN ou Content Delivery Network é uma rede de servidores projetada para servir arquivos aos usuários. Se você usar um link CDN em sua página da web, ele transfere a responsabilidade de hospedar arquivos de seus próprios servidores para uma série de servidores externos. Isso também oferece a vantagem de que, se um visitante de sua página da Web já tiver baixado uma cópia do Framework7 do mesmo CDN, não será necessário baixá-la novamente. Você pode incluir os seguintes arquivos CDN no documento HTML.

Os seguintes CDNs são usados ​​em um iOS App layout -

<link rel = "stylesheet" 
   href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />

Ele é usado para incluir a biblioteca CSS do Framework7 iOS em seu aplicativo.

<link rel = "stylesheet" 
   href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />

Ele é usado para incluir estilos de cores relacionados ao Framework7 iOS em seu aplicativo.

Os seguintes CDNs são usados ​​em Android/Material App Layout -

<script src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>

É usado para incluir a biblioteca Framework7 JS em seu aplicativo.

<script src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.material.min.css"></script>

É usado para incluir o estilo do material Framework7 em seu aplicativo.

Estamos usando as versões CDN da biblioteca em todo este tutorial. Usamos AMPPS (AMPPS é uma pilha WAMP, MAMP e LAMP do servidor Apache, MySQL, MongoDB, PHP, Perl e Python) para executar todos os nossos exemplos.

Exemplo

O exemplo a seguir demonstra o uso de aplicativo simples no Framework7, que exibirá a caixa de alerta com a mensagem personalizada ao clicar na barra de navegação.

<!DOCTYPE html>
<html>
   
   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>My App</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>
   
   <body>
      //you can control the background color of the Status bar
      <div class = "statusbar-overlay"></div>
      <div class = "panel-overlay"></div>
      
      <div class = "panel panel-right panel-reveal">
         <div class = "content-block">
            <p>Contents goes here...</p>
         </div>
      </div>
      
      <div class = "views">
         <div class = "view view-main">
            <div class = "navbar">
               <div class = "navbar-inner">
                  <div class = "center sliding">My App</div>
                  <div class = "right">
                     <a href = "#" class = "link icon-only open-panel">
                        <i class = "icon icon-bars"></i>
                     </a>
                  </div>
               </div>
            </div>
            
            <div class = "pages navbar-through toolbar-through">
               <div data-page = "index" class = "page">
                  <div class = "page-content">
                     <p>This is simple application...</p>
                     <div class = "list-block">
                        <ul>
                           <li>
                              <a href = "envirmnt_about.html" class = "">
                                 <div class = "item-content">
                                    <div class = "item-inner">
                                       <div class = "item-title">Blog</div>
                                    </div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </div>
                  </div>
               </div>
            </div>
            
            <div class = "toolbar">
               <div class = "toolbar-inner">
                  <a href = "#" class = "link">First Link</a>
                  <a href = "#" class = "link">Second Link</a>
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      
      <script>
         // here initialize the app
         var myApp = new Framework7();

         // If your using custom DOM library, then save it to $$ variable
         var $$ = Dom7;

         // Add the view
         var mainView = myApp.addView('.view-main', {
            
            // enable the dynamic navbar for this view:
            dynamicNavbar: true
         });

         //use the 'pageInit' event handler for all pages
         $$(document).on('pageInit', function (e) {
         
            //get page data from event data
            var page = e.detail.page;

            if (page.name === 'blog') {
            
               // you will get below message in alert box when page with data-page attribute is equal to "about"
               myApp.alert('Here its your About page');
            }
         })
      </script>
   </body>

</html>

Em seguida, crie mais uma página HTML, ou seja envirmnt_about.html como mostrado abaixo -

envirmnt_about.html

<div class = "navbar">
   <div class = "navbar-inner">
      <div class = "left">
         <a href = "#" class = "back link">
            <i class = "icon icon-back"></i>
            <span>Back</span>
         </a>
      </div>
      
      <div class = "center sliding">My Blog</div>
      <div class = "right">
         <a href = "#" class = "link icon-only open-panel">
            <i class = "icon icon-bars"></i>
         </a>
      </div>
   </div>
</div>

<div class = "pages">
   <div data-page = "blog" class = "page">
      <div class = "page-content">
         <div class = "content-block">
            <h2>My Blog</h2>
            <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.</p>
         </div>
      </div>
   </div>
</div>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML acima como framework7_environment.html arquivo na pasta raiz do servidor.

  • Abra esse arquivo HTML como http: //localhost/framework7_environment.html e a saída será exibida conforme mostrado abaixo.

  • Ao clicar na barra de navegação, será exibida a caixa de alerta com a mensagem personalizada.

Descrição

Framework7 fornece diferentes tipos de layouts para seu aplicativo. Ele suporta três tipos de layouts de Navbar / Toolbar -

S.No Tipos de layout e descrição
1 Layout estático

O layout estático é o tipo de layout usado com mais frequência e inclui barra de navegação e barra de ferramentas, que pode ser um conteúdo de página rolável e cada página contém sua própria barra de navegação e barra de ferramentas.

2 Layout Fixo

O layout fixo inclui sua própria barra de navegação e barra de ferramentas, que pode ser visível na tela e não pode ser rolada na página.

3 Por Layout

Nesse layout, a barra de navegação e a barra de ferramentas aparecem fixas para todas as páginas em uma única visualização.

4 Layout Misto

Você pode misturar os diferentes tipos de layouts em uma única visualização.

Sem Navbar / Toolbar

Se você não quiser usar a barra de navegação e a barra de ferramentas, não inclua as classes apropriadas ( navbar-fixada , navbar-direta , barra de ferramentas fixa , barra de ferramentas-direta ) para página / páginas / visualização.

Descrição

Neste capítulo, vamos estudar sobre navbar . Geralmente é colocado no topo de uma tela contendo o título da página e os elementos de navegação.

Navbar consiste em três partes, cada uma das quais pode conter qualquer conteúdo HTML, mas sugere-se que você use-as da maneira indicada abaixo -

  • Left- Ele é projetado para colocar ícones de link de volta ou link de texto único.

  • Center - É usado para exibir o título da página ou links da guia.

  • Right- Esta parte é semelhante à parte esquerda .

A tabela a seguir demonstra o uso da barra de navegação em detalhes -

S.No Tipos e descrição da barra de navegação
1 Navbar básico

Uma navbar básica pode ser criada usando as classes navbar , navbar-inner , left , center e right .

2 Navbar com links

Para usar links nas partes esquerda e direita de sua barra de navegação, basta adicionar a tag <a> com o link da classe .

3 Links múltiplos

Para usar vários links, basta adicionar mais <a class = "link"> à parte de sua escolha.

4 Links com texto e ícones

Os links podem ser fornecidos com ícones e textos adicionando classes para ícones e envolvendo o texto do link com o elemento <span> .

5 Links apenas com ícones

Os links da barra de navegação podem ser fornecidos apenas com ícones, adicionando uma classe apenas de ícone aos links.

6 Métodos de visualização e aplicativos relacionados

Ao inicializar a View , framework7 permite que você use métodos disponíveis para navbar.

7 Ocultar barra de navegação automaticamente

O navbar pode ser oculto / mostrado automaticamente para algumas páginas carregadas com Ajax onde o navbar não é necessário.

Descrição

A barra de ferramentas fornece acesso fácil a outras páginas usando elementos de navegação na parte inferior da tela.

Você pode usar a barra de ferramentas de duas maneiras, conforme especificado na tabela -

S.No Tipos e descrição da barra de ferramentas
1 Ocultar barra de ferramentas

Você pode ocultar a barra de ferramentas automaticamente ao carregar as páginas usando o no-toolbar classe para a página carregada.

2 Barra de Ferramentas Inferior

Coloque a barra de ferramentas na parte inferior da página usando o toolbar-bottom classe.

Métodos de barra de ferramentas

Os seguintes métodos disponíveis podem ser usados ​​com as barras de ferramentas -

S.No Métodos e descrição da barra de ferramentas
1

myApp.hideToolbar(toolbar)

Ele oculta a barra de ferramentas especificada.

2

myApp.showToolbar(toolbar)

Mostra a barra de ferramentas especificada.

3

view.hideToolbar()

Ele oculta a barra de ferramentas especificada na visualização.

4

view.showToolbar()

Mostra a barra de ferramentas especificada na visualização.

Exemplo

O exemplo a seguir demonstra o uso do layout da barra de ferramentas no Framework7.

Primeiro, vamos criar uma página HTML chamada toolbar.html como mostrado abaixo -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Toolbar Layout</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
         
            <div class = "navbar">
               <div class = "navbar-inner">
                  <div class = "center sliding">Toolbar Layout</div>
               </div>
            </div>
            
            <div class = "pages navbar-through">
               <div data-page = "index" class = "page with-subnavbar">
                  <div class = "page-content">
                     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                     Suspendisse at nibh felis. Nunc consequat diam et tellus tempor gravida. 
                     Donec hendrerit aliquet risus, ut tempor purus dictum sit amet. Aenean 
                     sagittis interdum leo in molestie. Aliquam sodales in diam eu consectetur. 
                     Sed posuere a orci id imperdiet.</p>
                     
                     <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                     Suspendisse at nibh felis. Nunc consequat diam et tellus tempor gravida. 
                     Donec hendrerit aliquet risus, ut tempor purus dictum sit amet. Aenean 
                     sagittis interdum leo in molestie. Aliquam sodales in diam eu consectetur. 
                     Sed posuere a orci id imperdiet.</p>
                  </div>
               </div>
            </div>
            
            <div class = "toolbar">
               <div class = "toolbar-inner">
                  <a href = "#" class = "link">Link 1</a>
                  <a href = "#" class = "link">Link 2</a>
                  <a href = "#" class = "link">Link 3</a>
               </div>
            </div>
            
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script>
         // here initialize the app
         var myApp = new Framework7();

         // If your using custom DOM library, then save it to $$ variable
         var $$ = Dom7;

         // Add the view
         var mainView = myApp.addView('.view-main', {
         
            // enable the dynamic navbar for this view
            dynamicNavbar: true
         });
      </script>
   </body>

</html>

Agora, inicialize seu aplicativo e exiba no arquivo JS personalizado toolbar.js.

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como toolbar.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/toolbar.html e a saída é exibida conforme mostrado abaixo.

Descrição

O Framework 7 permite pesquisar os elementos usando a classe searchbar .

Parâmetros da barra de pesquisa

S.No Parâmetros e descrição Tipo Padrão
1

searchList

Ele pesquisa o seletor CSS ou elemento HTML da lista.

string ou elemento HTML -
2

searchIn

Você pode pesquisar os elementos de exibição de lista dos seletores CSS, também pesquisa os elementos passando as classes .item-title , .item-text .

corda '.título do item'
3

found

Ele pesquisa o seletor CSS ou elemento HTML usando o elemento "encontrado". Além disso, ele usa o elemento .searchbar-found se não houver nenhum elemento especificado.

string ou elemento HTML -
4

notfound

Ele pesquisa o seletor CSS ou elemento HTML usando o elemento "não encontrado". Além disso, ele usa o elemento .searchbar-not-found se não houver nenhum elemento especificado.

string ou elemento HTML -
5

overlay

Ele pesquisa o seletor CSS ou elemento HTML usando o elemento "searchbar overlay" e usa o elemento .searchbar-overlay , se nenhum elemento for especificado.

string ou elemento HTML -
6

ignore

Você pode ignorar o seletor CSS para itens usando a barra de pesquisa.

corda '.searchbar-ignore'
7

customSearch

Quando ativada, a barra de pesquisa não pesquisará nenhum dos blocos de lista especificados por searchList e você terá permissão para usar a funcionalidade de pesquisa personalizada.

boleano falso
8

removeDiacritics

Ao pesquisar um elemento, remova os sinais diacríticos habilitando este parâmetro.

boleano falso
9

hideDividers

Este parâmetro irá ocultar os divisores de itens e o título do grupo, se não houver itens.

boleano verdadeiro
10

hideGroups

Este parâmetro irá ocultar os grupos, se não houver itens encontrados nos grupos de visualização de lista.

boleano verdadeiro

Chamadas da barra de pesquisa

S.No Chamadas de retorno e descrição Tipo Padrão
1

onSearch

Este método irá disparar a função de retorno de chamada ao fazer a pesquisa.

funções) -
2

onEnable

Este método irá disparar a função de retorno de chamada quando a Barra de Pesquisa se tornar ativa.

funções) -
3

onDisable

Este método irá disparar a função de retorno de chamada quando a barra de pesquisa se tornar inativa.

funções) -
4

onClear

Este método irá disparar a função de retorno de chamada quando você clicar no elemento "limpar".

funções) -

Propriedades da barra de pesquisa

S.No Propriedades e descrição
1

mySearchbar.params

Representa os parâmetros inicializados passados ​​com o objeto.

2

mySearchbar.query

Pesquisa a consulta atual.

3

mySearchbar.searchList

Define o bloco da lista de pesquisa.

4

mySearchbar.container

Define o contêiner da barra de pesquisa com elemento HTML.

5

mySearchbar.input

Define a entrada da barra de pesquisa com elemento HTML.

6

mySearchbar.active

Ele define se a barra de pesquisa está habilitada ou desabilitada.

Métodos de barra de pesquisa

S.No Métodos e Descrição
1

mySearchbar.search(query);

Este método pesquisa a consulta passada.

2

mySearchbar.enable();

Habilita a barra de pesquisa.

3

mySearchbar.disable();

Ele desativa a barra de pesquisa.

4

mySearchbar.clear();

Você pode limpar a consulta e os resultados da pesquisa.

5

mySearchbar.destroy();

Ele destrói a instância da barra de pesquisa.

Eventos de JavaScript da barra de pesquisa

S.No Descrição do Evento Alvo
1

search

Você pode disparar este evento enquanto procura elementos.

<div class = "list-block">
2

clearSearch

Este evento será disparado quando o usuário clicar no elemento clearSearch.

<div class = "list-block">
3

enableSearch

Quando a barra de pesquisa for ativada, este evento será disparado.

<div class = "list-block">
4

disableSearch

Quando a barra de pesquisa é desabilitada e o usuário clica no botão cancelar ou no elemento "sobreposição da barra de pesquisa", este evento é disparado.

<div class = "list-block">

Exemplo

O exemplo a seguir demonstra o uso da barra de pesquisa na rolagem no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Search Bar Layout</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages navbar-fixed">
               <div data-page = "home" class = "page">
               
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "center sliding">Search Bar Layout</div>
                     </div>
                  </div>
                  
                  <form data-search-list = ".list-block-search" data-search-in = ".item-title" 
                     class = "searchbar searchbar-init">
                     <div class = "searchbar-input">
                        <input type = "search" placeholder = "Search"><a href = "#" 
                           class = "searchbar-clear"></a>
                     </div>
                     <a href = "#" class = "searchbar-cancel">Cancel</a>
                  </form>
                  
                  <div class = "searchbar-overlay"></div>
                  
                  <div class = "page-content">
                     <div class = "content-block searchbar-not-found">
                        <div class = "content-block-inner">No element found...</div>
                     </div>
                     
                     <div class = "list-block list-block-search searchbar-found">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">India</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Argentina</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Belgium</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Brazil</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Canada</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Colombia</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Denmark</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Ecuador</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">France</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Germany</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Greece</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Haiti</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Hong Kong</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Iceland</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Ireland</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Jamaica</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Japan</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Kenya</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Kuwait</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Libya</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Liberia</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Malaysia</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Mauritius</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Mexico</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Namibia</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">New Zealand</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Oman</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Paraguay</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Philippines</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Russia</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Singapore</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">South Africa</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Thailand</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">United Kingdom</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Vatican City</div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Zimbabwe</div>
                              </div>
                           </li>
                        </ul>
                     </div>
                     
                  </div>
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      
      <script>
         var myApp = new Framework7();
         var mainView = myApp.addView('.view-main');
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima search_bar.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/search_bar.html e a saída é exibida conforme mostrado abaixo.

  • Se o elemento contido na lista for inserido na barra de pesquisa, ele exibe esse elemento específico da lista.

  • Se o elemento diferente dos elementos contidos na lista for inserido, ele não exibe nenhum elemento encontrado.

Descrição

O iOS 7+ permite que você crie aplicativos de tela inteira que podem criar um problema quando a barra de status se sobrepõe ao aplicativo. Framework7 resolve esse problema detectando se seu aplicativo está no modo de tela inteira ou não. Se seu aplicativo estiver no modo de tela inteira, o Framework7 adicionará automaticamente a classe with-statusbar-overlay a <html> (ou removerá se o aplicativo não estiver no modo de tela inteira) e você precisará adicionar a classe statusbar-overlay em <body> conforme mostrado no código a seguir -

<html class = "with-statusbar-overlay">
...
   <body>
      <div class = "statusbar-overlay"></div>
      ...

Por padrão, <div> sempre estará oculto e fixo na parte superior da tela. Ele só estará visível quando o aplicativo estiver no modo de tela inteira e a classe with-statusbar-overlay for adicionada a <html> .

Exemplo

O exemplo a seguir demonstra o uso da barra de status no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>My App</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "statusbar-overlay"></div>
      <div class = "panel-overlay"></div>
      
      <div class = "panel panel-right panel-reveal">
         <div class = "content-block">
            <p>Contents goes here...</p>
         </div>
      </div>
      
      <div class = "views">
         <div class = "view view-main">
            <div class = "navbar">
               <div class = "navbar-inner">
                  <div class = "center sliding">My App</div>
                  
                  <div class = "right">
                     <a href = "#" class = "link icon-only open-panel"><i class = "icon icon-bars"></i></a>
                  </div>
                  
               </div>
            </div>
            
            <div class = "pages navbar-through toolbar-through">
               <div data-page = "index" class = "page">
                  <div class = "page-content">
                     <p>This is simple application...</p>
                     <p>page contents goes here!!!</p>
                  </div>
               </div>
            </div>
            
            <div class = "toolbar">
               <div class = "toolbar-inner">
                  <a href = "#" class = "link">First Link</a>
                  <a href = "#" class = "link">Second Link</a>
               </div>
            </div>
            
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      
      <script>
         // here initialize the app
         var myApp = new Framework7();

         // If your using custom DOM library, then save it to $$ variable
         var $$ = Dom7;

         // Add the view
         var mainView = myApp.addView('.view-main', {
            // enable the dynamic navbar for this view:
            dynamicNavbar: true
         });

         //use the 'pageInit' event handler for all pages
         $$(document).on('pageInit', function (e) {
            //get page data from event data
            var page = e.detail.page;
         })
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código html fornecido acima como status_bar.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/status_bar.html e a saída é exibida conforme mostrado abaixo.

O exemplo mostra o uso do statusbar-overlay, que permite criar aplicativos em tela cheia quando sua barra de status se sobrepõe ao aplicativo.

Descrição

O painel lateral se move para o lado esquerdo ou direito da tela para exibir o conteúdo. Framework7 permite que você inclua até 2 painéis (painel do lado direito e painel do lado esquerdo) em seu aplicativo. Você precisa adicionar painéis no início de <body> e, em seguida, escolher o efeito de abertura aplicando as seguintes classes listadas -

  • panel-reveal - Isso fará com que todo o conteúdo do aplicativo seja removido.

  • panel-cover - Isso fará com que o painel se sobreponha ao conteúdo do aplicativo.

Por exemplo, o código a seguir mostra como usar as classes acima -

<body>
   <!-- First add Panel's overlay which will overlays app while panel is opened -->
   <div class = "panel-overlay"></div>
 
   <!-- Left panel -->
   <div class = "panel panel-left panel-cover">
      panel's content
   </div>
 
   <!-- Right panel -->
   <div class = "panel panel-right panel-reveal">
      panel's content
   </div>
 
</body>

A tabela a seguir mostra os tipos de painel suportados pelo Framework77 -

S.No Tipo e descrição
1 Abrir e fechar painéis

Depois de adicionar painel e efeitos, precisamos adicionar funcionalidade para abrir e fechar os painéis.

2 Eventos do Painel

Para detectar como um usuário interage com o painel, você pode usar eventos de painel.

3 Painéis abertos com deslize

Framework7 fornece a você o recurso para abrir o painel com um gesto de furto .

4 O painel está aberto?

Podemos determinar se o painel está aberto ou não usando o with-panel[position]-[effect] regra.

Descrição

Os blocos de conteúdo podem ser usados ​​para adicionar conteúdo extra com formato diferente.

Exemplo

O exemplo a seguir demonstra o uso do bloco de conteúdo no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Content Block</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               <div data-page = "home" class = "page navbar-fixed">
                  
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "left"> </div>
                        <div class = "center">Content Block</div>
                        <div class = "right"> </div>
                     </div>
                  </div>
                  
                  <div class = "page-content">
                     <p>This is out side of content block!!!</p>
                     
                     <div class = "content-block">
                        <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium 
                        doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis 
                        et quasi architecto beatae vitae dicta sunt explicabo.</p>
                     </div>
                     
                     <div class = "content-block">
                        <div class = "content-block-inner">This is another text block wrapped with "content-block-inner"</div>
                     </div>
                     
                     <div class = "content-block-title">Content Block Title</div>
                     
                     <div class = "content-block">
                        <p>Praesent nec imperdiet diam. Maecenas vel lectus porttitor, consectetur 
                        magna nec, viverra sem. Aliquam sed risus dolor. Morbi tincidunt ut libero id sodales. 
                        Integer blandit varius nisi quis consectetur.</p>
                     </div>
                     
                     <div class = "content-block-title">This is another long content block title</div>
                     
                     <div class = "content-block">
                        <div class = "content-block-inner">
                           <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem 
                           accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo 
                           inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p>
                        </div>
                     </div>
                     
                     <div class = "content-block-title">Content Block Inset</div>
                     
                     <div class = "content-block inset">
                        <div class = "content-block-inner">
                           <p>Donec et nulla auctor massa pharetra adipiscing ut sit amet sem. 
                           Suspendisse molestie velit vitae mattis tincidunt. Ut sit amet quam mollis, 
                           vulputate turpis vel, sagittis felis. </p>
                        </div>
                     </div>
                     
                     <div class = "content-block-title">Content Block Tablet Inset</div>
                     
                     <div class = "content-block tablet-inset">
                        <div class = "content-block-inner">
                           <p>Donec et nulla auctor massa pharetra adipiscing ut sit amet sem.
                           Suspendisse molestie velit vitae mattis tincidunt. Ut sit amet quam mollis, 
                           vulputate turpis vel, sagittis felis. </p>
                        </div>
                     </div>
                     
                  </div>
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script>
         var myApp = new Framework7();
         var mainView = myApp.addView('.view-main');
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como content_block.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/content_block.html e a saída é exibida conforme mostrado abaixo.

  • O código adiciona formatação extra e espaçamento necessário para o conteúdo do texto.

Descrição

Framework7 fornece diferentes tipos de tipos de grade para colocar o conteúdo de acordo com a necessidade do usuário.

A grade de layout fornece diferentes tipos de tamanho de colunas, conforme descrito na tabela a seguir -

S.No Classe Classe de mesa Largura
1 col-5 tablet-5 5%
2 col-10 tablet-10 10%
3 col-15 tablet-15 15%
4 col-20 tablet-20 20%
5 col-25 tablet-25 25%
6 col-30 tablet-30 30%
7 col-33 tablet-33 33,3%
8 col-35 tablet-35 35%
9 col-40 tablet-40 40%
10 col-45 tablet-45 45%
11 col-50 tablet-50 50%
12 col-55 tablet-55 55%
13 col-60 tablet-60 60%
14 col-65 tablet-65 65%
15 col-66 tablet-66 66,6%
16 col-70 tablet-70 70%
17 col-75 tablet-75 75%
18 col-80 tablet-80 80%
19 col-85 tablet-85 85%
20 col-90 tablet-90 90%
21 col-95 tablet-95 95%
21 col-100 tablet-100 100%
22 col-auto tablet-auto Largura igual

Exemplo

O exemplo a seguir fornece o layout de grade para colocar seu conteúdo conforme necessário no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Layout Grid</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
         
      <style>
         div[class* = "col-"] {
            background: #fff;
            text-align: center;
            color: #000;
            border: 1px solid #D8D8D8;
         }
         .row {
            margin-bottom: 10px;
         }
      </style>
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
         
            <div class = "navbar">
               <div class = "navbar-inner">
                  <div class = "center sliding">Layout Grid</div>
               </div>
            </div>
            
            <div class = "pages">
               <div data-page = "index" class = "page navbar-fixed">
                  <div class = "page-content">
                     <div class = "content-block-title">Columns with gutter</div>
                     
                     <div class = "content-block">
                        <div class = "row">
                           <div class = "col-50">col 1</div>
                           <div class = "col-50">col 2</div>
                        </div>
                        
                        <div class = "row">
                           <div class = "col-25">col 1</div>
                           <div class = "col-25">col 2</div>
                           <div class = "col-25">col 3</div>
                           <div class = "col-25">col 4</div>
                        </div>
                        
                        <div class = "row">
                           <div class = "col-33">col 1</div>
                           <div class = "col-33">col 2</div>
                           <div class = "col-33">col 3</div>
                        </div>
                        
                        <div class = "content-block-title">Columns without gutter</div>
                        
                        <div class = "content-block">
                           <div class = "row no-gutter">
                              <div class = "col-50">col 1</div>
                              <div class = "col-50">col 2</div>
                           </div>
                           
                           <div class = "row no-gutter">
                              <div class = "col-25">col 1</div>
                              <div class = "col-25">col 2</div>
                              <div class = "col-25">col 3</div>
                              <div class = "col-25">col 4</div>
                           </div>
                           
                           <div class = "row no-gutter">
                              <div class = "col-33">col 1</div>
                              <div class = "col-33">col 2</div>
                              <div class = "col-33">col 3</div>
                           </div>
                        </div>
                     
                        <div class = "content-block-title">Nested Columns</div>
                        <div class = "content-block">
                           <div class = "row">
                              
                              <div class = "col-50">
                                 col 1
                                 <div class = "row">
                                    <div class = "col-40">col 2</div>
                                    <div class = "col-60">col 3</div>
                                 </div>
                              </div>
                                 
                              <div class = "col-50">
                                 col 1
                                 <div class = "row">
                                    <div class = "col-75">col 2</div>
                                    <div class = "col-25">col 3</div>
                                 </div>
                              </div>
                                 
                           </div>
                        </div>
                           
                        <div class = "content-block-title">Columns With Different Equal Width</div>
                           
                        <div class = "content-block">
                           <div class = "row">
                              <div class = "col-100 tablet-50">col 1</div>
                              <div class = "col-100 tablet-50">col 2</div>
                           </div>
                              
                           <div class = "row">
                              <div class = "col-50 tablet-25">col 1</div>
                              <div class = "col-50 tablet-25">col 2</div>
                              <div class = "col-50 tablet-25">col 3</div>
                              <div class = "col-50 tablet-25">col 4</div>
                           </div>
                              
                           <div class = "row">
                              <div class = "col-100 tablet-40">col 1</div>
                              <div class = "col-50 tablet-60">col 2</div>
                              <div class = "col-50 tablet-60">col 3</div>
                              <div class = "col-100 tablet-40">col 4</div>
                           </div>
                        </div>
                           
                        <div class = "content-block-title">Columns With Equal Width</div>
                           
                        <div class = "content-block">
                           <div class = "row">
                              <div class = "col-auto">col-1</div>
                              <div class = "col-auto">col-2</div>
                              <div class = "col-auto">col-3</div>
                              <div class = "col-auto">col-4</div>
                           </div>
                              
                           <div class = "row no-gutter">
                              <div class = "col-auto">col-1</div>
                              <div class = "col-auto">col-2</div>
                              <div class = "col-auto">col-3</div>
                              <div class = "col-auto">col-4</div>
                           </div>
                        </div>
                           
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      
      <script>
         var myApp = new Framework7();
         var mainView = myApp.addView('.view-main');
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como layout_grid.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/layout_grid.html a saída é exibida conforme mostrado abaixo.

  • Este código fornece diferentes tipos de tipos de grade para colocar o conteúdo de acordo com a necessidade do usuário.

Descrição

Framework7 fornece diferentes tipos de sobreposições para trabalhar com os aplicativos sem problemas. A tabela a seguir lista algumas das sobreposições do Framework7 -

S.No Tipo de sobreposição e descrição
1 Modal

Modal é uma pequena janela que exibe o conteúdo de fontes separadas sem sair da janela principal.

2 Aparecer

Popup é uma caixa popup que exibe o conteúdo quando o usuário clica no elemento.

3 Dar um pulo

Para gerenciar a apresentação de conteúdo temporário, o componente popover pode ser usado.

4 Folha de Ação

A Folha de Ações é usada para apresentar ao usuário um conjunto de possibilidades de como lidar com uma determinada tarefa.

5 Tela de login

A tela de login de sobreposição é usada para exibir o formato da tela de login, que pode ser usada na página ou pop-up ou como uma sobreposição independente.

6 Seletor Modal

O seletor modal é usado para escolher algum conteúdo personalizado que é semelhante ao seletor de calendário.

Descrição

O Preloader no Framework7 é feito com Scalable Vector Graphic (SVG) e animado com CSS, o que o torna facilmente redimensionável. O pré-carregador está disponível em duas cores -

  • o padrão é fundo claro
  • outro é fundo escuro

Você pode usar a classe preloader em seu HTML, conforme mostrado abaixo -

Exemplo

O exemplo a seguir demonstra o uso do pré-carregador no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Panel Events</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               <div data-page = "home" class = "page navbar-fixed">
               
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "left"> </div>
                        <div class = "center">Framework7 Preloader</div>
                        <div class = "right"> </div>
                     </div>
                  </div>
                  
                  <div class = "page-content">
                     <div class = "content-block row">
                        <div class = "col-25"><span class = "preloader"></span><br>Default Preloader</div>
                        <div class = "col-25 col-dark"><span class = "preloader preloader-white"></span><br>White Preloader</div>
                        <div class = "col-25"><span style = "width:42px; height:42px" class = "preloader"></span><br>Big Preloader</div>
                        <div class = "col-25 col-dark"><span style = "width:42px; height:42px" class = "preloader preloader-white"></span><br>White Preloader</div>
                     </div>
                  </div>
                  
               </div>
            </div>
         </div>
      </div>
      
      <style>.col-25{padding:5px;text-align:center;}.col-dark{background:#222;}</style>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script>
         var myApp = new Framework7();
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como preloader.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/preloader.html e a saída é exibida conforme mostrado abaixo.

  • Este código exibe o indicador de pré-carregador, que é feito em SVG e animado com CSS.

Descrição

As barras de progresso podem ser usadas para mostrar o carregamento de ativos ou o progresso de uma tarefa aos usuários. Você pode especificar a barra de progresso usando a classe progressbar . Quando o usuário não sabe por quanto tempo o processo de carregamento levará para a solicitação, você pode usar a classe progressbar-infinite .

API JavaScript da barra de progresso

A barra de progresso pode ser usada junto com a API JavaScript para especificar as propriedades de exibição , ocultação e progresso usando os seguintes métodos -

S.No Métodos Descrição e parâmetros
1 myApp.setProgressbar (container , progress, speed)

Ele define a barra de progresso para o progresso de uma tarefa.

  • container - É uma string ou elemento HTML que define o contêiner do elemento da barra de progresso.

  • progress - Representa em formato inteiro e define o andamento de uma tarefa.

  • speed - Representa em formato inteiro e especifica a duração do andamento de uma tarefa.

2 myApp.hideProgressbar (contain er)

Ele oculta a barra de progresso.

  • container - É uma string ou elemento HTML que define o contêiner do elemento da barra de progresso.

3 myApp.showProgressbar (contai ner, progress, color)

Ele exibe a barra de progresso.

  • container - É uma string ou elemento HTML que define o contêiner do elemento da barra de progresso.

  • progress - Representa em formato inteiro e define o andamento de uma tarefa.

  • speed - Representa em formato inteiro e especifica a duração do andamento de uma tarefa.

Exemplo

O exemplo a seguir exibe barras animadas de progresso determinado e indeterminado para indicar a atividade no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Progress Bar</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.material.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.material.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               <div data-page = "home" class = "page navbar-fixed">
               
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "center">Progress Bar</div>
                     </div>
                  </div>
                  
                  <div class = "page-content">
                     <div class = "content-block-title">Determinate Progress Bar</div>
                     <div class = "content-block">
                        <div class = "content-block-inner">
                           <p>Inline determinate progress bar:</p>
                           
                           <div class = "progressbar-inline">
                              <p><span data-progress = "10" class = "progressbar"></span></p>
                              
                              <p class = "buttons-row">
                                 <a href = "#" data-progress = "25" class = "button button-raised">25%</a>
                                 <a href = "#" data-progress = "50" class = "button button-raised">50%</a>
                                 <a href = "#" data-progress = "75" class = "button button-raised">75%</a>
                                 <a href = "#" data-progress = "100" class = "button button-raised">100%</a>
                              </p>
                           </div>
                           
                           <p>Loads and hides the determinate progress bar:</p>
                           <div class = "progressbar-load-hide">
                              <p><a href = "#" class = "button button-raised">Start Loading</a></p>
                           </div>
                           
                           <p>Displays the determinate progress bar on top:</p>
                           <p class = "progressbar-overlay"><a href = "#" class = "button button-raised">Start Loading</a></p>
                        </div>
                     </div>
                     
                     <div class = "content-block-title">Infinite Progress Bar</div>
                     <div class = "content-block">
                        <div class = "content-block-inner">
                           <p>Inline infinite progress bar:</p>
                           
                           <p><span class = "progressbar-infinite"></span></p>
                           
                           <p>Displays the infinite progress bar in multiple colors:</p>
                           
                           <p><span class = "progressbar-infinite color-multi"></span></p>
                           
                           <p>Displays the infinite progress bar on top:</p>
                           
                           <p class = "progressbar-infinite-overlay"><a href = "#" class = "button button-raised">Start Loading</a></p>
                           
                           <p>Displays the infinite progress bar in multiple colors on top:</p>
                           
                           <p class = "progressbar-infinite-multi-overlay"><a href = "#" class = "button button-raised">Start Loading</a></p>
                        </div>
                     </div>
                     
                     <div class = "content-block-title">Different types of colored progress bars:</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "5" class = "progressbar color-red"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "10" class = "progressbar color-pink"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "20" class = "progressbar color-deeppurple"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "30" class = "progressbar color-blue"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "40" class = "progressbar color-cyan"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "50" class = "progressbar color-green"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "60" class = "progressbar color-lime"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "70" class = "progressbar color-amber"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "80" class = "progressbar color-deeporange"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "90" class = "progressbar color-gray"></div>
                              </div>
                           </li>
                           
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div data-progress = "100" class = "progressbar color-black"></div>
                              </div>
                           </li>
                        </ul>
                     </div>
                     
                  </div>
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script>
         var myApp = new Framework7({
            material: true
         });
         
         var $$ = Dom7;

         $$('.progressbar-inline .button').on('click', function () {
            var progress = $$(this).attr('data-progress');
            var progressbar = $$('.progressbar-inline .progressbar');
            myApp.setProgressbar(progressbar, progress);
         });
         
         $$('.progressbar-load-hide .button').on('click', function () {
            var container = $$('.progressbar-load-hide p:first-child');
            
            //it doesn't load if another progresbar is loading
            if (container.children('.progressbar').length) return;

            myApp.showProgressbar(container, 0);

            var progress = 0;
            function simulateLoading() {
               setTimeout(function () {
                  var progressBefore = progress;
                  progress += Math.random() * 20;
                  myApp.setProgressbar(container, progress);
                  if (progressBefore < 100) {
                     simulateLoading();
                  }
                  else myApp.hideProgressbar(container);
               }, Math.random() * 200 + 200);
            }
            simulateLoading();
         });
         
         $$('.progressbar-overlay .button').on('click', function () {
            var container = $$('body');
            if (container.children('.progressbar, .progressbar-infinite').length) return;
            myApp.showProgressbar(container, 0, 'orange');
            var progress = 0;
            
            function simulateLoading() {
               setTimeout(function () {
                  var progressBefore = progress;
                  progress += Math.random() * 20;
                  myApp.setProgressbar(container, progress);
                  if (progressBefore < 100) {
                     simulateLoading();
                  }
                  //hides the progressbar
                  else myApp.hideProgressbar(container);
               }, Math.random() * 200 + 200);
            }
            simulateLoading();
         });
         
         $$('.progressbar-infinite-overlay .button').on('click', function () {
            var container = $$('body');
            if (container.children('.progressbar, .progressbar-infinite').length) return;
            myApp.showProgressbar(container, 'yellow');
            setTimeout(function () {
               myApp.hideProgressbar();
            }, 3000);
         });
         
         $$('.progressbar-infinite-multi-overlay .button').on('click', function () {
            var container = $$('body');
            if (container.children('.progressbar, .progressbar-infinite').length) return;
               myApp.showProgressbar(container, 'multi');
               setTimeout(function () {
               myApp.hideProgressbar();
            }, 3000);
         });
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como progress_bar.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/progress_bar.html e a saída é exibida conforme mostrado abaixo.

  • O exemplo exibe a barra de progresso, que indica quanto tempo uma operação levará para concluir o processo e exibe os diferentes tipos de barras de progresso para indicar atividade.

Descrição

As visualizações de lista são poderosos componentes de IU que apresentam dados em uma lista rolável de várias linhas. O Framework7 fornece diferentes tipos de visualização em lista para trabalhar com seu aplicativo. A tabela a seguir lista algumas das listas do Framework7 -

S.No Tipos e descrição
1 Exibição de lista

As visualizações de lista são componentes de interface do usuário poderosos, que apresentam dados em uma lista rolável contendo várias linhas.

2 Lista de Contatos

A lista de contatos é um tipo de visualização de lista, que pode ser usada para exibir a lista de contatos de pessoas.

3 Visualização de lista de mídia

A exibição de lista de mídia é usada para exibir estruturas de dados complicadas, como produtos, serviços, informações de usuários.

4 Swipeout

O deslizamento permite que você revele as ações ocultas do menu deslizando sobre os elementos da lista.

5 Lista Classificável

A lista classificável é um tipo de exibição de lista, que classifica os elementos da exibição de lista.

6 Lista Virtual

Lista virtual um tipo de exibição de lista, que inclui listas de um grande número de elementos de dados sem diminuir seu desempenho.

Descrição

O acordeão é um elemento de controle gráfico exibido como uma lista empilhada de itens. Cada acordeão pode ser expandido ou esticado para revelar o conteúdo associado a esse acordeão.

Layout dobrável

Ao usar um único elemento recolhível separado, você precisa omitir o elemento de invólucro de lista de acordeão .

A seguir está uma estrutura de layout recolhível -

<!-- Single collapsible element ------>
<div class = "accordion-item">
   <div class = "accordion-item-toggle"></div>
   <div class = "accordion-item-content"></div>
</div>

<!-- Separate collapsible element -->
<div class = "accordion-item">
   <div class = "accordion-item-toggle"></div>
   <div class = "accordion-item-content"></div>
</div>

As seguintes classes são usadas para acordeão no Framework7 -

S.No Classes e descrição
1

accordion-list

É uma classe opcional, que contém um grupo de lista de itens de acordeão.

2

accordion-item

É uma aula obrigatória para item acordeão único.

3

accordion-item-toggle

É uma classe obrigatória usada para expandir o conteúdo do item de acordeão.

4

accordion-item-content

É uma classe obrigatória usada para conteúdo de item de acordeão oculto.

5

accordion-item-expanded

É um único item de acordeão expandido.

Accordion JavaScript API

Os métodos da API JavaScript são usados ​​para abrir e fechar o acordeão programaticamente.

Ele contém os seguintes métodos de API JavaScript -

  • myApp.accordionOpen(item) - Usado para abrir o acordeão.

  • myApp.accordionClose(item) - Usado para fechar o acordeão.

  • myApp.accordionToggle(item) - Usado para alternar acordeão.

Todos os métodos contêm um parâmetro denominado item que é HTML ou elemento string do item acordeão.

Eventos de Acordeão

O acordeão contém quatro eventos, conforme listado na tabela a seguir -

S.No Evento Alvo e descrição
1 abrir

Accordion item

Ao abrir uma animação, este evento será disparado.

2 aberto

Accordion item

Quando a abertura de uma animação for concluída, este evento será disparado.

3 Fechar

Accordion item

Quando você fecha uma animação, este evento é disparado.

4 fechadas

Accordion item

Quando o fechamento de uma animação for concluído, este evento será disparado.

Vista de lista de acordeão

Na exibição de lista de acordeão, você pode usar o elemento de link de item em vez de alternar acordeão .

<div class = "list-block accordion-list">
   <ul>
      <li class = "accordion-item">
         <a href = "" class = "item-link item-content">
            <div class = "item-inner">
               <div class = "item-title">1st Item</div>
            </div>
         </a>
         <div class = "accordion-item-content">Content for 1st Item...</div>
      </li>
      
      <li class = "accordion-item">
         <a href = "" class = "item-link item-content">
            <div class = "item-inner">
               <div class = "item-title">2nd Item</div>
            </div>
         </a>
         <div class = "accordion-item-content">Content for 2nd Item...</div>
      </li>
   </ul>
</div>

Exemplo

O exemplo a seguir demonstra o uso de acordeão na Estrutura 7 -

<!DOCTYPE html>
<html>
   <head>
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
      <meta name="apple-mobile-web-app-capable" content="yes">
      <meta name="apple-mobile-web-app-status-bar-style" content="black">
      <title>Accordion</title>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css">
   </head>
   <body>
      <div class="views">
         <div class="view view-main">
            <div class="pages">
               <div data-page="home" class="page navbar-fixed">
                  <div class="navbar">
                     <div class="navbar-inner">
                        <div class="left"> </div>
                        <div class="center">Accordion</div>
                        <div class="right"> </div>
                     </div>
                  </div>
                  <div class="page-content">
                     <div class="content-block-title">List of Programming Lagauges</div>
                     <div class="list-block accordion-list">
                        <ul>
                           <li class="accordion-item">
                              <a href="#" class="item-content item-link">
                                 <div class="item-inner">
                                    <div class="item-title">C</div>
                                 </div>
                              </a>
                              <div class="accordion-item-content">
                                 <div class="content-block">
                                    <p>C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis M. Ritchie at the Bell Telephone Laboratories to develop the UNIX operating system. C is the most widely used computer language. It keeps fluctuating at number one scale of popularity along with Java programming language, which is also equally popular and most widely used among modern software programmers.</p>
                                 </div>
                              </div>
                           </li>
                           <li class="accordion-item">
                              <a href="#" class="item-content item-link">
                                 <div class="item-inner">
                                    <div class="item-title">C++</div>
                                 </div>
                              </a>
                              <div class="accordion-item-content">
                                 <div class="content-block">
                                    <p>C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
                                       This reference will take you through simple and practical approach while learning C++ Programming language.
                                    </p>
                                 </div>
                              </div>
                           </li>
                           <li class="accordion-item">
                              <a href="#" class="item-content item-link">
                                 <div class="item-inner">
                                    <div class="item-title">Java</div>
                                 </div>
                              </a>
                              <div class="accordion-item-content">
                                 <div class="content-block">
                                    <p>Java is a high-level programming language originally developed by Sun Microsystems and released in 1995. Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX. This tutorial gives a complete understanding of Java.
                                       This reference will take you through simple and practical approach while learning Java Programming language.
                                    </p>
                                 </div>
                              </div>
                           </li>
                        </ul>
                     </div>
                     <div class="content-block-title">Separate Collapsibles</div>
                     <div class="list-block">
                        <ul>
                           <li class="accordion-item">
                              <a href="#" class="item-content item-link">
                                 <div class="item-inner">
                                    <div class="item-title">C</div>
                                 </div>
                              </a>
                              <div class="accordion-item-content">
                                 <div class="content-block">
                                    <p >C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis M. Ritchie at the Bell Telephone Laboratories to develop the UNIX operating system. C is the most widely used computer language. It keeps fluctuating at number one scale of popularity along with Java programming language, which is also equally popular and most widely used among modern software programmers.</p>
                                 </div>
                              </div>
                           </li>
                           <li class="accordion-item">
                              <a href="#" class="item-content item-link">
                                 <div class="item-inner">
                                    <div class="item-title">C++</div>
                                 </div>
                              </a>
                              <div class="accordion-item-content">
                                 <div class="content-block">
                                    <p>C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
                                       This reference will take you through simple and practical approach while learning C++ Programming language.
                                    </p>
                                 </div>
                              </div>
                           </li>
                           <li class="accordion-item">
                              <a href="#" class="item-content item-link">
                                 <div class="item-inner">
                                    <div class="item-title">Java</div>
                                 </div>
                              </a>
                              <div class="accordion-item-content">
                                 <div class="content-block">
                                    <p>Java is a high-level programming language originally developed by Sun Microsystems and released in 1995. Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX. This tutorial gives a complete understanding of Java.
                                       This reference will take you through simple and practical approach while learning Java Programming language.
                                    </p>
                                 </div>
                              </div>
                           </li>
                        </ul>
                     </div>
                     <div class="content-block-title">Custom Accordion</div>
                     <div class="content-block accordion-list custom-accordion">
                        <div class="accordion-item">
                           <div class="accordion-item-toggle"><i class="icon icon-plus">+</i><i class="icon icon-minus">-</i><span>C</span></div>
                           <div class="accordion-item-content">
                              <p>C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis M. Ritchie at the Bell Telephone Laboratories to develop the UNIX operating system. C is the most widely used computer language. It keeps fluctuating at number one scale of popularity along with Java programming language, which is also equally popular and most widely used among modern software programmers.</p>
                           </div>
                        </div>
                        <div class="accordion-item">
                           <div class="accordion-item-toggle"><i class="icon icon-plus">+</i><i class="icon icon-minus">-</i><span>C++</span></div>
                           <div class="accordion-item-content">
                              <p>C++ is a middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs. C++ runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
                                 This reference will take you through simple and practical approach while learning C++ Programming language.
                              </p>
                           </div>
                        </div>
                        <div class="accordion-item">
                           <div class="accordion-item-toggle"><i class="icon icon-plus">+</i><i class="icon icon-minus">-</i><span>Java</span></div>
                           <div class="accordion-item-content">
                              <p>Java is a high-level programming language originally developed by Sun Microsystems and released in 1995. Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX. This tutorial gives a complete understanding of Java.
                                 This reference will take you through simple and practical approach while learning Java Programming language.
                              </p>
                           </div>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
      <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      <style>.custom-accordion{padding-left:0;padding-right:0;}.custom-accordion .accordion-item-toggle{padding:0px 15px;height:44px;line-height:44px;font-size:17px;color:#000;border-bottom:1px solid rgba(0,0,0,0.15);cursor:pointer;}.custom-accordion .accordion-item-toggle:active{background:rgba(0,0,0,0.15);}.custom-accordion .accordion-item-toggle span{display:inline-block;margin-left:15px;}.custom-accordion .accordion-item:last-child .accordion-item-toggle{border-bottom:none;}.custom-accordion .icon-plus,.custom-accordion .icon-minus{display:inline-block;width:22px;height:22px;border:1px solid #000;border-radius:100%;line-height:20px;text-align:center;}.custom-accordion .icon-minus{display:none;}.custom-accordion .accordion-item-expanded .icon-minus{display:inline-block;}.custom-accordion .accordion-item-expanded .icon-plus{display:none;}.custom-accordion .accordion-item-content{padding:0px 15px;}</style>
      <script>
         // here initialize the app
         var myApp = new Framework7();

         // If your using custom DOM library, then save it to $$ variable
         var $$ = Dom7;

         // Add the view
         var mainView = myApp.addView('.view-main', {
         // enable the dynamic navbar for this view:
         dynamicNavbar: true
         });
      </script>
   </body>
</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como accordion.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/accordion.html e a saída é exibida conforme mostrado abaixo.

  • O exemplo fornece layout recolhível, que pode ser expandido para exibir o conteúdo associado ao acordeão.

Descrição

Os cartões contêm informações organizadas relacionadas a um único assunto, como uma foto, um link e um texto. A tabela a seguir mostra os tipos de cartão Framework7 -

S.No Tipos e descrição
1 Layout HTML do cartão

O layout HTML básico do cartão usa classes de cartão para organizar seus itens.

2 Vista de lista com cartões

Você pode usar cartões como elementos de exibição de lista, adicionando a classe cards-list a <div class = "list-block"> .

Descrição

Chip é um pequeno bloco de entidade, que pode conter uma foto, uma pequena sequência de título e informações curtas.

Layout de HTML de chips

O código a seguir mostra o layout HTML do chip básico usado no Framework7 -

<div class = "chip">
   <div class = "chip-media">
      <img src = "http://lorempixel.com/100/100/people/9/">
   </div>
   
   <div class = "chip-label">Jane Doe</div>
   <a href = "#" class = "chip-delete"></a>
</div>

O layout HTML acima contém muitas classes, conforme listado abaixo -

  • chips - É o contêiner de chips.

  • chip-media- Este é o elemento de mídia do chip que pode conter imagens, avatar ou ícone. É opcional.

  • card-label - É a etiqueta de texto do chip.

  • card-delete - É o link de ícone de exclusão opcional de um chip.

Exemplo

O exemplo a seguir representa as entidades, como álbuns, elementos de cartão, etc. junto com uma foto e informações breves -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Chips HTML Layout</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.material.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.material.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               
               <div class = "page navbar-fixed">
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "center">Chips HTML Layout</div>
                     </div>
                  </div>
                  
                  <div class = "page-content">
                     <div class = "content-block-title">Chips With Text</div>
                     <div class = "content-block">
                        <div class = "chip">
                           <div class = "chip-label">Chip one</div>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-label">Chip two</div>
                        </div>
                     </div>
                     
                     <div class = "content-block-title">Chips with icons</div>
                     
                     <div class = "content-block">
                        <div class = "chip">
                           <div class = "chip-media bg-blue"><i class = "icon icon-form-calendar"></i></div>
                           <div class = "chip-label">Set Date</div>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media bg-purple"><i class = "icon icon-form-email"></i></div>
                           <div class = "chip-label">Sent Mail</div>
                        </div>
                     </div>
                     
                     <div class = "content-block-title">Contact Chips</div>
                     
                     <div class = "content-block">
                        <div class = "chip">
                           <div class = "chip-media"><img src = "/framework7/images/pic.jpg"></div>
                           <div class = "chip-label">James Willsmith</div>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media"><img src = "/framework7/images/pic2.jpg"></div>
                           <div class = "chip-label">Sunil Narayan</div>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media bg-pink">R</div>
                           <div class = "chip-label">Raghav</div>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media bg-teal">S</div>
                           <div class = "chip-label">Sharma</div>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media bg-red">Z</div>
                           <div class = "chip-label">Zien</div>
                        </div>
                     </div>
                     
                     <div class = "content-block-title">Deletable Chips</div>
                     
                     <div class = "content-block">
                        <div class = "chip">
                           <div class = "chip-label">Chip one</div>
                           <a href = "#" class = "chip-delete"></a>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media bg-teal">S</div>
                           <div class = "chip-label">Sharma</div>
                           <a href = "#" class = "chip-delete"></a>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media bg-purple"><i class = "icon icon-form-email"></i></div>
                           <div class = "chip-label">Sent</div>
                           <a href = "#" class = "chip-delete"></a>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media"><img src = "/framework7/images/pic.jpg"></div>
                           <div class = "chip-label">James Willsmith</div>
                           <a href = "#" class = "chip-delete"></a>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-label">Chip two</div>
                           <a href = "#" class = "chip-delete"></a>
                        </div>
                        
                        <div class = "chip">
                           <div class = "chip-media bg-green">R</div>
                           <div class = "chip-label">Raghav</div>
                           <a href = "#" class = "chip-delete"></a>
                        </div>
                     </div>
                     
                  </div>
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <style>
      </style>
      
      <script>
         var myApp = new Framework7 ({
            material: true
         });
         
         var $$ = Dom7;
         $$('.chip-delete').on('click', function (e) {
            e.preventDefault();
            var chip = $$(this).parents('.chip');
             
            myApp.confirm('Do you want to delete this Chip?', function () {
               chip.remove();
            });
         });
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como cards_html_layout.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/cards_html_layout.html e a saída é exibida conforme mostrado abaixo.

  • O exemplo representa as entidades complexas em pequenos blocos, como álbuns, elementos de cartão, imagem postada, que contém foto, sequência de título e informações breves.

Descrição

Framework7 fornece um grupo de botões prontos para uso, apenas adicionando classes apropriadas aos links ou botões de entrada.

S.No Tipos e descrição
1 Botões de tema iOS

Framework7 fornece muitos botões de tema iOS, que podem ser usados ​​aplicando classes apropriadas.

2 Botões de tema de material

O tema material fornece muitos botões para usar em seu aplicativo usando classes apropriadas.

Descrição

Framework7 fornece botão de ação flutuante para uma ação promovida. Eles aparecem como um ícone circulado flutuante sobre a IU. Ele tem os comportamentos de movimento que contêm transformação , lançamento e transferência de um ponto de ancoragem .

O botão de ação flutuante só é compatível com o tema Material.

A tabela a seguir lista os tipos de botões de ação usados ​​no Framework7 -

S.No Tipos e descrição
1 Layout de botão de ação flutuante

É muito simples; você só precisa colocá-lo como filho de página ou visualização .

2 Morph To Popover

Se você deseja abrir o popover clicando no botão de ação flutuante, você pode usar a classe botão flutuante para popover .

3 Discagem rápida

Você pode invocar ações relacionadas clicando no botão de ação flutuante usando a discagem rápida .

Descrição

Os formulários são usados ​​para interagir com os usuários e coletar dados dos usuários da web usando campos de texto, caixas de seleção, botões de rádio, etc.

Framework7 fornece diferentes tipos de elementos de formulário para trabalhar com os aplicativos sem problemas, conforme especificado na tabela abaixo -

S.No Tipo de sobreposição e descrição
1 Elementos de Formulário

Os elementos do formulário são usados ​​para criar layouts de formulário de boa aparência.

2 Caixas de seleção e rádios

A extensão de visualização de lista permite que você crie caixas de seleção e entradas de rádio no Framework7.

3 Smart Select

A seleção inteligente é uma maneira fácil de alterar as seleções de forma para páginas dinâmicas usando grupos de caixas de seleção e entradas de rádio.

4 Elementos desativados

Os elementos podem ser desabilitados aplicando a classe desabilitada ao elemento ou adicionando atributos desabilitados para o elemento do formulário.

5 Dados do formulário

O Framework7 possui poucos métodos úteis, o que facilita o trabalho com formulários.

6 Armazenamento de Formulários

É fácil com o armazenamento de formulários armazenar e analisar dados de formulários automaticamente em páginas carregadas com Ajax.

7 Envio de formulário Ajax

Framework7 permite que você envie dados automaticamente usando Ajax.

Descrição

As guias são conjuntos de conteúdo agrupados logicamente que nos permitem alternar rapidamente entre elas e economiza espaço como acordeões.

Layout das guias

O código a seguir define o layout das guias -

<!-- Tabs wrapper, shoud have "tabs" class.It is a required element -->
<div class = "tabs">
   <!-- The tab, should have "tab" class and unique id attribute -->
   
   <!-- The tab is active by default - "active" class -->
   <div class = "tab active" id = "tab1">
      ...  The content for Tab 1 goes here ...
   </div>
   
   <!-- The second tab, should have "tab" class and unique id attribute -->
   <div class = "tab" id = "tab2">
      ... The content for Tab 2 goes here ...
   </div>
</div>

Onde -

  • <div class = "tabs">- É um wrapper obrigatório para todas as guias. Se perdermos isso, as guias não funcionarão.

  • <div class = "tab"> - É uma única guia, que deve ter unique id atributo.

  • <div class = "tab active">- É uma única guia ativa, que usa classe ativa adicional para tornar a guia visível (ativa).

Alternando entre as guias

Você pode usar algum controlador no layout de guias, para que o usuário possa alternar entre eles.

Para isso, você precisa criar links (<a> tags) com classe tab-link e atributo href igual ao atributo id da guia alvo -

<!-- Here the link is used to activates 1st tab, has the same href attribute (#tab1) as the id attribute of 1st tab (tab1)  -->
<a href = "#tab1" class = "tab-link active">Tab 1</a>

<!-- Here the link is used to activates 2st tab, has the same href attribute (#tab2) as the id attribute of 2st tab (tab2)  -->
<a href = "#tab2" class = "tab-link">Tab 2</a>

<a href = "#tab3" class = "tab-link">Tab 3</a>

Alternar várias guias

Se você estiver usando um link de guia única para alternar entre várias guias, poderá usar classes em vez de usar IDs e atributo de guia de dados .

<!-- For Top Tabs  -->
<div class = "tabs tabs-top">
   <div class = "tab tab1 active">...</div>
   <div class = "tab tab2">...</div>
   <div class = "tab tab3">...</div>
</div>

<!-- For Bottom Tabs -->
<div class = "tabs tabs-bottom">
   <div class = "tab tab1 active">...</div>
   <div class = "tab tab2">...</div>
   <div class = "tab tab3">...</div>
</div>

<!-- For Tabs links -->
<div class = "tab-links">
   <!-- Links are switch top and bottom tabs to .tab1 -->
   <a href = "#" class = "tab-link" data-tab = ".tab1">Tab 1</a>
   <!-- Links are switch top and bottom tabs to .tab2 -->
   <a href = "#" class = "tab-link" data-tab = ".tab2">Tab 2</a>
   <!-- Links are switch top and bottom tabs to .tab3 -->
   <a href = "#" class = "tab-link" data-tab = ".tab3">Tab 3</a>
</div>

O atributo data-tab de tab-link contém o seletor CSS da guia / guias de destino.

Podemos usar diferentes formas de guias, que são especificadas na tabela a seguir -

S.No Tipos e descrição de guias
1 Guias embutidas

As guias embutidas são conjuntos agrupados em linha que permitem que você alterne rapidamente entre elas.

2 Alternar guias da barra de navegação

Podemos colocar guias na barra de navegação que permitem que você alterne entre elas.

3 Alternar visualizações da barra de guias

Uma guia única pode ser usada para alternar entre as visualizações com sua própria navegação e layout.

4 Guias animadas

Você pode usar uma transição simples (animação) para alternar entre as guias.

5 Guias deslizantes

Você pode criar guias deslizantes com transição simples usando a classe tabs-swipeable-wrap para as guias.

6 Eventos JavaScript de guias

Os eventos JavaScript podem ser usados ​​quando você está trabalhando com o código JavaScript para as guias.

7 Mostrar guia usando JavaScript

Você pode alternar ou mostrar a guia usando métodos JavaScript.

Descrição

O controle deslizante deslizante é o controle deslizante de toque mais poderoso e moderno e vem no Framework7 com muitos recursos.

O seguinte layout HTML mostra o controle deslizante -

<!-- Container class for slider -->
<div class = "swiper-container">
   <!-- Wrapper class for slider -->
   <div class = "swiper-wrapper">
      <!-- Slides -->
      <div class = "swiper-slide">Slide 1</div>
      <div class = "swiper-slide">Slide 2</div>
      <div class = "swiper-slide">Slide 3</div>
      ... other slides ...
   </div>
   
   <!-- Define pagination, if it is required -->
   <div class = "swiper-pagination"></div>
</div>

As seguintes classes são usadas para o controle deslizante -

  • swiper-container - É um elemento obrigatório para o contêiner do controle deslizante principal e é usado para slides e paginações.

  • Swiper-wrapper - É um elemento necessário para slides de invólucro adicionais.

  • swiper-slide - É um único elemento de slide e pode conter qualquer HTML dentro.

  • swiper-pagination - É opcional para marcadores de paginação e são criados automaticamente.

Você pode inicializar o swiper com JavaScript usando seus métodos relacionados -

myApp.swiper(swiperContainer,parameters)

OU

new Swiper(swiperContainer, parameters)

Ambos os métodos são usados ​​para inicializar o controle deslizante com opções.

Os métodos fornecidos acima contêm os seguintes parâmetros -

  • swiperContainer- É HTMLElement ou string de um container swiper e é obrigatório.

  • parameters - São elementos opcionais que contêm objetos com parâmetros de swiper.

Por exemplo -

var mySwiper = app.swiper('.swiper-container', {
   speed: 400,
   spaceBetween: 100
});

É possível acessar uma instância de swiper e a propriedade swiper do contêiner do slider tem o seguinte elemento HTML -

var mySwiper = $$('.swiper-container')[0].swiper;

// Here you can use all slider methods like:
mySwiper.slideNext();

Você pode ver as diferentes formas e tipos de swiper na tabela a seguir -

S.No Tipos e descrição de swiper
1 Swiper padrão com paginação

É um controle deslizante de toque moderno e desliza horizontalmente, por padrão.

2 Swiper vertical

Este também funciona como um deslizante padrão, mas desliza verticalmente.

3 Com espaço entre slides

Este swiper é usado para dar espaço entre dois slides.

4 Swipers múltiplos

Este swiper usa mais de um swiper em uma única página.

5 Swipers aninhados

É a combinação de slides verticais e horizontais.

6 Controles personalizados

Ele é usado para controles personalizados para escolher ou deslizar qualquer slide.

7 Carregamento lento

Ele pode ser usado para arquivo multimídia, que leva tempo para carregar.

Descrição

O navegador de fotos é semelhante ao componente de navegador de fotos do iOS para exibir grupos de imagens, que podem ser ampliados e panorâmicos. Para deslizar entre as imagens, o navegador de fotos usa o Swiper Slider .

A tabela a seguir mostra os tipos de navegador de fotos usados ​​no framework7 -

S.No Tipos de navegador de fotos e descrição
1 Criar instância do navegador de fotos

O navegador de fotos pode ser criado e inicializado usando apenas JavaScript.

2 Parâmetros do navegador de fotos

Framework7 fornece uma lista de parâmetros, que são usados ​​com o navegador de fotos.

3 Métodos e propriedades do navegador de fotos

Você obterá uma variável de instância inicializada para usar os métodos e propriedades do navegador de fotos assim que inicializar o navegador de fotos.

4 Matriz de fotos

Durante a inicialização do navegador de fotos, você precisa passar o parâmetro array com fotos / vídeos em fotos .

5 Modelos de navegador de fotos

O Framework7 fornece muitos modelos de navegador de fotos, que você pode passar na inicialização do navegador de fotos.

Descrição

O Autocomplete é um componente otimizado para toque e móvel do Framework7, que pode ser suspenso ou autônomo. Você pode criar e inicializar a instância do Autocomplete usando o método JavaScript -

myApp.autocomplete(parameters)

Onde os parâmetros são objetos obrigatórios usados ​​para inicializar a instância do Autocomplete.

Parâmetros de preenchimento automático

A tabela a seguir lista os parâmetros de preenchimento automático disponíveis no Framework7 -

S.No Parâmetros e descrição Tipo Padrão
1

openIn

Ele define como abrir um Autocomplete que pode ser usado como lista suspensa, popup ou página.

corda página
2

source

Ele usa instância de autocomplete, consulta de pesquisa e função de renderização para passar itens correspondentes com array.

função (preenchimento automático, consulta, renderização) -
3

valueProperty

Ele especifica o valor do item da chave do objeto de item correspondente.

corda Eu iria
4

limit

Ele exibe o número limitado de itens no preenchimento automático por consulta.

número -
5

preloader

O pré-carregador pode ser usado para especificar o layout de preenchimento automático definindo-o como verdadeiro.

boleano falso
6

preloaderColor

Ele especifica a cor do pré-carregador. Por padrão, a cor é "preto".

corda -
7

value

Define a matriz com os valores padrão selecionados.

matriz -
8

textProperty

Ele especifica o valor do item da chave do objeto de item correspondente, que pode ser usado como um título das opções exibidas.

corda texto

Parâmetros de preenchimento automático autônomo

A tabela a seguir lista os parâmetros de preenchimento automático autônomo disponíveis no Framework7 -

S.No Parâmetros e descrição Tipo Padrão
1

opener

É um parâmetro de string ou elemento HTML, que abrirá a página autocomplete autônoma.

string ou HTMLElement -
2

popupCloseText

É usado para fechar o pop-up de preenchimento automático.

corda 'Fechar'
3

backText

Ele fornece o link de retorno quando o preenchimento automático é aberto como página.

corda 'De volta'
4

pageTitle

Ele especifica o título da página de preenchimento automático.

corda -
5

searchbarPlaceholderText

Ele especifica o texto do espaço reservado da barra de pesquisa.

corda 'Pesquisa'
6

searchbarCancelText

Ele define o texto do botão de cancelamento da barra de pesquisa.

corda 'cancelar'
7

notFoundText

Ele exibe o texto quando nenhum elemento correspondente é encontrado.

corda 'Nada encontrado'
8

multiple

Permite selecionar a seleção múltipla definindo-a como verdadeira.

boleano falso
9

navbarTheme

Ele especifica o tema de cores para navbar.

corda -
10

backOnSelect

Quando o usuário escolhe o valor, o preenchimento automático será fechado configurando-o como verdadeiro.

boleano falso
11

formTheme

Ele especifica o tema de cores do formulário.

corda -

Parâmetros de preenchimento automático suspenso

A tabela a seguir lista os parâmetros de preenchimento automático suspenso disponíveis no Framework7 -

S.No Parâmetros e descrição Tipo Padrão
1

input

É uma string ou elemento HTML usado para entrada de texto.

string ou HTMLElement -
2

dropdownPlaceholderText

Ele especifica o texto do marcador de posição suspenso.

corda -
3

updateInputValueOnSelect

Você pode atualizar o valor de entrada na seleção definindo-o como verdadeiro.

boleano verdadeiro
4

expandInput

Você pode expandir a entrada de texto no modo de exibição de lista para tornar a tela inteira visível durante o menu suspenso, definindo a entrada de item como verdadeira.

boleano falso

Funções de preenchimento automático de retorno de chamada

A tabela a seguir lista os parâmetros de preenchimento automático suspenso disponíveis no Framework7 -

S.No Parâmetros e descrição Tipo Padrão
1

onChange

Sempre que o valor de preenchimento automático for alterado, esta função de retorno de chamada será executada.

função (preenchimento automático, valor) -
2

onOpen

Sempre que o preenchimento automático for aberto, esta função de retorno de chamada será executada.

função (autocompletar) -
3

onClose

Sempre que o autocomplete for fechado, esta função de retorno de chamada será executada.

função (autocompletar) -

Modelos de preenchimento automático

A tabela a seguir lista os parâmetros de preenchimento automático suspenso disponíveis no Framework7 -

S.No Parâmetros e descrição Tipo Padrão
1

navbarTemplate

É um template autocomplete navbar autônomo.

corda -
2

itemTemplate

É um item de formulário template7 autônomo.

corda -
3

dropdownTemplate

É o modelo suspenso template7.

corda -
4

dropdownItemTemplate

É o item da lista suspensa template7.

corda -
5

dropdownPlaceholderTemplate

É um item de espaço reservado de dropdown template7.

corda -

Modelos padrão

A seguir estão os trechos de código do modelo padrão para os parâmetros dos modelos definidos acima -

navbarTemplate

<div class = "navbar {{#if navbarTheme}}theme-{{navbarTheme}}{{/if}}">
   <div class = "navbar-inner">
      <div class = "left sliding">
         {{#if material}}
            <a href = "#" class = "link {{#if inPopup}}close-popup{{else}}back{{/if}} icon-only">
               <i class = "icon icon-back"></i>
            </a>
         {{else}}
            <a href = "#" class = "link {{#if inPopup}}close-popup{{else}}back{{/if}}">
               <i class = "icon icon-back"></i>
               {{#if inPopup}}
                  <span>{{popupCloseText}}</span>
               {{else}}
                  <span>{{backText}}</span>
               {{/if}}
            </a>
         {{/if}}
      </div>

      <div class = "center sliding">{{pageTitle}}</div>
      {{#if preloader}}
         <div class = "right">
            <div class = "autocomplete-preloader preloader 
               {{#if preloaderColor}}
                  preloader-{{preloaderColor}}
               {{/if}}">
            </div>
         </div>
      {{/if}}
   </div>
</div>

itemTemplate

<li>
    <label class = "label-{{inputType}} item-content">
        <input type = "{{inputType}}" name = "{{inputName}}" value = "{{value}}" {{#if selected}}checked{{/if}}>
        {{#if material}}
            <div class = "item-media">
                <i class = "icon icon-form-{{inputType}}"></i>
            </div>
            
            <div class = "item-inner">
                <div class = "item-title">{{text}}</div>
            </div>
        {{else}}
            {{#if checkbox}}
               <div class = "item-media">
                  <i class = "icon icon-form-checkbox"></i>
               </div>
            {{/if}}
            
            <div class = "item-inner">
                <div class = "item-title">{{text}}</div>
            </div>
        {{/if}}
    </label>
</li>

dropdownTemplate

<div class = "autocomplete-dropdown">
   <div class = "autocomplete-dropdown-inner">
      <div class = "list-block">
         <ul></ul>
      </div>
   </div>
   
   {{#if preloader}}
      <div class = "autocomplete-preloader preloader 
         {{#if preloaderColor}}
            preloader-{{preloaderColor}}
         {{/if}}">
         {{#if material}}
            {{materialPreloaderHtml}}
         {{/if}}
      </div>
   {{/if}}
</div>

dropdownItemTemplate

<li>
   <label class = "{{#unless placeholder}}label-radio{{/unless}} item-content" data-value = "{{value}}">
      <div class = "item-inner">
         <div class = "item-title">{{text}}</div>
      </div>
   </label>
</li>

dropdownPlaceholderTemplate

<li class = "autocomplete-dropdown-placeholder">
   <div class = "item-content">
      <div class = "item-inner">
         <div class = "item-title">{{text}}</div>
      </div>
   </label>
</li>

Métodos de preenchimento automático

A tabela a seguir especifica os métodos de preenchimento automático disponíveis no Framework7 -

S.No Métodos e Descrição
1

myAutocomplete.params

Define os parâmetros de inicialização que são passados ​​com o objeto.

2

myAutocomplete.value

Ele define a matriz com os valores selecionados.

3

myAutocomplete.opened

Ele abre o Autocomplete se estiver definido como verdadeiro.

4

myAutocomplete.dropdown

Ele especifica uma instância do menu suspenso Autocomplete.

5

myAutocomplete.popup

Ele especifica uma instância de pop-up de preenchimento automático.

6

myAutocomplete.page

Ele especifica uma instância de página de preenchimento automático.

7

myAutocomplete.pageData

Ele define os dados da página de preenchimento automático.

8

myAutocomplete.searchbar

Ele define a instância da barra de pesquisa do Autocomplete.

Propriedades de preenchimento automático

A tabela a seguir especifica os métodos de preenchimento automático disponíveis no Framework7 -

S.No Propriedades e descrição
1

myAutocomplete.open()

Ele abre o Autocomplete, que pode ser usado como menu suspenso, pop-up ou página.

2

myAutocomplete.close()

Ele fecha o Autocomplete.

3

myAutocomplete.showPreloader()

Mostra o pré-carregador do Autocomplete.

4

myAutocomplete.hidePreloader()

Ele oculta o pré-carregador do Autocomplete.

5

myAutocomplete.destroy()

Ele destrói a instância do pré-carregador de Autocomplete e remove todos os eventos.

Exemplo

O exemplo a seguir demonstra o uso de parâmetros de preenchimento automático ocultos no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Autocomplete</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               <div data-page = "home" class = "page navbar-fixed">
               
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "left"> </div>
                        <div class = "center">Autcomplete</div>
                        <div class = "right"> </div>
                     </div>
                  </div>
               
                  <div class = "page-content">
                     <div class = "content-block-title">Simple Dropdown Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Dropdown With Input Expand</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown-expand">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Dropdown With All Values</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown-all">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Dropdown With Placeholder</div>
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-title label">Country</div>
                              <div class = "item-input">
                                 <input type = "text" placeholder = "Country" id = "autocomplete-dropdown-placeholder">
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Simple Standalone Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li>
                              <a href = "#" id = "autocomplete-standalone" class = "item-link item-content autocomplete-opener">
                                 <input type = "hidden">
                                 <div class = "item-inner">
                                    <div class = "item-title">Favorite Country</div>
                                    <div class = "item-after"></div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Popup Standalone Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li>
                              <a href = "#" id = "autocomplete-standalone-popup" class = "item-link item-content autocomplete-opener">
                                 <input type = "hidden">
                                 <div class = "item-inner">
                                    <div class = "item-title">Favorite Country</div>
                                    <div class = "item-after"></div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "content-block-title">Multiple Values Standalone Autocomplete</div>
                     <div class = "list-block">
                        <ul>
                           <li>
                              <a href = "#" id = "autocomplete-standalone-multiple" class = "item-link item-content autocomplete-opener">
                                 <input type = "hidden">
                                 <div class = "item-inner">
                                    <div class = "item-title">Favorite Countries</div>
                                    <div class = "item-after"></div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </div>
                  </div> 
                  
               </div>
            </div>
         </div>
      </div>
      
      <script type  =  "text/javascript" 
         src  =  "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script>
         var myApp  =  new Framework7();
         var $$  =  Dom7;
         var mainView  =  myApp.addView('.view-main');
         
         // Countries data array
         var countries  =  ('India Africa Australia NewZealand England WestIndies Scotland Zimbabwe Srilanka Bangladesh').split(' ');

         // Simple Dropdown
         var autocompleteDropdownSimple  =  myApp.autocomplete ({
            input: '#autocomplete-dropdown',
            openIn: 'dropdown',
            
            source: function (autocomplete, query, render) {
               var results  =  [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Dropdown with input expand
         var autocompleteDropdownExpand = myApp.autocomplete ({
            input: '#autocomplete-dropdown-expand',
            openIn: 'dropdown',
            expandInput: true,   // expandInput used as item-input in List View will be expanded to full screen wide
                                 //during dropdown
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               // Find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Dropdown with all values
         var autocompleteDropdownAll = myApp.autocomplete ({
            input: '#autocomplete-dropdown-all',
            openIn: 'dropdown',
            
            source: function (autocomplete, query, render) {
               var results = [];
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Dropdown with placeholder
         var autocompleteDropdownPlaceholder = myApp.autocomplete ({
            input: '#autocomplete-dropdown-placeholder',
            openIn: 'dropdown',
            dropdownPlaceholderText: 'Type as "India"',
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
                  
               // Display the items by passing array with result items
               render(results);
            }
         });

         // Simple Standalone
         var autocompleteStandaloneSimple = myApp.autocomplete ({
            openIn: 'page', //open in page
            opener: $$('#autocomplete-standalone'), //link that opens autocomplete
            backOnSelect: true, //go back after we select something
            
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) 
                     results.push(countries[i]);
               }
               // Display the items by passing array with result items
               render(results);
            },
               
            onChange: function (autocomplete, value) {
               // Here add the item text value to item-after
               $$('#autocomplete-standalone').find('.item-after').text(value[0]);
               
               // You can add item value to input value
               $$('#autocomplete-standalone').find('input').val(value[0]);
            }
         });

         // Standalone Popup
         var autocompleteStandalonePopup = myApp.autocomplete ({
            openIn: 'popup', // Opens the Autocomplete in page
            opener: $$('#autocomplete-standalone-popup'), // It will open standalone autocomplete popup
            backOnSelect: true, //After selecting item, then go back to page
            source: function (autocomplete, query, render) {
            var results = [];
            if (query.length === 0) {
               render(results);
               return;
            }
            
            // You can find matched items
            for (var i = 0; i < countries.length; i++) {
               if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) results.push(countries[i]);
            }
            
            // Display the items by passing array with result items
               render(results);
            },
            
            onChange: function (autocomplete, value) {
               // Here add the item text value to item-after
               $$('#autocomplete-standalone-popup').find('.item-after').text(value[0]);
               
               // You can add item value to input value
               $$('#autocomplete-standalone-popup').find('input').val(value[0]);
            }
         });

         // Multiple Standalone
         var autocompleteStandaloneMultiple = myApp.autocomplete ({
            openIn: 'page', //Opens the Autocomplete in page
            opener: $$('#autocomplete-standalone-multiple'), //link that opens autocomplete
            multiple: true, //Allow multiple values
            source: function (autocomplete, query, render) {
               var results = [];
               if (query.length === 0) {
                  render(results);
                  return;
               }
               
               // You can find matched items
               for (var i = 0; i < countries.length; i++) {
                  if (countries[i].toLowerCase().indexOf(query.toLowerCase()) >= 0) results.push(countries[i]);
               }
               
               // Display the items by passing array with result items
               render(results);
            },
            
            onChange: function (autocomplete, value) {
               // Here add the item text value to item-after
               $$('#autocomplete-standalone-multiple').find('.item-after').text(value.join(', '));
               
               // You can add item value to input value
               $$('#autocomplete-standalone-multiple').find('input').val(value.join(', '));
            }
         });
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como autocomplete.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/autocomplete.html e a saída é exibida conforme mostrado abaixo.

  • O exemplo fornece preenchimento automático de valores em lista suspensa simples, lista suspensa com todos os valores, lista suspensa com espaço reservado, preenchimento automático autônomo etc.

Descrição

O selecionador se parece com o selecionador nativo do iOS e é um componente poderoso que permite selecionar qualquer valor da lista e também é usado para criar selecionadores de sobreposição personalizados. Você pode usar o Seletor como componente embutido ou como sobreposição. O seletor de sobreposição será automaticamente convertido para Popover em tablets (iPad).

Usando o método do aplicativo a seguir, você pode criar e inicializar o método JavaScript -

myApp.picker(parameters)

Onde os parâmetros são objetos necessários, usados ​​para inicializar a instância do selecionador e é um método obrigatório.

Parâmetros de seleção

A tabela a seguir especifica os parâmetros disponíveis nos selecionadores -

S.No Parâmetros e descrição Tipo Padrão
1

container

String com seletor CSS ou HTMLElement usado para gerar Seletor HTML para seletores embutidos.

string ou HTMLElement -
2

input

O elemento de entrada relacionado colocado com a string com seletor CSS ou HTMLElement.

string ou HTMLElement -
3

scrollToInput

É usado para rolar a janela de visualização (conteúdo da página) de entrada, sempre que o seletor é aberto.

boleano verdadeiro
4

inputReadOnly

Usado para definir o atributo "somente leitura" na entrada especificada.

boleano verdadeiro
5

convertToPopover

É usado para converter o modal selecionador para Popover em telas grandes como o iPad.

boleano verdadeiro
6

onlyOnPopover

Você pode abrir o seletor no Popover, ativando-o.

boleano verdadeiro
7

cssClass

Para selecionar modal, você pode usar o nome de classe CSS adicional.

corda -
8

closeByOutsideClick

Você pode fechar o selecionador clicando fora do selecionador ou elemento de entrada ativando o método.

boleano falso
9

toolbar

É usado para habilitar a barra de ferramentas modal do selecionador.

boleano verdadeiro
10

toolbarCloseText

Usado para o botão Concluído / Fechar da barra de ferramentas.

corda 'Feito'
11

toolbarTemplate

É o modelo HTML da barra de ferramentas, por padrão é uma string HTML com o seguinte modelo -

<div class = "toolbar">
  <div class = "toolbar-inner">
    <div class = "left"></div>
    <div class = "right">
      <a href = "#" class = "link close-picker">
         {{closeText}}
      </a>
    </div>
  </div>
</div>
corda -

Parâmetros de seleção específicos

A tabela a seguir lista os parâmetros de seletor específicos disponíveis -

S.No Parâmetros e descrição Tipo Padrão
1

rotateEffect

Ele ativa o efeito de rotação 3D no seletor.

boleano falso
2

momentumRatio

Quando você solta o seletor após um toque e movimento rápido, ele produz mais impulso.

número 7
3

updateValuesOnMomentum

Usado para atualizar selecionadores e valores de entrada durante o momento.

boleano falso
4

updateValuesOnTouchmove

Usado para atualizar selecionadores e valores de entrada durante o movimento de toque.

boleano verdadeiro
5

value

A matriz tem seus valores iniciais e também cada item da matriz representa o valor da coluna relacionada.

matriz -
6

formatValue

A função é usada para formatar o valor de entrada e deve retornar um valor de string novo / formatado. Os valores e displayValues são matrizes de colunas relacionadas.

função (p, valores, displayValues) -
7

cols

Cada item da matriz representa um objeto com parâmetros de coluna.

matriz -

Retornos de chamada de parâmetro do selecionador

A tabela a seguir mostra as listas de funções de retorno de chamada disponíveis nos selecionadores -

S.No Chamadas de retorno e descrição Tipo Padrão
1

onChange

A função de retorno de chamada será executada sempre que o valor do seletor for alterado e os valores e displayValues forem matrizes de colunas relacionadas.

função (p, valores, displayValues) -
2

onOpen

A função de retorno de chamada será executada sempre que o seletor for aberto.

função (p) -
3

onClose

A função de retorno de chamada será executada sempre que o seletor for fechado.

função (p) -

Parâmetros de coluna

No momento da configuração do Picker, precisamos passar o parâmetro cols . É representado como uma matriz, onde cada item é um objeto com parâmetros de coluna -

S.No Parâmetros e descrição Tipo Padrão
1

values

Você pode especificar os valores das colunas da string com uma matriz.

matriz -
2

displayValues

Possui array com valores de colunas de string e exibirá o valor do parâmetro de valores , quando não especificado.

matriz -
3

cssClass

O nome da classe CSS usado para definir no recipiente HTML da coluna.

corda -
4

textAlign

É usado para definir o alinhamento do texto dos valores da coluna e pode ser "esquerda", "centro" ou "direita" .

corda -
5

width

A largura é calculada automaticamente, por padrão. Se você precisar corrigir as larguras das colunas no seletor com colunas dependentes que devem ser em px .

número -
6

divider

É usado para coluna que deve ser divisória visual, não tem nenhum valor.

boleano falso
7

content

É usado para especificar o divisor de coluna (divisor: verdadeiro) com o conteúdo da coluna.

corda -

Parâmetro de retorno de chamada da coluna

S.No Chamadas de retorno e descrição Tipo Padrão
1

onChange

Sempre que o valor da coluna mudar, a função de retorno de chamada será executada. O valor e displayValue representam o valor da coluna atual e displayValue .

função (p, valor, displayValue) -

Propriedades do selecionador

A variável Picker tem muitas propriedades que são fornecidas na tabela a seguir -

S.No Propriedades e descrição
1

myPicker.params

Você pode inicializar os parâmetros passados ​​com o objeto.

2

myPicker.value

O valor selecionado para cada coluna é representado por uma matriz de itens.

3

myPicker.displayValue

O valor de exibição selecionado para cada coluna é representado por uma matriz de itens.

4

myPicker.opened

Quando o seletor é aberto, ele define o valor verdadeiro .

5

myPicker.inline

Quando o selecionador está embutido, ele define o valor verdadeiro .

6

myPicker.cols

As colunas do Seletor têm seus próprios métodos e propriedades.

7

myPicker.container

A instância Dom7 é usada para o recipiente HTML.

Métodos de seleção

A variável picker tem métodos úteis, que são fornecidos na tabela a seguir -

S.No Métodos e Descrição
1

myPicker.setValue(values, duration)

Use para definir o novo valor do seletor. Os valores estão em array, onde cada item representa o valor de cada coluna. duração - é a duração da transição em ms.

2

myPicker.open()

Use para abrir o Picker.

3

myPicker.close()

Use para fechar o Picker.

4

myPicker.destroy()

Use para destruir a instância do Picker e remover todos os eventos.

Propriedades da coluna

Cada coluna na matriz myPicker.cols também tem suas próprias propriedades úteis, que são fornecidas na tabela a seguir -

//Get first column
var col = myPicker.cols[0];
S.No Propriedades e descrição
1

col.container

Você pode criar uma instância com o recipiente HTML da coluna.

2

col.items

Você pode criar uma instância com elementos HTML de itens de coluna.

3

col.value

Usado para selecionar o valor da coluna atual.

4

col.displayValue

Usado para selecionar o valor da coluna atual de exibição.

5

col.activeIndex

Forneça o número do índice atual, que é o item selecionado / ativo.

Métodos de Coluna

Os métodos de coluna úteis são fornecidos na tabela a seguir -

S.No Métodos e Descrição
1

col.setValue(value, duration)

Usado para definir um novo valor para a coluna atual. O valor deve ser um novo valor e a duração é a duração da transição fornecida em ms.

2

col.replaceValues(values, displayValues)

Usado para substituir os valores da coluna e displayValues ​​por novos.

É usado para acessar a instância do Picker a partir de seu contêiner HTML, sempre que você inicializa o Picker como um Selecionador embutido.

var myPicker = $$('.picker-inline')[0].f7Picker;

Existem diferentes tipos de selecionadores, conforme especificado na tabela a seguir -

S.No Tipos e descrição de guias
1 Seletor com valor único

É um componente poderoso que permite escolher qualquer valor da lista.

2 Dois valores e efeito de rotação 3D

No seletor, você pode usar para o efeito de rotação 3D.

3 Valores Dependentes

Os valores são dependentes uns dos outros para o elemento especificado.

4 Barra de Ferramentas Personalizada

Você pode usar um ou mais seletores em uma única página para personalizar.

5 Selecionador Inline / Data-hora

Você pode selecionar o número de valores no seletor embutido. Como a data tem data, mês, ano e hora tem horas, minutos, segundos.

Descrição

O componente Calendário permite que você controle datas facilmente e pode ser usado como um componente embutido ou de sobreposição. O calendário de sobreposição será convertido em popover nos tablets automaticamente.

O calendário pode ser criado e inicializado apenas usando JavaScript. Você precisa usar o método do aplicativo relacionado conforme mostrado abaixo -

  • myApp.calendar(parameters)- Este método retorna uma instância de calendário inicializada. Ele aceita um objeto como parâmetros.

A tabela a seguir mostra o uso do calendário no Framework7 -

S.No Uso e descrição do calendário
1 Parâmetros do calendário

Framework7 fornece uma lista de parâmetros, que são usados ​​com o calendário.

2 Métodos e propriedades do calendário

Você obterá uma variável de instância inicializada para usar os métodos e propriedades do calendário, assim que inicializar o calendário.

3 Acesso à instância do calendário

É possível acessar a instância do calendário a partir de seu contêiner HTML ao inicializar o calendário como embutido.

Descrição

É um componente especial usado para atualizar (recarregar) o conteúdo da página puxando-o.

O código a seguir mostra como atualizar o conteúdo da página -

<div class = "page">
   <!-- Page content should have additional "pull-to-refresh-content" class -->
   <div class = "page-content pull-to-refresh-content" data-ptr-distance = "55">
      <!-- Default pull to refresh layer-->
      <div class = "pull-to-refresh-layer">
         <div class = "preloader"></div>
      <div class = "pull-to-refresh-arrow"></div>
   </div>

   <!-- usual content below -->
   <div class = "list-block">
      ...
   </div>
</div>

As seguintes classes são usadas na atualização -

  • page-content- Possui uma classe adicional de pull-to-refresh-content e é necessária para habilitar pull para atualizar.

  • pull-to-refresh-layer- É uma camada oculta, que é usada para puxar para atualizar o elemento visual e é apenas um pré-carregador e uma seta.

  • data-ptr-distance = "55" - Este é um atributo adicional que permite definir a distância de acionamento "puxar para atualizar" personalizada e seu valor padrão é 44px.

Puxe para atualizar eventos

Em 'Pull to Refresh', há alguns eventos JavaScript, que são fornecidos na tabela a seguir -

S.No Descrição do Evento Alvo
1

pullstart

Ele será acionado sempre que você começar a puxar para atualizar o conteúdo.

Puxe para atualizar o conteúdo.

<div class = "pull-to-refresh-content">
2

pullmove

Ele é acionado quando você está puxando para atualizar o conteúdo.

Puxe para atualizar o conteúdo.

<div class="pull-to-refresh-content">
3

pullend

Ele será acionado sempre que você soltar o pull para atualizar o conteúdo.

Puxe para atualizar o conteúdo.

<div class="pull-to-refresh-content">
4

refresh

Este evento será acionado quando o pull para atualizar entrar no estado "atualizando" .

Puxe para atualizar o conteúdo.

<div class="pull-to-refresh-content">
5

refreshdone

Ele será acionado após ser atualizado e voltar ao estado inicial. Isso será feito após chamar o método pullToRefreshDone .

Puxe para atualizar o conteúdo.

<div class="pull-to-refresh-content">

Existem métodos de aplicativos que podem ser usados ​​com Pull to Refresh.

S.No Métodos e descrição do aplicativo
1

myApp.pullToRefreshDone(ptrContent)

É usado para redefinir o conteúdo puxar para atualizar .

2

myApp.pullToRefreshTrigger(ptrContent)

É usado para acionar a atualização no pull especificado para atualizar o conteúdo .

3

myApp.destroyPullToRefresh(ptrContent)

É usado para destruir / desativar o pull para atualizar no pull especificado para atualizar o conteúdo .

4

myApp.initPullToRefresh(ptrContent)

É usado para inicializar / habilitar pull para atualizar o conteúdo .

Onde ptrContent é usado para HTMLElement ou string para puxar para atualizar-conteúdo para redefinir / disparar ou desabilitar / habilitar.

Exemplo

O exemplo a seguir demonstra o uso do componente de atualização que inicia a atualização do conteúdo de uma página -

<!DOCTYPE html>
<html>
   <head>
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">
      <meta name="apple-mobile-web-app-capable" content="yes">
      <meta name="apple-mobile-web-app-status-bar-style" content="black">
      <title>Pull To Refresh</title>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css">
   </head>
   <div class="views">
      <div class="view view-main">
         <div class="pages">
            <div data-page="home" class="page navbar-fixed">
               <div class="navbar">
                  <div class="navbar-inner">
                     <div class="left"> </div>
                     <div class="center">Pull To Refresh</div>
                     <div class="right"> </div>
                  </div>
               </div>
               <div class="page-content pull-to-refresh-content">
                  <div class="pull-to-refresh-layer">
                     <div class="preloader"></div>
                     <div class="pull-to-refresh-arrow"></div>
                  </div>
                  <div class="list-block media-list">
                     <ul>
                        <li class="item-content">
                           <div class="item-media"><img src="/framework7/images/apple.png" width="44"></div>
                           <div class="item-inner">
                              <div class="item-title-row">
                                 <div class="item-title">apple</div>
                              </div>
                           </div>
                        </li>
                        <li class="item-content">
                           <div class="item-media"><img src="/framework7/images/froots_img.jpg" width="44"></div>
                           <div class="item-inner">
                              <div class="item-title-row">
                                 <div class="item-title">strawberry</div>
                              </div>
                           </div>
                        </li>
                        <li class="item-content">
                           <div class="item-media"><img src="/framework7/images/mango.jpg" width="44"></div>
                           <div class="item-inner">
                              <div class="item-title-row">
                                 <div class="item-title">Mango</div>
                              </div>
                           </div>
                        </li>
                     </ul>
                     <div class="list-block-label">
                        <p>Just pull page down to let the magic happen.</p>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </div>
   <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
   <script>
      var myApp = new Framework7();

      var $$ = Dom7;

      // Dummy Content
      var fruits = ['mango', 'orange', 'watermelon', 'banana'];
      // Pull to refresh content
      var ptrContent = $$('.pull-to-refresh-content');
      // Add 'refresh' listener on it
      ptrContent.on('refresh', function (e) {
         // Emulate 2s loading
         setTimeout(function () {
            var picURL = 'images/Fruit.jpg' + Math.round(Math.random() * 100);
            var fruit = fruits[Math.floor(Math.random() * fruits.length)];
            var itemHTML = '<li class="item-content">' +
               '<div class="item-media"><img src="/framework7/images/Fruit.jpg" width="44"/></div>' +
               '<div class="item-inner">' +
               '<div class="item-title-row">' +
               '<div class="item-title">' + fruit + '</div>' +
                  '</div>' + '</div>' + '</li>';
            // Prepend new list element
            ptrContent.find('ul').prepend(itemHTML);
				
            // When loading done, we need to reset it
            myApp.pullToRefreshDone();
         }, 2000);
      });
   </script>
</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como pull_to_refresh.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/pull_to_refresh.html e a saída é exibida conforme mostrado abaixo.

  • Quando o usuário puxar para baixo, a página será atualizada com o conteúdo.

Descrição

O Infinite Scroll permite que você carregue conteúdo adicional e execute as ações necessárias quando a página estiver próxima ao final.

O seguinte layout HTML mostra a rolagem infinita -

<div class = "page">
   <div class = "page-content infinite-scroll" data-distance = "100">
      ...
   </div>
</div>

O layout acima contém as seguintes classes -

  • page-content infinite-scroll - É usado para contêiner de rolagem infinita.

  • data-distance - Este atributo permite que você configure a distância da parte inferior da página (em px) para acionar o evento de rolagem infinita e seu valor padrão é 50px.

Se você deseja usar a rolagem infinita no topo da página, é necessário adicionar uma classe adicional "rolagem infinita no topo" ao "conteúdo da página" -

<div class = "page">
   <div class = "page-content infinite-scroll infinite-scroll-top">
      ...
   </div>
</div>

Eventos de rolagem infinita

infinite- É usado para disparar quando a rolagem da página atinge a distância especificada até o final. Ele será direcionado por div class = "page-content infinite-scroll" .

Existem dois métodos do aplicativo que podem ser usados ​​com o contêiner de rolagem infinita -

Para adicionar ouvinte de evento de rolagem infinita ao contêiner HTML especificado, use o seguinte método -

myApp.attachInfiniteScroll(container)

Você pode remover o ouvinte de evento de rolagem infinita do contêiner HTML especificado usando o seguinte método -

myApp.detachInfiniteScroll(container)

Onde os parâmetros são opções obrigatórias usadas como HTMLElement ou string para contêiner de rolagem infinita.

Exemplo

O exemplo a seguir demonstra a rolagem infinita que carrega o conteúdo adicional quando a rolagem da página está próxima à parte inferior -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name="apple-mobile-web-app-capable" content="yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>infinite_scroll</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>
   
   <body>
      <div class = "views">
         <div class = "view view-main">
         
            <div class = "navbar">
               <div class = "navbar-inner">
                  <div class = "left"> </div>
                  <div class = "center sliding">Infinite Scroll</div>
                  <div class = "right"> </div>
               </div>
            </div>
         
            <div class = "pages navbar-through">
               <div data-page = "home" class = "page">
                  <div class = "page-content infinite-scroll">
                     <div class = "list-block">
                        <ul>
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 1</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 2</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 3</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 4</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 5</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 6</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 7</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 8</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 9</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 10</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 11</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 12</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 13</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 14</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 15</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 16</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 17</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 18</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 19</div>
                              </div>
                           </li>
                        
                           <li class = "item-content">
                              <div class = "item-inner">
                                 <div class = "item-title">Item 20</div>
                              </div>
                           </li>
                        </ul>
                     </div>
                  
                     <div class = "infinite-scroll-preloader">
                        <div class = "preloader"></div>
                     </div>
                  </div>
               </div>
            </div>
         
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <style>
         .infinite-scroll-preloader {
            margin-top:-20px;
            margin-bottom:10px;
            text-align:center;
         }
         
         .infinite-scroll-preloader .preloader {
            width:34px;
            height:34px;
         }
      </style>
      
      <script>
         var myApp = new Framework7();
         var $$ = Dom7;

         // Loading flag
         var loading = false;

         // Last loaded index
         var lastIndex = $$('.list-block li').length;

         // Max items to load
         var maxItems = 60;

         // Append items per load
         var itemsPerLoad = 20;

         // Attach 'infinite' event handler
         $$('.infinite-scroll').on('infinite', function () {

            // Exit, if loading in progress
            if (loading) return;

            // Set loading flag
            loading = true;

            // Emulate 1s loading
            setTimeout(function () {
               // Reset loading flag
               loading = false;

               if (lastIndex >= maxItems) {
                  // Nothing more to load, detach infinite scroll events to prevent unnecessary loadings
                  myApp.detachInfiniteScroll($$('.infinite-scroll'));
                  
                  // Remove preloader
                  $$('.infinite-scroll-preloader').remove();
                  return;
               }

               // Generate new items HTML
               var html = '';
               for (var i = lastIndex + 1; i <= lastIndex + itemsPerLoad; i++) {
                  html += '<li class = "item-content">
                     <div class = "item-inner">
                        <div class = "item-title">
                           Item ' + i + '
                        </div>
                     </div>
                  </li>';
               }

               // Append new items
               $$('.list-block ul').append(html);

               // Update last loaded index
               lastIndex = $$('.list-block li').length;
            }, 1000);
         });
      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como infinite_scroll.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/infinite_scroll.html e a saída é exibida conforme mostrado abaixo.

  • O exemplo permite o carregamento de conteúdo adicional quando a rolagem da página atinge a distância especificada até o final.

Descrição

As mensagens são componentes do Framework7, que permite a visualização de comentários e sistema de mensagens no aplicativo.

Layout de mensagens

O framework7 tem a seguinte estrutura de layout de mensagens -

<div class = "page">
<div class = "page-content messages-content">
   <div class = "messages">
      <!-- Defines the date stamp -->
      <div class = "messages-date">Monday, Apr 26 <span>10:30</span></div>
      
      <!-- Displays the sent message and by default, it will be in green color on right side -->
      <div class = "message message-sent">
         <!-- Define the text with bubble type -->
         <div class = "message-text">Hello</div>
      </div>
      
      <!-- Displays the another sent message -->
      <div class = "message message-sent">
         <!-- Define the text with bubble type -->
         <div class = "message-text">How are you?</div>
      </div>
      
      <!-- Displays the received message and by default, it will be in grey color on left side -->
      <div class = "message message-with-avatar message-received">
         <!-- Provides sender name -->
         <div class = "message-name">Smith</div>
         <!--  Define the text with bubble type -->
         <div class = "message-text">I am fine, thanks</div>
         <!-- Defines the another date stamp -->
         <div class = "messages-date">Tuesday, April 28 <span>11:16</span></div>
      </div>
      
   </div>
</div>

O layout contém as seguintes classes em diferentes áreas -

Layout da página de mensagens

A tabela a seguir mostra as classes de layout de página de mensagens com descrição.

S.No Classes e descrição
1

messages-content

É uma classe adicional necessária adicionada ao "conteúdo da página" e usada para wrapper de mensagens.

2

messages

É um elemento obrigatório para bolhas de mensagens.

3

messages-date

Ele usa o recipiente de carimbo de data para exibir a data e hora da mensagem enviada ou recebida.

4

message

É uma única mensagem a ser exibida.

Partes internas de mensagem única

A tabela a seguir mostra as classes de partes internas de mensagens simples com descrição.

S.No Classes e descrição
1

message-name

Ele fornece o nome do remetente.

2

message-text

Defina o texto com o tipo de bolha.

3

message-avatar

Ele especifica o avatar do remetente.

4

message-label

Ele especifica o rótulo de texto abaixo da bolha.

Classes adicionais para contêiner de mensagem única

A tabela a seguir mostra classes adicionais para a descrição do contêiner de mensagem única.

S.No Classes e descrição
1

message-sent

Ele especifica que a mensagem foi enviada pelo usuário e é exibida com a cor de fundo verde no lado direito.

2

message-received

É utilizado para exibir a única mensagem indicando que a mensagem foi recebida pelo usuário e fica do lado esquerdo com fundo cinza.

3

message-pic

É uma classe adicional para exibição de imagem com uma única mensagem.

4

message-with-avatar

É uma classe adicional para exibir uma única mensagem (recebida ou enviada) com avatar.

5

message-with-tail

Você pode adicionar uma cauda de bolha para uma única mensagem (recebida ou enviada).

Classes adicionais disponíveis para mensagem única

A tabela a seguir mostra as classes disponíveis para uma única mensagem com descrição.

S.No Classes e descrição
1

message-hide-name

É uma classe adicional para ocultar o nome da mensagem de uma única mensagem (recebida ou enviada).

2

message-hide-avatar

É uma classe adicional para ocultar o avatar da mensagem para uma única mensagem (recebida ou enviada).

3

message-hide-label

É uma classe adicional para ocultar o rótulo da mensagem para uma única mensagem (recebida ou enviada).

4

message-last

Você pode usar esta classe para indicar a última mensagem recebida ou enviada na conversa atual por um remetente para uma única mensagem (recebida ou enviada).

5

message-first

Você pode usar esta classe para indicar a primeira mensagem recebida ou enviada na conversa atual por um remetente para uma única mensagem (recebida ou enviada).

Inicializando mensagens com JavaScript

Você pode inicializar as mensagens com JavaScript usando o seguinte método -

myApp.messages(messagesContainer, parameters)

O método tem duas opções -

  • messagesContainer - É um elemento ou string HTML obrigatório que inclui o elemento HTML do contêiner de mensagens.

  • parameters - Especifica um objeto com parâmetros de mensagens.

Parâmetros de mensagens

A tabela a seguir mostra os parâmetros das mensagens com descrição.

S.No Parâmetro e Descrição Tipo Padrão
1

autoLayout

Ele adiciona classes adicionais necessárias a cada mensagem, ativando-a.

boleano verdadeiro
2

newMessagesFirst

Você pode exibir a mensagem na parte superior em vez de exibir na parte inferior, ativando-o.

boleano falso
3

messages

Ele exibe uma matriz de mensagens em que cada mensagem deve ser representada como objeto com parâmetros de mensagem.

matriz -
4

messageTemplate

Ele exibe o modelo de mensagem única.

corda -

Propriedades de mensagens

A tabela a seguir mostra as propriedades das mensagens com descrição.

S.No Descrição da Propriedade
1

myMessages.params

Você pode inicializar os parâmetros passados ​​com o objeto.

2

myMessages.container

Define o elemento DOM7 com um contêiner HTML da barra de mensagens.

Métodos de Mensagens

A tabela a seguir mostra os métodos de mensagens com descrição.

S.No Método e Descrição
1

myMessages.addMessage(messageParameters, method, animate);

A mensagem pode ser adicionada ao início ou ao final usando o parâmetro do método.

Possui os seguintes parâmetros -

  • messageParameters - Fornece parâmetros de mensagem para adicionar.

  • method - É um tipo de string que adiciona mensagem ao início ou ao final do contêiner de mensagens.

  • animate- É um tipo booleano, que adiciona uma mensagem sem qualquer transição ou animação de rolagem, definindo-a como false. Por padrão, será verdade.

2

myMessages.appendMessage(messageParameters, animate);

Ele adiciona uma mensagem ao final do contêiner de mensagem.

3

myMessages.prependMessage(messageParameters, animate);

Ele adiciona uma mensagem ao início do contêiner de mensagem.

4

myMessages.addMessages(messages, method, animate);

Você pode adicionar várias mensagens ao mesmo tempo.

Tem o seguinte parâmetro -

  • messages - Fornece uma matriz de mensagens para adicionar, que deve ser representada como objeto com parâmetros de mensagem.

5

myMessages.removeMessage(message);

É usado para remover a mensagem.

Tem o seguinte parâmetro -

  • message - É um elemento HTML obrigatório ou string que remove o elemento da mensagem.

6

myMessages.removeMessages(messages);

Você pode remover as várias mensagens.

Tem o seguinte parâmetro -

  • messages - É uma matriz necessária com elementos HTML ou string que remove as mensagens.

7

myMessages.scrollMessages();

Você pode rolar as mensagens de cima para baixo e vice-versa, dependendo do primeiro parâmetro da nova mensagem.

8

myMessages.layout();

O layout automático pode ser aplicado às mensagens.

9

myMessages.clean();

É usado para limpar as mensagens.

10

myMessages.destroy();

É usado para destruir as mensagens.

Parâmetros de mensagem única

A tabela a seguir mostra os parâmetros para uma única mensagem com descrição.

S.No Parâmetro e Descrição Tipo Padrão
1

text

Ele define o texto da mensagem, que pode ser uma string HTML.

corda -
2

name

Ele especifica o nome do remetente.

corda -
3

avatar

Ele especifica a string do URL do avatar do remetente.

corda -
4

time

Ele especifica a sequência de tempo da mensagem como '9:45 AM', '18: 35 '.

corda -
5

type

Ele fornece o tipo de mensagem, se ela pode ser enviada ou recebida.

corda enviei
6

label

Ele define o rótulo da mensagem.

corda -
7

day

Fornece a sequência do dia da mensagem como 'domingo', 'segunda', 'ontem' etc.

corda -

Inicializando mensagens com HTML

Você pode inicializar as mensagens com HTML sem JavaScript usando a classe adicional messages-init para mensagens e usar os atributos de dados para passar os parâmetros necessários conforme mostrado no trecho de código fornecido abaixo -

...
   <div class = "page-content messages-content">
      <!-- Initialize the messages using additional "messages-init" class-->
      <div class = "messages messages-init" data-auto-layout = "true" data-new-messages-first = "false">
         ...

      </div>
   </div>
...

Exemplo

O exemplo a seguir demonstra o uso de mensagens no Framework7 -

<!DOCTYPE html>
<html>

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Messages</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               <div data-page = "home" class = "page navbar-fixed toolbar-fixed">
                  
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "left"> </div>
                        <div class = "center">Messages</div>
                        <div class = "right"> </div>
                     </div>
                  </div>
                  
                  <div class = "toolbar messagebar">
                     <div class = "toolbar-inner">
                        <textarea placeholder = "Message"></textarea><a href = "#" class = "link">Send</a>
                     </div>
                  </div>
                  
                  <div class = "page-content messages-content">
                     <div class = "messages">
                        <div class = "messages-date">Friday, Apr 26 <span>10:30</span></div>
                        <div class = "message message-sent">
                           <div class = "message-text">Hello</div>
                        </div>
                        
                        <div class = "message message-sent">
                           <div class = "message-text">Happy Birthday</div>
                        </div>
                        
                        <div class = "message message-received">
                           <div class = "message-name">Smith</div>
                           <div class = "message-text">Thank you</div>
                           <div style = "background-image:url(/framework7/images/person.png)" class = "message-avatar"></div>
                        </div>
                        
                        <div class = "messages-date">Saturday, Apr 27 <span>9:30</span></div>
                        <div class = "message message-sent">
                           <div class = "message-text">Good Morning...</div>
                        </div>
                        
                        <div class = "message message-sent">
                           <div class = "message-text"><img src = "/framework7/images/gm.jpg"></div>
                           <div class = "message-label">Delivered</div>
                        </div>
                        
                        <div class = "message message-received">
                           <div class = "message-name">Smith</div>
                           <div class = "message-text">Very Good Morning...</div>
                           <div style = "background-image:url(/framework7/images/person.png)" class = "message-avatar"></div>
                        </div>
                     </div>
                  </div>
                  
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script>
         var myApp = new Framework7();
         var $$ = Dom7;

         // It indicates conversation flag
         var conversationStarted = false;

         // Here initiliaze the messages
         var myMessages = myApp.messages('.messages', {
            autoLayout:true
         });

         // Initiliaze the messagebar
         var myMessagebar = myApp.messagebar('.messagebar');

         // Displays the text after clicking the button
         $$('.messagebar .link').on('click', function () {
         
            // specifies the message text
            var messageText = myMessagebar.value().trim();
            
            // If there is no message, then exit from there
            if (messageText.length === 0) return;

            // Specifies the empty messagebar
            myMessagebar.clear()

            // Defines the random message type
            var messageType = (['sent', 'received'])[Math.round(Math.random())];

            // Provides the avatar and name for the received message
            var avatar, name;
            
            if(messageType === 'received') {
               name = 'Smith';
            }
            
            // It adds the message
            myMessages.addMessage ({
            
               // It provides the message text
               text: messageText,
            
               // It displays the random message type
               type: messageType,
            
               // Specifies the avatar and name of the sender
               avatar: avatar,
               name: name,
            
               // Displays the day, date and time of the message
               day: !conversationStarted ? 'Today' : false,
               time: !conversationStarted ? (new Date()).getHours() + ':' + (new Date()).getMinutes() : false
            })

            // Here you can update the conversation flag
            conversationStarted = true;
         });

      </script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como messages.html arquivo na pasta raiz do servidor.

  • Abra esse arquivo HTML como http: //localhost/messages.html e a saída será exibida conforme mostrado abaixo.

  • Quando você digita uma mensagem na caixa de mensagem e clica no botão Enviar, isso especifica que sua mensagem foi enviada e é exibida com a cor de fundo verde no lado direito.

  • A mensagem que você recebe aparece no lado esquerdo com o fundo cinza junto com o nome do remetente.

Descrição

Framework7 fornece uma barra de ferramentas redimensionável especial para trabalhar com o sistema de mensagens no aplicativo.

O código a seguir mostra o layout da barra de mensagens -

<div clas = "toolbar messagebar">
   <div clas = "toolbar-inner">
      <textarea placeholder = "Message"></textarea>
      <a href = "#" clas = "link">Send</a>
   </div>
</div>

Na barra de mensagens, o interior da "página" é muito importante e fica à direita de "conteúdo-mensagens" -

<div class = "page toolbar-fixed">
   <!-- messagebar -->
   <div class = "toolbar messagebar">
      <div class = "toolbar-inner">
         <textarea placeholder = "Message"></textarea>
         <a href = "#" class = "link">Send</a>
      </div>
   </div>
   
   <!-- messages-content -->
   <div class = "page-content messages-content">
      <div class = "messages">
         ... messages
      </div>
   </div>
</div>

Você pode usar o seguinte método para inicializar a barra de mensagens com JavaScript -

myApp.messagesbar(messagesbarContainer, parameters)

O método tem duas opções -

  • messagesbarContainer - É um elemento ou string HTML obrigatório que inclui o elemento HTML do contêiner da barra de mensagens.

  • parameters - Especifica um objeto com parâmetros da barra de mensagens.

Por exemplo -

var myMessagebar = app.messagebar('.messagebar', {
   maxHeight: 200
});

Parâmetro Messagebar

maxHeight- É usado para definir a altura máxima da área de texto e será redimensionado dependendo da quantidade de seu texto. O tipo de parâmetro é número e o valor padrão é nulo .

Propriedades da barra de mensagens

A tabela a seguir mostra as propriedades da barra de mensagens -

S.No Propriedades e descrição
1

myMessagebar.params

Você pode especificar o objeto com os parâmetros de inicialização passados.

2

myMessagebar.container

Você pode especificar o elemento dom7 com o elemento HTML do contêiner da barra de mensagens.

3

myMessagebar.textarea

Você pode especificar o elemento dom7 com o elemento HTML textarea da barra de mensagens.

Métodos da barra de mensagens

A tabela a seguir mostra os métodos da barra de mensagens -

S.No Métodos e Descrição
1

myMessagebar.value(newValue);

Ele define o valor / texto da área de texto da barra de mensagens e retorna o valor da área de texto da barra de mensagens, se newValue não é especificado.

2

myMessagebar.clear();

Ele limpa a área de texto e atualiza / redefine o tamanho.

3

myMessagebar.destroy();

Ele destrói a instância da barra de mensagens.

Inicializar Messagebar com HTML

Você pode inicializar a barra de mensagens usando HTML sem métodos e propriedades JavaScript adicionando a classe messagebar-init à .messagebar e pode passar os parâmetros necessários usando atributos de dados .

O código a seguir especifica a inicialização da barra de mensagens com HTML -

<div class = "toolbar messagebar messagebar-init" data-max-height = "200">
   <div class = "toolbar-inner">
      <textarea placeholder = "Message"></textarea>
      <a href = "#" class = "link">Send</a>
   </div>
</div>

Acesso à instância da Messagebar

É possível acessar a instância da barra de mensagens, se você inicializá-la usando HTML; isso é obtido usando a propriedade f7 Message bar de seu elemento contêiner.

var myMessagebar = $$('.messagebar')[0].f7Messagebar;
// Now you can use it
myMessagebar.value('Hello world');

Você pode ver o exemplo da Messagebar, que é explicado neste link

Descrição

As notificações são usadas para mostrar as mensagens necessárias, que aparecem como notificações push (ou locais) do iOS.

A tabela a seguir demonstra o uso de notificações em detalhes -

S.No Uso e descrição de notificações
1 API de notificações de JavaScript

As notificações também podem ser adicionadas ou fechadas com JavaScript usando os métodos de aplicativo relacionados.

2 Layout de notificações

As notificações do Framework7 serão adicionadas usando JavaScript.

3 IOS exemplo

Framework7 permite que você use diferentes tipos de notificações em seu layout iOS.

4 Material de exemplo

As notificações do Framework7 também podem ser usadas no layout do material.

Descrição

O carregamento lento atrasa o processo de carregamento da imagem em uma determinada página. O carregamento lento melhora o desempenho da rolagem, acelera o carregamento da página e economiza tráfego.

Imagens e elementos de carregamento lento devem estar dentro de <div class = "page-content"> rolável para funcionar corretamente.

A tabela a seguir demonstra o uso de carregamento lento -

S.No Uso e descrição de carregamento lento
1 Uso

O carregamento lento pode ser aplicado a imagens, imagens de fundo e com efeito fade-in.

2 Carregamento lento inicial manualmente

Depois de inicializar uma página, se você adicionar imagens de carregamento lento manualmente, o carregamento lento não funcionará e você precisará usar métodos para inicializá-lo.

É possível gatilho imagem carregamento manualmente usando preguiçoso evento em preguiçoso imagem / elemento como mostrado abaixo -

$$('img.lazy').trigger('lazy');

$$('div.lazy').trigger('lazy');

Exemplo

O exemplo a seguir demonstra o uso de carregamento lento no Framework7 -

<!DOCTYPE html>
<html class = "with-statusbar-overlay">

   <head>
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Lazy Load</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            <div class = "pages">
               <div data-page = "home" class = "page navbar-fixed">
                  
                  <div class = "navbar">
                     <div class = "navbar-inner">
                        <div class = "left"> </div>
                        <div class = "center">Lazy Load</div>
                        <div class = "right"> </div>
                     </div>
                  </div>
                  
                  <div class = "page-content">
                     <div class = "content-block">
                        <div class = "content-block-inner">
                           <p> <img data-src = "/framework7/images/pic4.jpg" 
                              width = "100%" class = "lazy lazy-fadeIn"></p>
                           
                           <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
                           sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
                           Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 
                           nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
                           reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
                           pariatur.</p>
                           
                           <p> <img data-src = "/framework7/images/pic5.jpg" 
                              width = "100%" class = "lazy lazy-fadeIn"></p>
                              
                           <p>Sed ut perspiciatis unde omnis iste natus error sit 
                           voluptatem accusantium doloremque laudantium, totam rem aperiam, 
                           eaque ipsa quae ab illo inventore veritatis et quasi architecto 
                           beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia 
                           voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur 
                           magni dolores eos qui ratione voluptatem sequi nesciunt.</p>
                           
                           <p> <img data-src = "/framework7/images/background.jpg" 
                              width = "100%" class = "lazy lazy-fadeIn"></p>
                              
                           <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
                           sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
                           Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 
                           nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
                           reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
                           pariatur.</p>
                           
                           <p> <img data-src = "/framework7/images/pic6.jpg"
                              width = "100%" class = "lazy lazy-fadeIn"></p>
                              
                           <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem 
                           accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab 
                           illo inventore veritatis et quasi architecto beatae vitae dicta sunt 
                           explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut 
                           odit aut fugit, sed quia consequuntur magni dolores eos qui ratione 
                           voluptatem sequi nesciunt.</p>
                           
                           <p> <img data-src = "/framework7/images/pic7.jpg" 
                              width = "100%" class = "lazy lazy-fadeIn"></p>
                           <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, 
                           sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
                           Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 
                           nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
                           reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
                           pariatur.</p>
                           
                           <p> <img data-src = "/framework7/images/pic8.jpg" 
                              width = "100%" class = "lazy lazy-fadeIn"></p>
                              
                           <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
                           Praesent laoreet nisl eget neque blandit lobortis. Sed sagittis risus 
                           id vestibulum finibus. Cras vestibulum sem et massa hendrerit maximus. 
                           Vestibulum suscipit tristique iaculis. Nam vitae risus non eros auctor 
                           tincidunt quis vel nulla. Sed volutpat, libero ac blandit vehicula, est 
                           sem gravida lectus, sed imperdiet sapien risus ut neque.</p>
                           
                           <p><b>Using as background image:</b></p>
                           
                           <div data-background = "/framework7/images/pic7.jpg" 
                              style = "background: #aaa; height:60vw; background-size-cover" 
                              class = "lazy lazy-fadeIn">
                           </div>
                           
                           <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem 
                           accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab 
                           illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. 
                           Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, 
                           sed quia consequuntur magni dolores eos qui ratione voluptatem sequi 
                           nesciunt.</p>
                        </div>
                     </div>
                  </div>
                  
               </div>
            </div>
         </div>
      </div>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
      
      <script>var myApp = new Framework7();</script>
   </body>

</html>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como framework7_lazy_load.html arquivo na pasta raiz do servidor.

  • Abra este arquivo HTML como http: //localhost/framework7_lazy_load.html e a saída é exibida conforme mostrado abaixo.

  • O exemplo especifica o carregamento lento de imagens em que as imagens serão carregadas na página quando você as rolar para baixo.

Descrição

Framework7 fornece diferentes temas de cores para seus aplicativos.

Um tema de cores fornece diferentes tipos de cores de tema usadas para trabalhar com os aplicativos sem problemas, conforme especificado na tabela abaixo -

S.No Tipo e descrição do tema
1 iOS Theme Colors

Você pode usar 10 diferentes temas de cores padrão do iOS para o aplicativo.

2 Cores do tema do material

Framework7 fornece 22 temas de cores de materiais padrão diferentes para o aplicativo.

Aplicando Temas de Cores

O Framework7 permite que você aplique temas de cores em diferentes elementos, como página, bloco de lista, barra de navegação, linha de botões, etc., usando a classe theme- [color] para o elemento pai.

Exemplo

...
</body>

<div class = "page theme-gray">
   ...
</div>

<div class = "list-block theme-blue">
   ...
</div>

<div class = "navbar theme-green">
   ...
</div>

<div class = "buttons-row theme-red">
   ...
</div>

Temas de layout

Você pode usar o tema de layout padrão para seu aplicativo usando dois temas branco e escuro . Os temas podem ser aplicados usando a classe layout- [theme] para o elemento pai.

Exemplo

...
</body>

<div class = "navbar layout-white">
   ...
</div>

<div class = "buttons-row layout-dark">
   ...
</div>

Aulas auxiliares

Framework7 fornece classes auxiliares adicionais, que podem ser usadas fora ou sem os temas listados abaixo -

  • color-[color] - Pode ser usado para alterar a cor do texto do bloco ou a cor do botão, link, ícone etc.

  • bg-[color] - Define a cor de fundo predefinida no bloco ou elemento.

  • border-[color] - Define a cor da borda predefinida no bloco ou elemento.

Descrição

Hairline é uma classe que adiciona borda de 1 px ao redor das imagens usando a classe de borda. Com o lançamento do 1.x, hairlines revisou o trabalho com : after e : before pseudoelementos em vez de usar bordas CSS.

Linhas finas contêm as seguintes regras -

  • :after- Este pseudo elemento é usado para traços inferiores e direitos .

  • :before- Este pseudoelemento é usado para traços superiores e esquerdos .

O seguinte trecho de código mostra o uso do elemento : after .

.navbar:after {
   background-color: red;
}

O seguinte trecho de código remove a barra de ferramentas inferior -

.navbar:after {
   display:none;
}

.toolbar:before {
   display:none;
}

classe "sem fronteiras"

A linha fina será removida usando a classe sem borda e é compatível com Navbar, barra de ferramentas, cartão e seus elementos.

O código a seguir é usado para remover a linha do cabelo da barra de navegação -

<div class = "navbar no-border">
   ...
</div>

Descrição

O Template7 é um mecanismo JavaScript leve e voltado para dispositivos móveis, que representa Ajax e páginas dinâmicas como modelos Template7 com contexto especificado e não requer nenhum script adicional. O Template7 está associado ao Framework7 como um mecanismo de template leve e padrão, que funciona mais rápido para aplicativos.

atuação

O processo de compilar string para a função JS é o segmento mais lento do template7. Portanto, você não precisa compilar o modelo várias vezes, apenas uma vez é suficiente.

//Here initialize the app
var myApp = new Framework7();

// After initializing compile templates on app
var searchTemplate = $('script#search-template').html();
var compiledSearchTemplate = Template7.compile(searchTemplate);

var listTemplate = $('script#list-template').html();
var compiledListTemplate = Template7.compile(listTemplate);

// Execute the compiled templates with required context using onPageInit() method
myApp.onPageInit('search', function (page) {

   // Execute the compiled templates with required content
   var html = compiledSearchTemplate({/*...some data...*/});

   // Do stuff with html
});

Template7 é um mecanismo de template leve usado como uma biblioteca independente sem o Framework7. Os arquivos Template7 podem ser instalados de duas maneiras -

  • Você pode baixar do repositório github Template7 .

  • Ou

  • Você pode instalá-lo usando o seguinte comando via Bower -

bower install template7

Descrição

No Template7, você pode compilar seus modelos automaticamente, especificando atributos especiais em uma tag <script>.

O código a seguir mostra o layout de compilação automática -

<script type = "text/template7" id = "myTemplate">
   <p>Hello, my name is {{name}} and i am {{age}} years old</p>
</script>

Você pode usar os seguintes atributos para inicializar a compilação automática -

  • type = "text/template7" - É usado para dizer ao Template7 para compilar automaticamente e é um tipo de script necessário.

  • id = "myTemplate" - O modelo pode ser acessado por meio do id e é um id do modelo obrigatório.

Para compilação automática, você precisa habilitar a inicialização do aplicativo passando o seguinte parâmetro -

var myApp = new Framework7 ({
   //It is used to compile templates on app init in Framework7
   precompileTemplates: true,
});

Template7.templates / myApp.templates

Os modelos compilados automaticamente podem ser acessados ​​como propriedades de Template7.templates após a inicialização do aplicativo. Também é conhecido como myApp.templates, em que myApp é uma instância inicializada do aplicativo.

Você pode usar os seguintes modelos em nosso arquivo index.html -

<script type = "text/template7" id = "personTemplate">
   <p>Hello, my name is {{name}} and i am {{age}} years old</p>
   <p>I work as {{position}} at {{company}}</p>
</script>
 
<script type = "text/template7" id = "carTemplate">
   <p>I have a great car, it is {{vendor}} {{model}}, made in {{year}} year.</p>
   <p>It has {{power}} hp engine with {{speed}} km/h maximum speed.</p>
</script>

Você também pode acessar modelos em JavaScript após a inicialização do aplicativo -

var myApp = new Framework7 ({
   //Tell Framework7 to compile templates on app init
    precompileTemplates: true
});
 
// Render person template to HTML, its template is already compiled and accessible as 
//Template7.templates.personTemplate
var personHTML = Template7.templates.personTemplate ({
   name: 'King Amit',
   age: 27,
   position: 'Developer',
   company: 'AngularJs'
});
 
// Compile car template to HTML, its template is already compiled and accessible as 
//Template7.templates.carTemplate
var carHTML = Template7.templates.carTemplate({
   vendor: 'Honda',
   model: 'city',
   power: 1200hp,
   speed: 300
});

Descrição

Template7 é um mecanismo de template JavaScript voltado para dispositivos móveis com sintaxe similar a handlebars.js . É um mecanismo de template padrão ultraleve e extremamente rápido no Framework7.

Primeiro, precisamos passar o seguinte parâmetro na inicialização do aplicativo que renderiza todas as páginas Ajax e dinâmicas como modelo Template7 -

var myApp = new Framework7 ({
   template7Pages: true // enable Template7 rendering for Ajax and Dynamic pages
});
S.No Uso e descrição das páginas do modelo 7
1 Dados de modelos / páginas

Você pode passar os dados / contexto necessários para páginas específicas, especificando todos os dados das páginas no parâmetro template7Data , enviado na inicialização de um aplicativo.

2 Passar Contexto Personalizado

O Framework7 permite que você passe o contexto personalizado para qualquer página dinâmica ou qualquer Ajax carregado.

3 Carregar modelos diretamente

Você pode renderizar e carregar modelos instantaneamente como páginas dinâmicas.

4 Consulta de URL

Se você estiver usando o Template7 para renderizar páginas Ajax, seu contexto sempre será estendido com a propriedade especial url_query .

Exemplo

O exemplo a seguir fornece os links, que exibem as informações do usuário, como detalhes do usuário, preferências do usuário, etc. quando você clica nesses links.

index.html

<!DOCTYPE html>
<html>

   <head>
      <meta charset = "utf-8">
      <meta name = "viewport" content = "width = device-width, initial-scale = 1, 
         maximum-scale = 1, minimum-scale = 1, user-scalable = no, minimal-ui" />
      <meta name = "apple-mobile-web-app-capable" content = "yes" />
      <meta name = "apple-mobile-web-app-status-bar-style" content = "black" />
      <title>Framework7</title>
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.min.css" />
      <link rel = "stylesheet" 
         href = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/css/framework7.ios.colors.min.css" />
   </head>

   <body>
      <div class = "views">
         <div class = "view view-main">
            
            <div class = "navbar">
               <div class = "navbar-inner">
                  <div class = "center sliding">Template7 Pages</div>
               </div>
            </div>
            
            <div class = "pages navbar-through toolbar-through">
               <div data-page = "index" class = "page">
                  <div class = "page-content">
                     <div class = "list-block">
                        <ul>
                           <li>
                              //plain data objects allow to pass custom context to loaded page using 'data-context-name' attribute
                              <a href = "#" data-template = "about" data-context-name = "about" class = "item-link item-content">
                                 <div class = "item-inner">
                                    //provides link as 'About'
                                    <div class = "item-title">About</div>
                                 </div>
                              </a>
                           </li>
                           
                           <li>
                              //a context name for this link we pass context path from template7Data root
                              <a href = "/framework7/src/likes.html" class = "item-link item-content">
                                 <div class = "item-inner">
                                    //provides link as 'Likes'
                                    <div class = "item-title">Likes</div>
                                 </div>
                              </a>
                           </li>
                        </ul>
                     </div>
                  </div>
               </div>
            </div>
            
         </div>
      </div>
      
      <script type = "text/template7" id = "about">
         <div class = "navbar">
            <div class = "navbar-inner">
               <div class = "left sliding">
                  <a href = "#" class = "back link"> <i class = "icon icon-back"></i><span>Back</span></a>
               </div>
            
               <div class = "center sliding">About Me</div>
               <div class = "right">
                  <a href = "#" class = "link icon-only open-panel"> <i class = "icon icon-bars"></i></a>
               </div>
            </div>
         </div>
         
         <div class = "pages">
            <div data-page = "about" class = "page">
               <div class = "page-content">
                  <div class = "content-block">
                     <div class = "content-block-inner">
                        //displays the details of the user by using the 'my-app.js' file
                        <p>Hello, i am <b>{{firstname}} {{lastname}}</b>, 
                           <b>{{age}}</b> years old and working as 
                           <b>{{position}}</b> at <b>{{company}}</b>.</p>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </script>
      
      <script type = "text/javascript" 
         src = "https://cdnjs.cloudflare.com/ajax/libs/framework7/1.4.2/js/framework7.min.js"></script>
         
      <script type = "text/javascript" 
         src = "/framework7/src/js/my-app.js">
      </script>
   </body>

</html>

my-app.js

// Initialize your app
var myApp = new Framework7 ({
   animateNavBackIcon: true,
   
   // Enable templates auto precompilation
   precompileTemplates: true,
   
   // Enabled rendering pages using Template7
   template7Pages: true,
   
   // Specify Template7 data for pages
   template7Data: {
      //provides the url for different page with data-page = "likes"
      'url:likes.html': {
         likes: [
            {
               title: 'Nelson Mandela',
               description: 'Champion of Freedom'
            },
            
            {
               title: 'Srinivasa Ramanujan',
               description: 'The Man Who Knew Infinity'
            },
            
            {
               title: 'James Cameron',
               description: 'Famous Filmmaker'
            }
         ]
      },
      about: {
         firstname: 'William ',
         lastname: 'Root',
         age: 27,
         position: 'Developer',
         company: 'TechShell',
      }
   }
});

// Add main View
var mainView = myApp.addView('.view-main', {
   // Enable dynamic Navbar
   dynamicNavbar: true
});

likes.html

<div class = "navbar">
   <div class = "navbar-inner">
      <div class = "left sliding">
         <a href = "#" class = "back link"> <i class = "icon icon-back"></i><span>Back</span></a>
      </div>
      
      <div class = "center sliding">Likes</div>
      <div class = "right">
         <a href = "#" class = "link icon-only open-panel"> <i class = "icon icon-bars"></i></a>
      </div>
   </div>
</div>

<div class = "pages">
   <div data-page = "likes" class = "page">
      <div class = "page-content">
         <div class = "content-block-title">My Likes</div>
         <div class = "list-block media-list">
         
            //iterate through likes
            <ul>
               {{#each likes}}
                  <li class = "item-content">
                     <div class = "item-inner">
                        <div class = "item-title-row">
                           //displays the title and description by using the 'my-app.js' file
                           <div class = "item-title">{{title}}</div>
                        </div>
                        <div class = "item-subtitle">{{description}}</div>
                     </div>
                  </li>
               {{/each}}
            </ul>
         </div>
      </div>
   </div>
</div>

Resultado

Vamos realizar as seguintes etapas para ver como funciona o código fornecido acima -

  • Salve o código HTML fornecido acima como index.html arquivo na pasta raiz do servidor.

  • Abra esse arquivo HTML como http: //localhost/index.html e a saída será exibida conforme mostrado abaixo.

  • O exemplo fornece os links, que exibem as informações do usuário, como detalhes do usuário, que o usuário gosta quando você clica nesses links.

Descrição

Quando você toca nos links e botões, eles são destacados. Isso é feito pelo estado ativo no Framework7.

  • Ele se comporta como um aplicativo nativo, não como um aplicativo da web.
  • Possui uma biblioteca de cliques rápidos integrada e deve ser ativada.
  • A classe de estado ativo é igual ao seletor CSS : ativo .
  • O estado ativo é habilitado adicionando a classe watch-active-state ao elemento <html> .

O código a seguir é usado para o estado ativo no estilo CSS -

/* Usual state */
.my-button {
   color: red;
}

/* Active/tapped state */
.my-button.active-state {
   color: blue;
}

O código a seguir mostra a compatibilidade de fallback, quando o estado ativo ou cliques rápidos está desativado -

/* Usual state */
.my-button {
   color: red;
}

/* Active/tapped state */
.my-button.active-state {
   color: blue;
}

/* Fallback, when active state is disabled */
html:not(.watch-active-state) .my-button:active {
   color: blue;
}

Descrição

O evento Tap hold é usado para acionar (habilitar) após um evento sustentado e completo de toque, portanto, é chamado de evento tap hold . O Tab Hold é embutidoFast Clicks biblioteca.

Os seguintes parâmetros são usados ​​para desabilitar ou habilitar e configurados por padrão -

S.No Parâmetro e Descrição Tipo Padrão
1

tapHold

Para habilitar eventos de retenção por toque quando for definido como verdadeiro.

boleano falso
2

tapHoldDelay

Ele especifica a duração de segurar o tap antes de disparar o evento de taphold no elemento alvo.

número 750
3

tapHoldPreventClicks

O evento de toque em espera não será disparado após clicar no evento.

boleano verdadeiro

O código a seguir é usado para habilitar eventos de retenção de toque -

var myApp = new Framework7 ({
   tapHold: true //enable tap hold events
});
 
var $$ = Dom7;
 
$$('.some-link').on('taphold', function () {
   myApp.alert('Tap hold fired!');
});

Descrição

Touch Ripple é um efeito compatível apenas com o tema material Framework7. Por padrão, ele está habilitado no tema material e você pode desabilitá-lo usando o parâmetro materialRipple: false .

Elementos ondulantes

Você pode ativar os elementos de ondulação para corresponder a alguns seletores CSS, como -

  • ripple
  • a.link
  • a.item-link
  • .button
  • .tab-link
  • .label-radio
  • .label-caixa de seleção etc.

Eles são especificados no parâmetro materialRippleElements . Você precisa habilitar a ondulação de toque , adicionar o seletor do elemento ao parâmetro materialRippleElements para usar o efeito de ondulação ou apenas usar a classe de ondulação .

Cor da onda ondulada

A cor do ripple pode ser alterada no elemento adicionando a classe ripple- [color] ao elemento.

Por exemplo -

<a href = "#" class = "button ripple-orange">Ripple Button</a>

ou você pode definir a cor da onda ondulada usando o CSS como mostrado abaixo -

.button .ripple-wave {
   background-color: #FFFF00;
}

Desativar elementos ondulação

Você pode desativar o ripple para alguns elementos especificados adicionando a classe no-ripple a esses elementos. Por exemplo -

<a href = "#" class = "button no-ripple">Ripple Button</a>