How do I get Started with jQuery Mobile?

Skab Moderne, Responsivt Webdesign med jQuery Mobile

26/05/2023

Rating: 4.68 (4895 votes)

I en verden, hvor mobiltelefoner og tablets er blevet primære redskaber for internetadgang, er det afgørende, at webapplikationer leverer en fejlfri og tilpasset oplevelse på tværs af alle enheder. Dette er kernen i responsivt webdesign, en tilgang der sikrer, at dit indhold ser godt ud og fungerer optimalt, uanset skærmstørrelse. jQuery Mobile er et robust HTML5-baseret brugerfladesystem, der er specifikt designet til at gøre netop dette: at skabe responsive websteder og apps, der er tilgængelige på smartphones, tablets og desktops. Men hvad hvis du ønsker at give din jQuery Mobile-applikation et endnu mere moderne og strømlinet udseende, eller integrere rige, interaktive komponenter som avancerede tabeller og diagrammer? Svaret ligger i at kombinere jQuery Mobile med Flat-UI-temaer og kraftfulde UI-biblioteker som jQWidgets.

Will you like jQuery Mobile theme based on flat-UI?
We think you will like them. Theme for jQuery Mobile based on Flat-UI. We are going to use master branch to keep up to date with jQuery Mobile versions. Previous versions will be moved to corresponding branches. master - jQuery Mobile version 1.4 - currently in progress not production ready yet
Indholdsfortegnelse

jQuery Mobile og Flat-UI Temaet – Et Friskt Look til Din Applikation

Flat-UI er en designfilosofi, der har vundet enorm popularitet for sit minimalistiske, rene og brugervenlige udtryk. Den fokuserer på klare linjer, enkle former, levende farver og en overordnet æstetik, der prioriterer funktionalitet og intuitivitet. Når du anvender et Flat-UI-tema til jQuery Mobile, løfter du din applikations visuelle brugeroplevelse til et nyt niveau, hvilket giver den et moderne og professionelt præg, der appellerer til nutidens brugere. Det handler om at fjerne unødvendige detaljer og fokusere på det væsentlige, hvilket resulterer i en mere behagelig og effektiv interaktion.

Implementeringen af et Flat-UI-tema som det, der er baseret på Flat-UI, er ligetil. Du skal blot kopiere de nødvendige filer – jquery.mobile.flatui.css, skrifttyper og billeder – fra den genererede mappe til dit projekt. Derefter inkluderer du et link til jquery.mobile.flatui.css i din HTML-fil, ligesom du ville gøre med ethvert andet stylesheet:

<link rel="stylesheet" type="text/css" href="jquery.mobile.flatui.css" />

Denne enkle linje transformerer øjeblikkeligt udseendet af dine jQuery Mobile-komponenter, hvilket giver dem et friskt og moderne Flat-UI-udseende.

For udviklere, der ønsker at tilpasse temaet yderligere, tilbyder Flat-UI-temaet også fleksibilitet. Du kan tilføje nye farveprøver (swatches) eller justere eksisterende farver ved at tilføje en ny Stylus-fil under src/stylus/swatches/. Derefter kan du køre Grunt fra din kommandolinje for at kompilere dine ændringer. Denne opsætning kræver, at du har Node.js og Grunt CLI installeret:

brew install node
npm install -g grunt-cli
cd til projektets mappe
npm install
grunt watch

Dette giver dig mulighed for at foretage dybtgående ændringer i temaets udseende og sikre, at det passer perfekt til dit brands identitet eller dine designpræferencer. Udviklingsprocessen for dette tema følger også en klar versionsstyringsstrategi. Master-grenen holder sig opdateret med de seneste jQuery Mobile-versioner, mens tidligere versioner, som for eksempel 1.3.1 og 1.3.0, bevares i deres egne dedikerede grene (jqm-1.3.1 og jqm-1.3.0). Dette sikrer kompatibilitet og stabilitet for forskellige projektbehov.

Responsiv Layouts med jQuery Mobile og jQWidgets – En Kraftfuld Kombination

Ud over at forbedre det visuelle udtryk er evnen til at tilpasse layoutet baseret på skærmstørrelse afgørende for en god brugeroplevelse. Her skinner kombinationen af jQuery Mobile og jQWidgets virkelig igennem. jQWidgets er et omfattende bibliotek af avancerede UI-komponenter, herunder robuste datatabeller (jqxGrid) og interaktive diagrammer (jqxChart), som kan integreres problemfrit med jQuery Mobile for at skabe dynamiske og responsive layouts.

