bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


materialize

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
materialize [2023/02/01 20:13]
enric_mieza_sanchez [Primera plantilla]
materialize [2025/11/26 19:55] (actual)
enric_mieza_sanchez [Primera plantilla Cordova + Materialize]
Línia 6: Línia 6:
  
 Referències: Referències:
-  * Web principal: https://materializecss.com+  * Web antiga: https://materializecss.com 
 +  * Web actual: https://materializeweb.com
   * [[https://fonts.google.com/icons|Material icons]]   * [[https://fonts.google.com/icons|Material icons]]
-  * [[https://materializecss.com/getting-started.html|Getting started - templates]].+  * [[https://materializecss.com/getting-started.html|Getting started - templates (antic)]]. 
 +  * [[https://github.com/materializecss/materialize-docs/tree/main/templates|Getting started - templates (actual)]].
  
-{{ materialize.svg }}+ 
 +{{ materialize.svg?300 }}
  
  
Línia 20: Línia 23:
 ===== Context ===== ===== Context =====
 Tenim bàsicament 2 interessos per treballar amb Materialize CSS: Tenim bàsicament 2 interessos per treballar amb Materialize CSS:
- * Si estem treballant en una web que volem que sigui responsive. +  * Si estem treballant en una web que volem que sigui responsive. 
- * Si estem treballant en aplicacions mòbils basades en HTML i CSS com [[Cordova]].+  * Si estem treballant en aplicacions mòbils basades en HTML i CSS com [[Cordova]].
  
 Aquest article treballa Materialize assumint que estem en un context del //framework// [[Cordova]] , pel què caldria que reviséssiu primer aquest article per seguir aquestes explicacions. Aquest article treballa Materialize assumint que estem en un context del //framework// [[Cordova]] , pel què caldria que reviséssiu primer aquest article per seguir aquestes explicacions.
Línia 28: Línia 31:
  
 ===== Grid (la quadrícula) ===== ===== Grid (la quadrícula) =====
-La part més important del Material Design, en el què respecta a la //responsiveness//, és el que anomenem la [[https://materializecss.com/grid.html|Grid]].+La part més important del Material Design, en el què respecta a la //responsiveness//, és el que anomenem la [[https://materializeweb.com/grid.html|Grid]].
  
 El referent històric més conegut és Twitter Bootstrap, un dels //frameworks// CSS més exitosos. Va definir l'espai visual en 12 columnes, que és el que ens trobem encara en MaterializeCSS. El referent històric més conegut és Twitter Bootstrap, un dels //frameworks// CSS més exitosos. Va definir l'espai visual en 12 columnes, que és el que ens trobem encara en MaterializeCSS.
  
 <WRAP todo> <WRAP todo>
-  - Llegeix la [[https://materializecss.com/grid.html|documentació de la Grid de MaterializeCSS]] per veure exemples. +  - Llegeix la [[https://materializeweb.com/grid.html|documentació de la Grid de MaterializeCSS]] per veure exemples. 
-  - Descarrega el //starter template// de la secció [[https://materializecss.com/getting-started.html|getting started]].+  - Descarrega el //starter template// de la secció [[https://materializeweb.com/getting-started.html|getting started]].
   - Modifica'l i crea 6 elements amb icones (els ''div'' amb ''class='col' '') que responguin de la següent manera:   - Modifica'l i crea 6 elements amb icones (els ''div'' amb ''class='col' '') que responguin de la següent manera:
     * (s)mall screen: 1 sol element     * (s)mall screen: 1 sol element
Línia 40: Línia 43:
     * (l)arge screen: 4 elements     * (l)arge screen: 4 elements
   - Aplica noves icones de [[https://fonts.google.com/icons|material-icons]].   - Aplica noves icones de [[https://fonts.google.com/icons|material-icons]].
 +  - Crea títol i text per a 6 notícies (pots utilitzar ChatGPT o similars).
 +  - Crea imatges amb IA per a les notícies.
 +  - Formata les notícies amb l'efecte [[https://materializeweb.com/cards.html|Card Reveal de Materialize CSS]].
 </WRAP> </WRAP>
  
Línia 56: Línia 62:
 ===== Primera plantilla Cordova + Materialize ===== ===== Primera plantilla Cordova + Materialize =====
 <WRAP info> <WRAP info>
-L'objectiu ara serà crear una aplicació Cordova que utilitzi correctament la plantilla de MaterializeCSS. Necessitem fusionar adequadament els arxius d'ambdós //templates//.+L'objectiu ara serà crear una aplicació Cordova que utilitzi correctament MaterializeCSS. Necessitem fusionar adequadament els arxius de Cordova i Materialize.
 </WRAP> </WRAP>
  
-Descarrega el Starter-Template al final d'aquesta pàgina: https://materializecss.com/getting-started.html+<WRAP download> 
 +Ves a [[https://materializeweb.com/getting-started.html|Getting Started]] i descarrega els arxius de la darrera versió de Materialize. Afegeix-los a la carpeta ''www'' del projecte Cordova. 
 +</WRAP>
  
-Copia els arxius CSS i JS a les carpetes del projecte cordova (www). +A partir d'aquesta podrem elaborar el projecte base per una app mòbil Cordova:
- +
-Pel què fa a index.html no el podem copiar directament ja que necessitem barrejar els dos arxius. +
- +
-Fes un backup del template ''index.html'' de Cordova i llavors sí, copia ''index.html'' del template de MaterializeCSS +
- +
-Comprova que el visualitzem correctament: +
-  $ cordova platform add browser +
-  $ cordova run browser +
- +
-Copiem els ''tags meta'' que hi ha la capçalera per ajustar les condicions de seguretat de Cordova. A més, caldrà afegir l'origen de les fonts que necessita el template, en particular ''https://code.jquery.com https://fonts.gstatic.com'' i ''https://fonts.googleapis.com''. Al final, aquesta secció hauria de quedar aproximadament així:+
  
 <WRAP prewrap> <WRAP prewrap>
 <file html index.html> <file html index.html>
-  <meta http-equiv="Content-Security-Policy" content="default-src https://code.jquery.com https://fonts.gstatic.com 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src https://fonts.googleapis.com 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;"> +<!DOCTYPE html> 
-  <meta name="format-detection" content="telephone=no"> +<html> 
-  <meta name="msapplication-tap-highlight" content="no"> +  <head> 
-  <meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover"> +    <meta charset="utf-8"> 
-  <meta name="color-schemecontent="light dark"> +    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: https://ssl.gstatic.com https://fonts.gstatic.com https://cdn.jsdelivr.net https://fonts.googleapis.com 'unsafe-eval'; style-src https://cdn.jsdelivr.net https://fonts.googleapis.com 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;"> 
-</file+    <meta name="format-detection" content="telephone=no"> 
-</WRAP>+    <meta name="msapplication-tap-highlight" content="no"> 
 +    <meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover"> 
 +    <title>Materialize 2025</title> 
 +    <!-- Fonts Google --> 
 +    <link 
 +      href="https://fonts.googleapis.com/icon?family=Material+Icons" 
 +      rel="stylesheet" 
 +    /> 
 +    <!-- CSS materialize --> 
 +    <link rel="stylesheet" href="css/materialize.min.css/
 +    <!-- CSS personalitzat --> 
 +    <link rel="stylesheet" href="css/style.css" media="screen,projection" /> 
 +  </head> 
 +  <body> 
 +   
 +    <!-- AQUI VAN ELS CONTINGUTS -->
  
-Engega-ho en el browser i assegura't que no hi ha cap missatge d'error a la consola JavaScript i que els continguts es veuen bé. Comprova també que si redueixes la pantalla del navegador o et poses en mode responsive enlloc del menú superior **ens apareix el clàssic "hamburger menu"**. 
  
-Afegeix també els scripts al final de la pàgina, hauria de quedar algo així: +    <!-- cordova lib --> 
- +    <script src="cordova.js"></script> 
-<WRAP prewrap> +    <!-- Compiled and minified JavaScript --> 
-<file html index.html> +    <script src="js/materialize.min.js"></script> 
-  <!--  Scripts  --> +    <!-- init --> 
-  <script src="cordova.js"></script> +    <script src="js/index.js"></script> 
-  <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> +         
-  <script src="js/materialize.js"></script> +  </body> 
-  <script src="js/init.js"></script>+</html>
 </file> </file>
 </WRAP> </WRAP>
  
-A ''init.js'' li afegirem el codi que també tenim a l'aplicació original de Cordova, hauria de quedar així: +A ''index.js'' li afegirem el codi que també tenim a l'aplicació original de Cordova, hauria de quedar així:
- +
-<file javascript init.js> +
-(function($){ +
-  $(function(){ +
-    $('.sidenav').sidenav(); +
-  }); // end of document ready +
-})(jQuery); // end of jQuery name space +
  
 +<file javascript index.js>
 +// Wait for the deviceready event before using any of Cordova's device APIs.
 +// See https://cordova.apache.org/docs/en/latest/cordova/events/events.html#deviceready
 document.addEventListener('deviceready', onDeviceReady, false); document.addEventListener('deviceready', onDeviceReady, false);
  
Línia 115: Línia 122:
     //document.getElementById('deviceready').classList.add('ready');     //document.getElementById('deviceready').classList.add('ready');
 } }
 +
 +// init Materialize
 +M.AutoInit();
 </file> </file>
  
-Arrenquem de nou amb el browser i comprovem que a la consola de Javascript no tenim cap error.+Arrenquem de nou amb el //browser// i comprovem que a la consola de Javascript no tenim cap error.
  
-\\+<WRAP important> 
 +Si us dona un error tipus: "Failed to load resource cordova_plugins.js".
  
 +Una [[https://stackoverflow.com/questions/18486362/cordova-plugins-js-is-missing|solució que apareix a Stackoverflow]] és instal·lar el //package// [[https://www.npmjs.com/package/cordova-plugin-device|cordova-plugin-device]]:
  
-===== Pestanyes d'aplicació (tabs) ===== +  $ cordova plugin add cordova-plugin-device 
-El primer que necessitarem per tenir una aplicació mòbil decent serà disposar de diversos TABs o pestanyes o seccions de l'aplicació.+</WRAP>
  
-[[https://materializecss.com/tabs.html#swipeable|Materialize implementa tabs amb efecte de desplaçament]] força vistosos.+\\
  
-Elimina els continguts interns del projecte (deixa els encapçalamentsnavbar sidenav) i implementa els tabs "swipeables" amb les 3 pàgines.+===== NavbarSidenav Tabs =====
  
-Aquest component (els tabs) necessita ser inicialitzat amb les opcions adequadesPer activar-ho hauràs d'aplicar un codi similar a això a ''init.js'' (observa les ''options'' perquè s'activi l'efecte de //swip//):+Si has seguit fins aquí, hauries de tenir una app buida.
  
-<sxh js> +Aplicarem una Navbar i Tabs per disposar d'una plantilla d'app força complerta: 
-    var options = { "swipeable"true }; +  * [[https://materializeweb.com/navbar.html|Navbar]]: barra de menú de navegació superior. 
-    var el = document.getElementById('tabs'); +  * [[https://materializeweb.com/tabs.html|Tabs]]: accés a les diferents pantalles de l'aplicació
-    var instance = M.Tabs.init(el, options); +  * [[https://materializeweb.com/sidenav.html|Sidenav]]: menú lateral que s'activa al prémer el botó de "menú hamburguesa" o quan llisquem des de la banda esquerra.
-</sxh>+
  
-Com pots veure, Materialize pot utilitzar jQuery però tampoc és imprescindible (a la majoria de plugins).+Si seguim els exemples bàsics hauríem d'aconseguir una app com aquesta:
  
-Si volem utilitzar la versió jQuery sería d'aquesta manera:+{{materialize-navbar-tabs.png?200|Navbar + Tabs}} 
 +{{materialize-sidenav.png?200|Sidenav}}
  
-<sxh js> 
-    $('.tabs').tabs({"swipeable":true}); 
-</sxh> 
  
-I finalment, per aconseguir que cadascuna de les seccions ocupin l'alçada de la pantallacaldrà afegir aquestes línies al l'arxiu ''style.css'':+<WRAP todo> 
 +Segueix totes les passes indicades per disposar d'una app Cordova amb SidenavSidebar i Tabs.
  
-<file css style.css> +Comprova que funciona correctament
-/* +  - Revisa que no hi hagi missatges d'error a la consola del //browser//. 
- * ...deixar els continguts que existissin prèviament... +  - Comprova que el menú lateral funciona quan cliquem el //hamburger menu//. 
- */ +</WRAP>
- +
-html, body { +
-  height100vh; +
-  width: 100%; +
-  display: flex; +
-  justify-content: space-between; +
-  flex-flow: column; +
-}+
  
-.tabs-content { +\\
-  height: 100%; +
-  overflow-y: scroll !important; +
-+
-</file>+
  
  
-\\ +===== Obrir una pestanya des del codi (canvi de pantalla) ===== 
- +Si volem obrir una pestanya des d'una altra, caldrà fer una crida a l'objecte ''Tabs''.
-==== Obrir una pestanya ==== +
-Si volem obrir una pestanya des d'una altra, caldrà fer una crida a l'objecte Tabs. Inicialment (a la versió 0.100) aquest objecte només es podia utilitzar amb jQuery, però des de la v1.0.0 s'ha dissenyat per no dependre de jQuery. Algunes funcions continuen podent-se cridar amb jQuery, però concretament aquesta canvi de pestanya el mostrem amb JS normal (sense jQuery).+
  
-Mirant la [[https://materializecss.com/tabs.html|doc de Tabs]] veurem que per saltar de pestanya farem el següent:+Mirant la [[https://materializeweb.com/tabs.html|doc de Tabs]] veurem que per saltar de pestanya farem el següent:
  
 <code javascript> <code javascript>
-// canviem al tab 2 +// canviem al tab 3 
-var tabs = document.getElementById("tabs-swipe-demo");+var tabs = document.getElementById("id_element_tab_ul");
 var tabsInstance = M.Tabs.getInstance(tabs); var tabsInstance = M.Tabs.getInstance(tabs);
-tabsInstance.select("tab2");+tabsInstance.select("id_del_tab3");
 </code> </code>
  
 Si ho volem fer amb jQuery també tenim aquesta alternativa, més concisa: Si ho volem fer amb jQuery també tenim aquesta alternativa, més concisa:
 <code javascript> <code javascript>
-$('#tabs-swipe-demo').tabs("select", "tab2");+$('#tabs-swipe-demo').tabs("select", "id_del_tab3");
 </code> </code>
  
 \\ \\
  
-===== Menú lateral (sidenav) ===== 
  
-Mira el [[https://materializecss.com/sidenav.html|plugin Sidenav de MaterializeCSS]] per veure les diverses opcions de la Navbar que ja porta implementada la plantilla de Starter Template.+===== Mes widgets! ===== 
 + 
 +Per tenir una aplicació a full ens caldran aquest tipus de recursos, molt ben estilitzats. Fes-li un cop d'ull a tots ells, imprescindibles! 
 + 
 +  * [[https://materializeweb.com/grid.html|Grid i containers]] per aprendre com administrar els continguts del cos de forma responsive. 
 +  * [[https://materializeweb.com/collections.html|Collections]] per fer llistes d'elements. 
 +  * Els imprescindibles [[https://materializeweb.com/buttons.html|Buttons]] amb icones i efectes xaxis. 
 +  * El famós [[https://materializeweb.com/floating-action-button.html|Floating-Action Button]] a baix a la dreta, amb desplegable d'accions i tot. 
 +  * Obrir un [[https://materializeweb.com/modals.html|diàleg modal]] per demanar accions a l'usuari sense canviar de pàgina o pestanya. 
 + 
 +I no deixeu d'investigar la pàgina de materializecss.com , està plena de recursos ben fets.
  
-Implementa un menú més complert amb diversos menus disponibles. 
  
 \\ \\
  
-===== Mes widgets! =====+===== Pestanyes lliscants =====
  
-Per tenir una aplicació a full ens caldran aquest tipus de recursos, molt ben estilitzatsFes-li un cop d'ull a tots ells, imprescindibles!+[[https://materializeweb.com/tabs.html#swipeable|Materialize implementa tabs amb efecte de desplaçament]] força vistosos.
  
-  * [[https://materializecss.com/grid.html|Grid i containers]] per aprendre com administrar els continguts del cos de forma responsive. +Elimina els continguts interns del projecte (deixa els encapçalamentsnavbar sidenav) i implementa els tabs "swipeables" amb les 3 pàgines.
-  * [[https://materializecss.com/collections.html|Collections]] per fer llistes d'elements. +
-  * Els imprescindibles [[https://materializecss.com/buttons.html|Buttons]] amb icones i efectes xaxis. +
-  * El famós [[https://materializecss.com/floating-action-button.html|Floating-Action Button]] a baix a la dretaamb desplegable d'accions tot. +
-  * Obrir un [[https://materializecss.com/modals.html|diàleg modal]] per demanar accions a l'usuari sense canviar de pàgina o pestanya.+
  
-I no deixeu d'investigar la pàgina de materializecss.com , està plena de recursos ben fets.+Aquest component (els tabs) necessita ser inicialitzat amb les opcions adequades. Per activar-ho hauràs d'afegir aquest codi al ''init.js'' (observa les ''options'' perquè s'activi l'efecte //swipe//):
  
 +<code javascript>
 +window.onload = (event) => {
 +    console.log("Pàgina carregada completament. Inicialitzant..");
 +    var options = { "swipeable": true };
 +    var el = document.getElementsByClassName('tabs');
 +    var instance = M.Tabs.init(el, options);
 +};
 +</code>
 +
 +I finalment, per aconseguir que cadascuna de les seccions ocupin l'alçada de la pantalla, caldrà afegir aquestes línies al l'arxiu ''style.css'':
 +
 +<file css style.css>
 +/*
 + * ...deixar els continguts que existissin prèviament...
 + */
 +
 +/* body fix: perquè ocupi tota la pantalla */
 +html, body {
 +  height: 100vh;
 +  width: 100%;
 +  display: flex;
 +  justify-content: space-between;
 +  flex-flow: column;
 +}
 +
 +/*
 + * afegir la class tabs-content a cada div de contingut
 + * per solucionar el contingut scollable de cada pestanya
 + */
 +.tabs-content {
 +  height: 100%;
 +  overflow-y: scroll !important;
 +}
 +</file>
 +
 +
 +\\
  
  
materialize.1675282421.txt.gz · Darrera modificació: 2023/02/01 20:13 per enric_mieza_sanchez