How does the listview widget work?

Guide til jQuery Mobile: Ikone og Listevisninger

19/12/2023

Rating: 3.91 (12314 votes)

I en verden, hvor mobilbrug dominerer, er det afgørende at levere en problemfri og intuitiv brugeroplevelse på små skærme. jQuery Mobile, et robust framework, har længe været en favorit blandt udviklere for sin evne til at skabe responsive og touch-venlige webapplikationer. Kernen i dets succes ligger i de mange foruddefinerede UI-komponenter, herunder de alsidige ikoner og de kraftfulde listevisninger. Disse elementer er ikke blot æstetiske tilføjelser; de er fundamentale byggesten, der forbedrer navigation, informationsoverskuelighed og den samlede interaktion for mobilbrugere. Denne artikel vil dykke ned i, hvordan du effektivt kan udnytte jQuery Mobiles ikonsæt og listevisningswidget for at løfte dine mobile projekter til nye højder.

What are jQuery Mobile icons?
A set of built-in icons in jQuery Mobile can be applied to buttons, collapsibles, listview buttons and more. There is an SVG and PNG image of each icon. By default the SVG icons, that look great on both SD and HD screens, are used. On platforms that don't support SVG the framework falls back to PNG icons.
Indholdsfortegnelse

Forståelse af jQuery Mobile Ikone

jQuery Mobile leveres med et omfattende sæt indbyggede ikoner, der er designet til at forbedre den visuelle kommunikation og brugervenlighed på tværs af forskellige UI-elementer. Disse ikoner kan anvendes på knapper, foldbare sektioner, listevisningsknapper og meget mere, hvilket giver dine applikationer et poleret og professionelt udseende. Hvert ikon er tilgængeligt i både SVG- og PNG-formater. Som standard foretrækker frameworket SVG-ikoner, da de skalerer fejlfrit til både standard- og højopløsningsskærme, hvilket sikrer skarphed og klarhed. Hvis en platform ikke understøtter SVG, falder frameworket automatisk tilbage til de tilsvarende PNG-ikoner, hvilket sikrer bred kompatibilitet.

Sådan Bruger Du Indbyggede Ikone

Brugen af ikoner i jQuery Mobile er ligetil. Når du arbejder med widgets, hvor ikonet indstilles via et data-icon-attribut, bruger du blot ikonets navn som værdi. For eksempel, for at tilføje en højre pil til en knap, ville du skrive data-icon="arrow-r".

For linkknapper og almindelige knapelementer skal du tilføje ikonets navn med præfikset ui-icon- som en CSS-klasse. Et eksempel ville være ui-icon-arrow-r. Dette giver dig fleksibilitet i, hvordan ikonerne integreres i dit markup.

Overblik over Ikonssættet

jQuery Mobile tilbyder et rigt udvalg af ikoner, der dækker mange almindelige UI-behov. Her er en liste over nogle af de mest brugte ikoner:

  • action, alert, arrow-d, arrow-d-l, arrow-d-r, arrow-l, arrow-r, arrow-u, arrow-u-l, arrow-u-r
  • audio, back, bars, bullets, calendar, camera, carat-d, carat-l, carat-r, carat-u
  • check, clock, cloud, delete, edit, eye, forbidden, forward, gear, grid
  • heart, home, info, location, lock, mail, minus, navigation, phone, plus
  • power, recycle, refresh, search, shop, star, tag, user, video

Brugerdefinerede Ikone

Har du brug for et ikon, der ikke findes i det indbyggede sæt? jQuery Mobile gør det nemt at tilføje dine egne brugerdefinerede ikoner. Ikoner vises som baggrundsbilleder af :after pseudo-elementer. Du kan målrette dette pseudo-element i din CSS for at indstille et brugerdefineret ikon.

Rammeværket indeholder en SVG-understøttelsestest, der tilføjer klassen ui-nosvg til HTML-elementet på platforme, der ikke understøtter SVG. Dette giver dig mulighed for at levere et PNG-billede som tilbagefald. Her er et eksempel på, hvordan du kan implementere et brugerdefineret ikon med SVG- og PNG-tilbagefald:

.ui-icon-myicon:after { background-image: url("iconimg.svg"); } .ui-nosvg .ui-icon-myicon:after { background-image: url("iconimg.png"); }

Ikonplacering og Visuel Tilpasning