Forestil dig et scenario, hvor du har en applikation, der viser en datatabel og et diagram side om side på en stor skærm. På en mindre skærm ville dette layout være uhensigtsmæssigt. Med jQuery Mobile og jQWidgets kan du automatisk omarrangere disse komponenter til at blive vist oven på hinanden, hvilket sikrer optimal læsbarhed og interaktion.

De Nødvendige Byggesten – Opsætning af Referencer

For at begynde at bygge dit responsive layout skal du først oprette en ny HTML-side og inkludere de nødvendige JavaScript- og CSS-filer. Det er vigtigt at inkludere dem i den korrekte rækkefølge:

  • jQuery:jquery-1.11.1.min.js. Dette er kernen, som både jQuery Mobile og jQWidgets bygger på. Det skal altid inkluderes først.
  • jQuery Mobile:jquery.mobile-1.4.2.min.css og jquery.mobile-1.4.2.min.js. Disse filer leverer jQuery Mobiles responsive UI-system og dets indbyggede komponenter og funktionalitet. Du skal downloade dem fra jQuery Mobiles officielle hjemmeside.
  • jQWidgets: En række specifikke filer, afhængigt af hvilke komponenter du ønsker at bruge. For jqxGrid og jqxChart skal du bruge:
    • jqx.base.css: Basis-CSS for alle jQWidgets-komponenter.
    • jqxcore.js: Kernen i jQWidgets-biblioteket.
    • jqxdata.js: Nødvendig for databehandling i komponenter som jqxGrid.
    • jqxbuttons.js, jqxscrollbar.js, jqxmenu.js, jqxlistbox.js, jqxdropdownlist.js: Understøttende komponenter, der ofte bruges af grid og chart.
    • jqxgrid.js: JavaScript-filen til jqxGrid.
    • jqxgrid.selection.js, jqxgrid.columnsresize.js, jqxgrid.filter.js, jqxgrid.sort.js, jqxgrid.pager.js, jqxgrid.grouping.js: Specifikke plugins til jqxGrid, der tilføjer funktionalitet som udvælgelse, kolonnetilpasning, filtrering, sortering, sideinddeling og gruppering.
    • jqxchart.js: JavaScript-filen til jqxChart.

Ved at vælge kun de nødvendige jQWidgets-filer sikrer du, at din applikation indlæser så lidt kode som muligt, hvilket forbedrer indlæsningstiden og ydeevnen, især på mobile enheder.

HTML-Strukturen – Grundlaget for Dit Responsive Layout

Næste skridt er at opbygge HTML-strukturen, der vil holde dine jQWidgets-komponenter. jQuery Mobile bruger specifikke data-role-attributter og CSS-klasser til at definere sider, header og gitterlayouts.

<body>
<div data-role="page">
<div data-role="header">
<h1>Integration af jQWidgets med jQuery Mobile</h1>
</div>
<div class="ui-grid-a my-breakpoint">
<div class="ui-block-a" style="padding: 10px;">
<div id="jqxGrid"></div>
</div>
<div class="ui-block-b" style="padding: 10px;">
<div id="jqxChart" style="width: 100%; height: 402px;"></div>
</div>
</div>
</div>
</body>

Lad os nedbryde denne struktur:

  • <div data-role="page">: Dette definerer en jQuery Mobile-side. Alle dine sideindhold skal ligge inden for dette element.
  • <div data-role="header">: Definerer sidens toptekst, som typisk indeholder en titel.
  • <div class="ui-grid-a my-breakpoint">: Dette er kernen i det responsive layout.
    • ui-grid-a: En jQuery Mobile-klasse, der opretter et to-kolonne gitterlayout. Andre gittertyper (f.eks. ui-grid-b for tre kolonner) er også tilgængelige.
    • my-breakpoint: En brugerdefineret klasse, som vi vil bruge til at definere vores egne medieforespørgsler og dermed kontrollere layoutets responsivitet.
  • <div class="ui-block-a"> og <div class="ui-block-b">: Disse repræsenterer de individuelle blokke eller kolonner i gitteret. ui-block-a er den første kolonne, og ui-block-b er den anden.
  • Inden for disse blokke placerer vi <div id="jqxGrid"> og <div id="jqxChart">, som er de elementer, hvor vores jQWidgets-komponenter vil blive initialiseret. Det er vigtigt at bemærke, at jqxChart er sat til width: 100%; for at sikre, at det fylder den tilgængelige plads og dermed er responsivt fra starten.