Standardplaceringen for ikoner i inputknapper er til venstre for knapteksten. Denne standard kan tilsidesættes ved hjælp af data-iconpos-attributten, som kan indstilles til "right", "top" eller "bottom". For linkknapper eller almindelige knapelementer skal du tilføje en ikonpositionsklasse som ui-btn-icon-[værdi].

Hvis du ønsker at oprette en knap, der kun indeholder et ikon uden tekst, kan du bruge "notext" som værdi for ikonpositionen. Dette er ideelt til pladsbesparende og visuelt drevne interfaces.

Tidligere var det muligt at tilføje en ikonskygge med data-iconshadow="true" eller klassen ui-shadow-icon. Bemærk dog, at denne funktionalitet er udfaset fra jQuery Mobile 1.4.0 og vil blive fjernet i version 1.5.0.

Fjernelse af Disken og Ikonfarve

Som standard har ikoner i jQuery Mobile en semi-transparent mørk cirkel bag sig. Denne "disk" sikrer god kontrast på enhver baggrundsfarve og fungerer godt med jQuery Mobiles tematiske system. Hvis du foretræker at fjerne denne disk, kan du gøre det ved at tilføje klassen ui-nodisc-icon til elementet eller dets container. Dette kan være nyttigt for et mere minimalistisk design.

Ikoner er hvide som standard, men du kan skifte til sorte ikoner ved at tilføje klassen ui-alt-icon til elementet eller dets container. Dette ændrer også farven, der bruges til diskene, hvis de er aktiveret. Du kan også kombinere ui-alt-icon og ui-nodisc-icon for at opnå sorte ikoner uden disk.

jQuery Mobile Listevisninger: En Detaljeret Gennemgang

Listevisningswidgeten i jQuery Mobile er en af de mest anvendte komponenter til visning af data på en struktureret og mobilvenlig måde. En listevisning oprettes fra en simpel uordnet liste (<ul>) eller ordnet liste (<ol>) med et data-role="listview"-attribut. jQuery Mobile anvender automatisk alle de nødvendige stilarter for at omdanne listen til en mobilvenlig listevisning med en højre pilindikator, der fylder hele browserens bredde.

Når en bruger trykker på et listeelement, udløser frameworket et klik på det første link inde i listeelementet, sender en Ajax-anmodning til den angivne URL, opretter den nye side i DOM'en og starter derefter en sideovergang. Denne proces er automatisk og effektiv, hvilket giver en glidende brugeroplevelse.

Grundlæggende Linked Lists og Temaer

Her er et simpelt HTML-markup for en grundlæggende linked list:

<ul data-role="listview"> <li><a href="acura.html">Acura</a></li> <li><a href="audi.html">Audi</a></li> <li><a href="bmw.html">BMW</a></li> </ul>

Listevisningswidgeten bruger jQuery Mobiles CSS-framework til at style sit udseende. Du kan tilpasse udseendet ved hjælp af specifikke CSS-klassenavne som ui-listview (ydre container), ui-listview-item (listeelement), ui-listview-item-button (anker element) og mange flere. Bemærk, at standard, ikke-indsatte lister har en negativ margin for at strække sig til skærmens kanter. Hvis du tilføjer andre widgets ved siden af en liste, skal du muligvis tilføje ekstra mellemrum i din brugerdefinerede CSS for at undgå overlapning.

Nummererede og Skrivebeskyttede Lister

Lister kan også oprettes fra ordnede lister (<ol>), hvilket er nyttigt, når du præsenterer elementer i en sekvens, f.eks. søgeresultater. jQuery Mobile vil først forsøge at bruge CSS til at tilføje numre og falder tilbage til JavaScript, hvis CSS ikke understøttes.

Listevisninger kan også bruges til at vise en ikke-interaktiv liste af elementer, typisk som en indsat liste. Disse lister bygges fra uordnede eller ordnede lister, der ikke indeholder linked listeelementer. Statiske listeelementer modtager baggrundsfarven ui-body-a i stedet for knapbaggrundsfarven ui-btn-a.

Opdelte Knap-lister og Listeadskillere

I tilfælde hvor der er mere end én mulig handling per listeelement, kan en opdelt knap bruges til at tilbyde to uafhængigt klikbare elementer: selve listeelementet og et lille pilikon i højre side. Du opretter en opdelt liste ved blot at tilføje et andet link inde i <li>-elementet. Frameworket tilføjer en lodret skillevæg, styler linket som en ikon-kun-pilknap og indstiller linkets title-attribut for tilgængelighed.

Du kan indstille ikonet for det højre opdelte ikon ved at specificere et data-split-icon-attribut på listevisningen. Standardikonet er "carat-r". Temaet for den opdelte knap er som standard "b" (blå), men kan indstilles med data-split-theme på listevisningsniveau eller data-theme på linkniveau for individuelle opdelinger.

What are jQuery Mobile icons?
A set of built-in icons in jQuery Mobile can be applied to buttons, collapsibles, listview buttons and more. There is an SVG and PNG image of each icon. By default the SVG icons, that look great on both SD and HD screens, are used. On platforms that don't support SVG the framework falls back to PNG icons.

Listeelementer kan omdannes til adskillere for at organisere og gruppere listeelementerne. Dette gøres ved at tilføje data-role="list-divider" til ethvert listeelement. Disse elementer styles med bar-farven "b" som standard, men du kan specificere et tema for adskillere ved at tilføje data-divider-theme-attributten til liste-elementet (<ul> eller <ol>).

Automatiske Adskillere og Skjulning af Adskillere

En listevisning kan konfigureres til automatisk at generere adskillere for sine elementer ved at tilføje data-autodividers="true". Som standard bruges den første store bogstav i elementets tekst til at oprette adskillere. Du kan også specificere adskillertekst programmatisk ved at indstille autodividersSelector-optionen. Det er vigtigt at bemærke, at hvis du tilføjer eller fjerner nye listeelementer, opdateres adskillerne ikke automatisk; du skal kalde refresh() på listevisningen for at tegne autodividers igen.

Udvidelsen hidedividers giver mulighed for at skjule adskillere, der umiddelbart følges af en anden adskiller, når et listeelement skjules med klassen ui-screen-hidden og .listview( "refresh" ) kaldes.

Søgefilter og Filter Afsløring

Fra jQuery Mobile 1.4.0 er søgefilterfunktionaliteten blevet overført til filterable-widgeten, som giver en mere generisk løsning. Funktioner som automatisk tekstinputgenerering og særlig håndtering af listevisningsadskillere er udfaset.

Funktionen filter afsløring gør det nemt at bygge en simpel autokomplettering med lokale data. Når en filterbar liste har data-filter-reveal="true"-attributten, skjuler den automatisk alle listeelementer, når søgefeltet er tomt. data-filter-placeholder-attributten kan tilføjes for at specificere pladsholderteksten for filteret.

For at bruge filteret som en autokomplettering, der trækker på fjernede datakilder, kan du bruge filterablebeforefilter-begivenheden til dynamisk at udfylde en listevisning, mens en bruger indtaster en søgeforespørgsel. Dette er ideelt for meget store datasæt, der ikke kan indlæses lokalt fra starten.

Tekstformatering, Optællinger, Miniaturebilleder og Ikoner

Frameworket inkluderer tekstformateringskonventioner for almindelige listemønstre. For at tilføje en tælleindikator til højre for listeelementet skal du pakke tallet ind i et element med klassen ui-li-count. For teksthierarki kan du bruge overskrifter til at øge skriftens vægt og paragraffer til at reducere den. Supplerende information kan tilføjes til højre for hvert listeelement ved at pakke indholdet i et element med klassen ui-li-aside.

For at tilføje miniaturebilleder til venstre for et listeelement skal du blot tilføje et billede inde i et listeelement som det første underelement. Frameworket skalerer billedet til 80x80 pixels. For at bruge standard 16x16 pixel ikoner i listeelementer skal du tilføje klassen ui-li-icon til billedelementet.

Indsatte Lister og Opdatering af Lister

Hvis lister er indlejret på en side med andre typer indhold, pakker en indsat liste listen ind i en blok, der sidder inde i indholdsområdet med lidt margin og afrundede hjørner. Ved at tilføje data-inset="true"-attributten til listen (<ul> eller <ol>) anvendes det indsatte udseende.

Du kan direkte kalde listevisningsplugin'et på enhver selector, ligesom ethvert jQuery plugin:

$( "#mylist" ).listview();

Hvis du tilføjer nye elementer til en listevisning, skal du kalde refresh()-metoden på den for at opdatere stilarterne. For eksempel:

$( "#mylist" ).listview( "refresh" );

Vigtigt er, at refresh()-metoden kun påvirker nye noder, der er tilføjet en liste. Dette skyldes ydeevnegrunde. Alle listeelementer, der allerede er forbedret, ignoreres af opdateringsprocessen. Dette betyder, at hvis du ændrer indholdet eller attributterne på et allerede forbedret listeelement, vil disse ændringer ikke blive afspejlet. Hvis du vil have et listeelement opdateret, skal du erstatte det med frisk markup, før du kalder refresh().