Dynamisk Indhold – Initialisering af jQWidgets

Efter at have defineret HTML-strukturen, skal vi initialisere jqxGrid og jqxChart ved hjælp af JavaScript. Dette gøres typisk inden for $(document).ready()-funktionen for at sikre, at DOM er fuldt indlæst, før scripts udføres.

<script type="text/javascript">
$(document).ready(function () {
// jqxGrid data source
var data = new Array();
var firstNames = [ "Andrew", "Nancy", "Shelley", "Regina", "Yoshi", "Antoni", "Mayumi", "Ian", "Peter", "Lars", "Petra", "Martin", "Sven", "Elio", "Beate", "Cheryl", "Michael", "Guylene" ];
var lastNames = [ "Fuller", "Davolio", "Burke", "Murphy", "Nagase", "Saavedra", "Ohno", "Devling", "Wilson", "Peterson", "Winkler", "Bein", "Petersen", "Rossi", "Vileid", "Saylor", "Bjorn", "Nodier" ];
var productNames = [ "Black Tea", "Green Tea", "Caffe Espresso", "Doubleshot Espresso", "Caffe Latte", "White Chocolate Mocha", "Cramel Latte", "Caffe Americano", "Cappuccino", "Espresso Truffle", "Espresso con Panna", "Peppermint Mocha Twist" ];
var priceValues = [ "2.25", "1.5", "3.0", "3.3", "4.5", "3.6", "3.8", "2.5", "5.0", "1.75", "3.25", "4.0" ];

for (var i = 0; i < 100; i++) {
var row = {};
var productindex = Math.floor(Math.random() * productNames.length);
var price = parseFloat(priceValues[productindex]);
var quantity = 1 + Math.round(Math.random() * 10);
row[ "firstname" ] = firstNames[Math.floor(Math.random() * firstNames.length)];
row[ "lastname" ] = lastNames[Math.floor(Math.random() * lastNames.length)];
row[ "productname" ] = productNames[productindex];
row[ "price" ] = price;
row[ "quantity" ] = quantity;
row[ "total" ] = price * quantity;
data[i] = row;
}

var source = { localdata: data, datatype: "array" };
var dataAdapter = new $.jqx.dataAdapter(source, { loadComplete: function (data) { }, loadError: function (xhr, status, error) { } });

// jqxGrid initialization
$( "#jqxGrid" ).jqxGrid( {
width: "100%" ,
height: 400,
source: dataAdapter,
columns: [
{ text: 'First Name', datafield: 'firstname', width: "20%" },
{ text: 'Last Name', datafield: 'lastname', width: "20%" },
{ text: 'Product', datafield: 'productname', width: "20%" },
{ text: 'Quantity', datafield: 'quantity', width: "10%", cellsalign: 'right' },
{ text: 'Unit Price', datafield: 'price', width: "10%", cellsalign: 'right', cellsformat: 'c2' },
{ text: 'Total', datafield: 'total', width: "20%", cellsalign: 'right', cellsformat: 'c2' }
]
});

// jqxChart data source
var sampleData = [
{ Day: 'Monday', Keith: 30, Erica: 15, George: 25 },
{ Day: 'Tuesday', Keith: 25, Erica: 25, George: 30 },
{ Day: 'Wednesday', Keith: 30, Erica: 20, George: 25 },
{ Day: 'Thursday', Keith: 35, Erica: 25, George: 45 },
{ Day: 'Friday', Keith: 20, Erica: 20, George: 25 },
{ Day: 'Saturday', Keith: 30, Erica: 20, George: 30 },
{ Day: 'Sunday', Keith: 60, Erica: 45, George: 90 }
];

// jqxChart initialization
var settings = {
title: "Fitness & exercise weekly scorecard" ,
description: "Time spent in vigorous exercise" ,
padding: { left: 5, top: 5, right: 5, bottom: 5 },
titlePadding: { left: 90, top: 0, right: 0, bottom: 10 },
source: sampleData,
categoryAxis: { dataField: 'Day', showGridLines: false },
colorScheme: 'scheme01' ,
seriesGroups: [
{
type: 'column' ,
columnsGapPercent: 30,
seriesGapPercent: 0,
valueAxis: { minValue: 0, maxValue: 100, unitInterval: 10, description: 'Time in minutes' },
series: [
{ dataField: 'Keith', displayText: 'Keith' },
{ dataField: 'Erica', displayText: 'Erica' },
{ dataField: 'George', displayText: 'George' }
]
}
]
};
$( '#jqxChart' ).jqxChart(settings);
});
</script>