Sammenligning: Ikoner vs. Listevisning Funktioner

For at give et klarere overblik, lad os sammenligne nogle nøglefunktioner vedrørende ikoner og listevisninger:

FunktionIkonerListevisninger
Primært FormålVisuel kommunikation, knapidentifikationStruktureret visning af data, navigation
Tilgængelige FormaterSVG (standard), PNG (fallback)HTML (<ul> / <ol>)
TilpasningBrugerdefinerede ikoner, placering, farve, diskTemaer, opdelte knapper, adskillere, formatering
InteraktivitetDel af klikbare elementerAjax-navigation, filter, opdatering
Vigtige Attributterdata-icon, data-iconpos, ui-icon-, ui-nodisc-icon, ui-alt-icondata-role="listview", data-split-icon, data-autodividers, data-inset

Ofte Stillede Spørgsmål om jQuery Mobile Ikone og Listevisninger

Q: Hvad er fordelen ved at bruge SVG-ikoner i jQuery Mobile?

A: SVG-ikoner er vektorbaserede, hvilket betyder, at de skalerer perfekt til enhver skærmstørrelse og opløsning uden at miste klarhed eller blive pixelerede. Dette er afgørende for at sikre et skarpt og professionelt udseende på både standard- og højopløsnings (Retina) skærme. Desuden er SVG-filer ofte mindre end deres rasterbaserede modstykker som PNG, hvilket kan forbedre indlæsningstiderne for din applikation.

Q: Kan jeg bruge mine egne billeder som ikoner i jQuery Mobile?

A: Ja, absolut. jQuery Mobile giver dig mulighed for at tilføje brugerdefinerede ikoner ved at målrette :after pseudo-elementet af dine ikonklasser i din CSS. Du kan definere baggrundsbilledet til at være din egen SVG-fil og derefter bruge .ui-nosvg-klassen til at levere en PNG-fil som et tilbagefald for browsere, der ikke understøtter SVG. Dette sikrer maksimal kompatibilitet og fleksibilitet i dit design.

Q: Hvorfor opdateres min listevisning ikke automatisk, når jeg tilføjer nye elementer?

A: Efter at have tilføjet nye <li>-elementer til en eksisterende data-role="listview", skal du manuelt kalde $( "#myList" ).listview( "refresh" );. Dette skyldes ydeevneoptimering: jQuery Mobile genopfrisker kun nye noder og ignorerer eksisterende, allerede forbedrede listeelementer for at undgå unødvendig DOM-manipulation. Hvis du ændrer indholdet af et eksisterende element, skal du erstatte hele <li>-elementet med frisk markup, før du kalder refresh().

Q: Hvad er forskellen mellem en "linked list" og en "read-only list" i jQuery Mobile?

A: En linked list indeholder <a>-tags inden i hvert <li>-element, hvilket gør hvert listeelement klikbart og fører til en ny side eller handling. En read-only list derimod, indeholder ikke <a>-tags. Disse listeelementer er ikke interaktive og bruges udelukkende til at vise information. De styles også med den generelle baggrundsfarve (ui-body-a) i stedet for knapbaggrundsfarven (ui-btn-a), hvilket visuelt adskiller dem fra interaktive elementer.

Q: Er søgefilterfunktionen stadig en del af listevisningswidgeten i de nyeste versioner af jQuery Mobile?

A: Nej, fra jQuery Mobile 1.4.0 er søgefilterfunktionaliteten blevet overført til den mere generiske filterable-widget. Selvom du stadig kan implementere lignende funktionalitet med filterable-widgeten, er den direkte integration af søgefelter og automatisk håndtering af adskillere inden for listview-widgeten blevet udfaset. Det anbefales at bruge filterable-widgeten for nye implementeringer af søgefunktionalitet.

Både ikoner og listevisninger er uundværlige elementer i udviklingen af responsive og brugervenlige mobilapplikationer med jQuery Mobile. Ved at mestre disse komponenter kan du skabe intuitive interfaces, der engagerer dine brugere og leverer en fremragende mobiloplevelse. Husk altid at teste dine implementeringer på tværs af forskellige enheder for at sikre optimal ydeevne og udseende.

Hvis du vil læse andre artikler, der ligner Guide til jQuery Mobile: Ikone og Listevisninger, kan du besøge kategorien Teknologi.

Go up