Dette script definerer to datakilder: en til gitteret og en til diagrammet. For jqxGrid genereres en tilfældig datamængde med fornavne, efternavne, produktnavne, priser, mængder og totaler. Denne data indlæses derefter i et $.jqx.dataAdapter-objekt. jqxGrid initialiseres med en width"100%", en fast height og en definition af dens kolonner, inklusive datafield, text, width og formatering (f.eks. cellsformat: 'c2' for valuta). jqxChart initialiseres med en sampleData-kilde, der indeholder ugedage og træningsminutter for flere personer. Diagramindstillingerne omfatter titel, beskrivelse, polstring, kategoriakse og seriegrupper, der definerer diagramtypen (søjle), akser og individuelle serier.

Det er afgørende at sætte komponenternes bredde til en procentdel (f.eks. "100%") for at opnå den ønskede responsive adfærd, da dette gør, at de automatisk tilpasser sig den plads, der er tilgængelig i deres forælderelement.

Can jQuery Mobile change the layout of a group of widgets?
We will showcase an example which makes use of jQuery Mobile's responsive design capabilities to change the layout of a group of widgets (jqxGrid and jqxChart) depending on the screen width. 1. Create a New Page and Add the Necessary References First, we create a new HTML page and add references to jQuery:

Tilpasning til Skærmen – Media Queries i Praksis

Den sande kraft i responsivt design kommer fra medieforespørgsler (media queries), som giver dig mulighed for at anvende forskellige CSS-regler baseret på enhedens egenskaber, såsom skærmbredden. Ved at bruge den tidligere definerede my-breakpoint-klasse kan vi implementere dynamisk layoutændring.

Tilføj følgende CSS til din side, enten i en separat stylesheet-fil eller direkte i et <style>-tag i din HTML:

<style type="text/css">
@media all and (max-width: 62em) {
.my-breakpoint .ui-block-a,
.my-breakpoint .ui-block-b {
width: 100%;
float: none;
}
}

@media all and (min-width: 72em) {
.my-breakpoint .ui-block-a {
width: 64.95%;
}
.my-breakpoint .ui-block-b,
.my-breakpoint .ui-block-c,
.my-breakpoint .ui-block-d,
.my-breakpoint .ui-block-e {
width: 34.95%;
}
}
</style>

Disse medieforespørgsler definerer to vigtige breakpoints:

  1. Små skærme (under 62em / ca. 992px): Når skærmbredden er mindre end eller lig med 62em, vil .ui-block-a og .ui-block-b begge tage 100% af bredden og fjerne float-egenskaben. Dette får dem til at stable sig lodret, hvilket er ideelt for smartphones og mindre tablets, hvor et to-kolonne layout ville være for snævert.
  2. Store skærme (over 72em / ca. 1152px): Når skærmbredden er større end eller lig med 72em, justeres bredden af kolonnerne. .ui-block-a tager 64.95%, og .ui-block-b (samt potentielle c, d, e) tager 34.95%. Dette skaber et asymmetrisk layout, der kan være mere passende for desktops med meget bredde skærme, hvor man ønsker, at gitteret skal have mere plads end diagrammet. De små justeringer (f.eks. 64.95% i stedet for 65%) er ofte nødvendige for at undgå afrundingsproblemer på tværs af forskellige browsere og platforme.

Mellem disse to breakpoints (dvs. skærmbredder mellem 992px og 1152px) vil de to kolonner have lige bredde, som det oprindelige ui-grid-a layout dikterer. Brugen af em-enheder i medieforespørgsler er en god praksis, da de er relative til den grundlæggende skriftstørrelse og dermed skalerer bedre på tværs af forskellige enheder og brugernes browserindstillinger end faste px-værdier.

Fordele og Bedste Praksis for Mobiludvikling

At kombinere jQuery Mobile med et Flat-UI-tema og jQWidgets-komponenter giver en række betydelige fordele for moderne webudvikling:

  • Forbedret Brugeroplevelse: Et Flat-UI-tema skaber et rent og tiltalende interface, mens responsivt design sikrer, at indholdet er læsbart og interaktivt på enhver enhed. Dette fører til højere brugertilfredshed og engagement.
  • Konsistens på Tværs af Enheder: jQuery Mobile hjælper med at opretholde en ensartet brugerflade og funktionalitet, uanset om brugeren tilgår din applikation fra en smartphone, tablet eller desktop.
  • Effektiv Udvikling: Ved at udnytte færdige UI-frameworks og komponentbiblioteker kan udviklingstiden reduceres betydeligt. Du behøver ikke at bygge komplekse UI-elementer fra bunden.
  • Fleksibilitet med Medieforespørgsler: Evnen til at skræddersy layoutet med CSS-medieforespørgsler giver dig fuld kontrol over, hvordan din applikation præsenteres under forskellige forhold.
  • Rige Interaktive Elementer: jQWidgets bringer avancerede funktioner som datatabeller med filtrering, sortering og sideinddeling samt dynamiske diagrammer, der kan visualisere komplekse data på en brugervenlig måde.

En vigtig overvejelse er også den såkaldte mobil-først-tilgang. Dette betyder, at du designer og udvikler for den mindste skærm først og derefter gradvist tilføjer kompleksitet og funktionalitet for større skærme. Denne tilgang sikrer, at kernefunktionaliteten altid er optimeret for mobile brugere, som ofte har de mest restriktive ressourcer.

Ofte Stillede Spørgsmål

Her er nogle af de mest almindelige spørgsmål, der opstår i forbindelse med brugen af jQuery Mobile og relaterede teknologier til responsivt webdesign:

Hvad er jQuery Mobile?
jQuery Mobile er et HTML5-baseret brugerfladesystem designet til at skabe responsive websteder og apps, der fungerer på alle smartphone-, tablet- og desktop-enheder. Det bygger på jQuery-biblioteket og tilbyder en række indbyggede UI-komponenter og en enkel, attributbaseret måde at strukturere mobilvenlige sider på.

Hvorfor bruge et Flat-UI tema?
Et Flat-UI tema giver din jQuery Mobile-applikation et moderne, rent og minimalistisk udseende. Denne designstil fokuserer på brugervenlighed, klare farver og enkelhed, hvilket forbedrer den visuelle æstetik og den samlede brugeroplevelse betydeligt. Det kan få din applikation til at skille sig ud og virke mere nutidig.

Kan jeg bruge andre jQWidgets-komponenter med jQuery Mobile?
Ja, du kan integrere mange andre jQWidgets-komponenter ud over jqxGrid og jqxChart. jQWidgets tilbyder et bredt udvalg af UI-komponenter såsom kalendere, menuer, trævisninger, skydere og mere. Processen vil være lignende: inkludér de nødvendige jQWidgets-filer og initialiser komponenterne i din JavaScript-kode, mens du udnytter jQuery Mobiles layoutstrukturer.

Hvad er en 'media query', og hvorfor er den vigtig?
En medieforespørgsel (media query) er en CSS3-funktion, der gør det muligt at anvende specifikke CSS-stile baseret på enhedens egenskaber, såsom skærmbredde, højde, orientering eller opløsning. Den er afgørende for responsivt webdesign, fordi den lader dig tilpasse layoutet og udseendet af din hjemmeside, så det passer perfekt til den enhed, den vises på, hvilket sikrer en optimal brugeroplevelse på tværs af forskellige skærmstørrelser.

Er jQuery Mobile stadig relevant i 2024?
Selvom nye frameworks er kommet til, har jQuery Mobile stadig sin relevans, især for projekter, der kræver en hurtig implementering af mobilvenlige webapplikationer med et klassisk 'app-lignende' udseende. Det er et modent og stabilt framework, der fortsat understøttes af et aktivt fællesskab, og dets fokus på HTML-baseret deklarativ UI-opbygning gør det til et godt valg for visse typer af applikationer, især de der prioriterer enkelhed og bred enhedskompatibilitet.

Konklusion

At mestre kunsten at skabe responsive webapplikationer er ikke længere en luksus, men en nødvendighed. Ved at udnytte kraften i jQuery Mobile, forbedret med et Flat-UI-tema for æstetik og integreret med jQWidgets for rige, interaktive komponenter, kan du bygge moderne, højtydende og tilpasselige websteder, der leverer en enestående brugeroplevelse på tværs af ethvert device. Denne kombination af teknologier giver dig de værktøjer, du har brug for, til at skabe applikationer, der ikke kun ser fantastiske ud, men også fungerer fejlfrit, uanset hvor og hvordan dine brugere tilgår dem. Træd ind i fremtiden for webudvikling med selvtillid og kompetence.

Hvis du vil læse andre artikler, der ligner Skab Moderne, Responsivt Webdesign med jQuery Mobile, kan du besøge kategorien Teknologi.

Go up