Permalänk
Medlem

Hjälp en noob med HTML/CSS

Jag har tänkt att jag ska lära mig lite om webbutveckling (HTML/CSS/Javascript till att börja med). Tänkte därför knåpa ihop en hemsida att ha som ett litet pågående projekt.

Nu har jag kört fast lite på att jag inte får saker att göra som jag vill. För att illustrera det hela slängde jag ihop ett exempel i Photoshop.

Tanken är inte exakt den designen (jag kan eventuellt ha känt mig extra kreativ när jag satt med Photoshop ; ). Det är mest för att visa ett par element som stökar till det för mig.

Bakgrunden - alltså själva rektangeln med rundade hörn - hur ska man åstadkomma något sånt på bästa sätt?

Jag tror det skulle funka att göra direkt i CSS. Problemet är bara att det inte finns någon anti-aliasing så det ser rätt trist ut.

Testade att göra det med en svg-fil, men skalningen verkar helt sakna logik. Typ, säg åt den att centrera och jag får halva bilden i toppen av skärmen. Skala upp den och den hamnar nästan i mitten. Öka bredden och det händer inget, om jag inte sen ökar höjden varpå bilden blir gigantisk. Flytta på loggan för att försöka matcha och skalningen blir fel igen.

Provade men en vanlig png-fil och det funkar bättre, men jag får det inte att funka med att ändra storlek på webbläsarfönstret (dessutom ser det inte lika bra ut som vektorgrafik).

Nästa steg är att få alla element att hålla sig på sidan. Jag har inte hittat hur man gör än men det borde väl gå att få dem att hålla sig relativt till själva bakgrundsbilden.

Hursomhelst, vad är bästa sätt göra det här på?

Permalänk
Medlem
Visa signatur

| Stationär: 6900 XT, 5800X3D | Laptop: Asus UX32A | Nas: Synology DS1813+ | Smarthem: Homey |

Permalänk

Rundade hörn med tillhörande skugga går fint att göra i css.

Kolla in den här generatorn för lite hjälp:
https://html-css-js.com/css/generator/border-outline/

När du ändrar olika värden så ser du hur CSS:en uppdateras också. Kan vara till bra hjälp för en nybörjare

Permalänk
Medlem

Bakgrundsskuggan kallas box-shadow, den kan man generera rätt så simpelt tack vare såna här:
https://html-css-js.com/css/generator/box-shadow/

Visa signatur

| Stationär: 6900 XT, 5800X3D | Laptop: Asus UX32A | Nas: Synology DS1813+ | Smarthem: Homey |

Permalänk
Medlem

Box-shadow kan du nog kika så att du kan lösa skuggorna / uophöjning av bakgrunden

Edit: blev sen på den

Permalänk
Medlem

Tack! Jag är med så långt att jag kan sätta border-radius och box-shadow. Ett par problem bara:

Går det att bli av med aliasing?

Hur får jag bakgrunden som en sida? Alltså, den "egentliga" bakgrunden vill jag ju ha vit, och sen en (eller flera) sidor som står ut som just... ja, sidor eller fösnter.

Permalänk
Medlem

Vad menar du med "aliasing"? Har du en bild du kan visa?

Du får sätta vit bakgrund på din body, skapa sedan en container div med en annan färg på samt ovannämnda tekniker.

Här har du en tutorial på box modellen som man använder sig av.
https://www.w3schools.com/css/css_boxmodel.asp

Visa signatur

| Stationär: 6900 XT, 5800X3D | Laptop: Asus UX32A | Nas: Synology DS1813+ | Smarthem: Homey |

Permalänk
Medlem

Du kan även använda dig av ett bibliotek för att skapa upp webbsidor. Bootstrap är ett väldigt populärt alternativ.
https://getbootstrap.com/

Visa signatur

| Stationär: 6900 XT, 5800X3D | Laptop: Asus UX32A | Nas: Synology DS1813+ | Smarthem: Homey |

Permalänk
99:e percentilen
Skrivet av DasIch:

Tack! Jag är med så långt att jag kan sätta border-radius och box-shadow. Ett par problem bara:

Går det att bli av med aliasing?

Problemet kan ligga i din klient snarare än i din kod, för man får typiskt kantutjämning gratis. Ta bara detta inlägg som exempel: det har bland annat

.forum-post-header { border-radius: 6px 6px 0 0; }

och dess hörn är hur mjuka och fina som helst.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk

https://jsfiddle.net/uap4ym85/19/

Tycker inte att det aliasing blir så illa....

Visa signatur

På tok för många datorer för att skriva här

Permalänk
Musikälskare

www.flexbox-manual.com

Är du intresserad av att lära dig flexbox så har jag gjort en förenklad sida där det finns exempel

Visa signatur

❀ Monitor: ASUS Swift 27" @ 1440p/165Hz ❀ CPU: Ryzen 7700X ❀ Cooling: Corsair H170i ELITE 420mm ❀ GPU: MSI 3080 Ti SUPRIM X ❀ Memory: Corsair 32GB DDR5 Vengeance ❀ Motherboard: ASUS Crosshair X670E Hero ❀ M.2: Samsung 980 Pro ❀ PSU: Corsair HX1200 ❀ Chassi: Corsair 7000X ❀ Time Spy: 19 340

📷 Mina fotografier
🎧 Vad lyssnar du på just nu?

Permalänk
Medlem
Skrivet av Lolpold:

Vad menar du med "aliasing"? Har du en bild du kan visa?

Du får sätta vit bakgrund på din body, skapa sedan en container div med en annan färg på samt ovannämnda tekniker.

Här har du en tutorial på box modellen som man använder sig av.
https://www.w3schools.com/css/css_boxmodel.asp

Här är ett exempel:

Jag har fått det att funka i varje fall. Är det här en vettig struktur?
https://pastebin.com/6HjVB5d4
https://pastebin.com/qxJR0GG5

Skrivet av Lolpold:

Du kan även använda dig av ett bibliotek för att skapa upp webbsidor. Bootstrap är ett väldigt populärt alternativ.
https://getbootstrap.com/

Jag tänkte först få bättre grepp om grunderna innan jag börjar använda mig av olika bibliotek. Sparar dock tipset för att kika på det vid senare tillfälle.

Skrivet av Alling:

Problemet kan ligga i din klient snarare än i din kod, för man får typiskt kantutjämning gratis. Ta bara detta inlägg som exempel: det har bland annat

.forum-post-header { border-radius: 6px 6px 0 0; }

och dess hörn är hur mjuka och fina som helst.

Finns väl ingen kantutjämning alls i CSS? Koden i sig specificerar ju bara rundningen på alla fyra hörn. Tycker inte den ser riktigt bra ut faktiskt. Alltså, det går ju att leva med om man inte tänker på det men rundningen är absolut inte perfekt. Såhär ser det ut inzoomat på de svarta rutorna till höger:

Skrivet av orig_rejser:

https://jsfiddle.net/uap4ym85/19/

Tycker inte att det aliasing blir så illa....

Går att leva med men jag hade absolut önskat renare linjer. Det är en såndär detalj som kan störa mig ibland.

Skrivet av flashen:

www.flexbox-manual.com

Är du intresserad av att lära dig flexbox så har jag gjort en förenklad sida där det finns exempel

Sparar länken och kikar på den när jag lärt mig lite mer.

Permalänk
Medlem
Skrivet av DasIch:

Här är ett exempel:
https://i.ibb.co/Fxr8fGg/exempel.png

Jag har fått det att funka i varje fall. Är det här en vettig struktur?
https://pastebin.com/6HjVB5d4
https://pastebin.com/qxJR0GG5

Jag tänkte först få bättre grepp om grunderna innan jag börjar använda mig av olika bibliotek. Sparar dock tipset för att kika på det vid senare tillfälle.

Finns väl ingen kantutjämning alls i CSS? Koden i sig specificerar ju bara rundningen på alla fyra hörn. Tycker inte den ser riktigt bra ut faktiskt. Alltså, det går ju att leva med om man inte tänker på det men rundningen är absolut inte perfekt. Såhär ser det ut inzoomat på de svarta rutorna till höger:
https://i.ibb.co/VjqF2X8/radius2.png

Går att leva med men jag hade absolut önskat renare linjer. Det är en såndär detalj som kan störa mig ibland.

Sparar länken och kikar på den när jag lärt mig lite mer.

Osäker på vad du menar med dina exempelbilder, för det där är väl ett perfekt exempel på kantutjämning som faktiskt fungerar?

Kantutjämningen styrs mer eller mindre av din webbläsare och inte något du själv gör i CSS - förutom på typsnitt där du kan ändra själv hur du vill att det ska renderas.

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem
Skrivet av Pamudas:

Osäker på vad du menar med dina exempelbilder, för det där är väl ett perfekt exempel på kantutjämning som faktiskt fungerar?

Kantutjämningen styrs mer eller mindre av din webbläsare och inte något du själv gör i CSS - förutom på typsnitt där du kan ändra själv hur du vill att det ska renderas.

Jämför med det här exemplet som ger en klart snyggare rundning/linje. Det är ett litet urklipp från Inkscape som sen förstorats för att ungefär motsvara tidigare bild från SweC. Att rendera bilden direkt på skärmen ser klart bättre ut.

Kollar du noga på de rundade hörnen här på SweC bör du kunna se att kanterna inte är helt jämna och rundningen är inte heller helt perfekt. Tänker man sig rundningen som beskrivande av en yta skulle normalerna vara ojämnt fördelade. Det gör att "hörnen" kan se en aning för stora ut.

Permalänk
99:e percentilen
Skrivet av DasIch:

Jämför med det här exemplet som ger en klart snyggare rundning/linje. Det är ett litet urklipp från Inkscape som sen förstorats för att ungefär motsvara tidigare bild från SweC. Att rendera bilden direkt på skärmen ser klart bättre ut.

Kollar du noga på de rundade hörnen här på SweC bör du kunna se att kanterna inte är helt jämna och rundningen är inte heller helt perfekt. Tänker man sig rundningen som beskrivande av en yta skulle normalerna vara ojämnt fördelade. Det gör att "hörnen" kan se en aning för stora ut.
https://i.ibb.co/H22ZCM1/radius3.png

Det är verkligen inte lätt att förstå vad du menar. Nu jämför du alltså två renderingar av en kvartscirkel gjorda med ~500 pixlar respektive ~15 000 pixlar. Det är väl knappast en skräll att den senare är en bättre approximation?

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av Alling:

Det är verkligen inte lätt att förstå vad du menar. Nu jämför du alltså två renderingar av en kvartscirkel gjorda med ~500 pixlar respektive ~15 000 pixlar. Det är väl knappast en skräll att den senare är en bättre approximation?

Den större bilden är mer inzoomad. Sen får man ju klart bättre kontroll på radien om man kan rita upp bilden i något vektorprogram (jämför typ bevel-funktionen i något 3D-program mot klass A ytor i CAD).

Men vi kan släppa det. Tanken var inte att leda in tråden på det här spåret.

Permalänk
99:e percentilen
Skrivet av DasIch:

Den större bilden är mer inzoomad.

Vilket ju gör jämförelsen meningslös.

Citat:

Sen får man ju klart bättre kontroll på radien om man kan rita upp bilden i något vektorprogram (jämför typ bevel-funktionen i något 3D-program mot klass A ytor i CAD).

Ingen aning om vad detta betyder.

Citat:

Men vi kan släppa det. Tanken var inte att leda in tråden på det här spåret.

Leda in och leda in … det var ändå det ämne som upptog majoriteten av trådstarten. ¯\_(ツ)_/¯ Och svaret är enkelt:

Citat:

Bakgrunden - alltså själva rektangeln med rundade hörn - hur ska man åstadkomma något sånt på bästa sätt?

Man gör det med border-radius. Punkt. Case closed. End of story. Man använder inte bilder (varken raster- eller vektorgrafik). Verkligen inget illa menat; det är bara helt enkelt så det är.

Citat:

Jag tror det skulle funka att göra direkt i CSS. Problemet är bara att det inte finns någon anti-aliasing så det ser rätt trist ut.

Du har själv skickat bilder där lyckad kantutjämning på med CSS rundade hörn syns klart och tydligt. Det enda jag kan tänka mig om du inte håller med om det är att du har vridit upp kontrasten till max på din skärm eller något, vilket ju bland annat i praktiken kan eliminera kantutjämning. Men du framstår inte som någon som gör sådant.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Enda sättet att få perfekt kant på hörnrundning är att den är i vektorformat. Du får då använda en .svg bild eller använda canvas. Men inget av det är motiverat i ditt fall.
Border-radius och box-shadow is the way.
Sluta zooma in helt enkelt, ingen av dina användare kommer att göra det.

Visa signatur

Oldschool [å:ldsku:l] adj. Användandet av datorprodukter som är äldre än 3 månader.

Permalänk
Medlem

Jag är med på att det är "best practice" att göra det direkt i CSS istället för att använda en bild. Men, hur kommer det sig? Det borde ju inte vara så mycket konstigare att använda en .svg istället, kan jag tycka, och skala den på samma vis som CSS-elementet. Det har ju dock inte alls funkat bra när jag försökt - förstår bara inte varför.

För övrigt tycker jag inte om mobiler just nu. Här sitter man och tycker att en bra design börjar ta form, för att sen testa på mobilen... det är bara att börja om.

Permalänk
Medlem
Skrivet av DasIch:

Jag är med på att det är "best practice" att göra det direkt i CSS istället för att använda en bild. Men, hur kommer det sig? Det borde ju inte vara så mycket konstigare att använda en .svg istället, kan jag tycka, och skala den på samma vis som CSS-elementet. Det har ju dock inte alls funkat bra när jag försökt - förstår bara inte varför.

För övrigt tycker jag inte om mobiler just nu. Här sitter man och tycker att en bra design börjar ta form, för att sen testa på mobilen... det är bara att börja om.

Använd useragent och skapa två olika CSS-script baserat på mobil/desktop så slipper du börja om helt från början.
https://stackoverflow.com/questions/11381673/detecting-a-mobi...

Visa signatur

Asus C6H | R9-3900XT | 4x8GB G-Skill Ripjaws V 3600@3466 CL14 | Asus Radeon RX 580 8GB Strix Gaming OC | Asus Strix Raid DLX | Corsair Obsidian 750D AE

Permalänk
99:e percentilen
Skrivet av kundun:

Enda sättet att få perfekt kant på hörnrundning är att den är i vektorformat. Du får då använda en .svg bild eller använda canvas. Men inget av det är motiverat i ditt fall.
Border-radius och box-shadow is the way.

Du har ju rätt i din slutsats, men jag förstår inte varför du framställer det som att border-radius skulle ge ett visuellt sämre slutresultat. Principen är ju densamma som för SVG. Canvas är ju rastergrafik så där förstår jag ännu mindre vad du menar.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
99:e percentilen
Skrivet av DasIch:

Jag är med på att det är "best practice" att göra det direkt i CSS istället för att använda en bild. Men, hur kommer det sig? Det borde ju inte vara så mycket konstigare att använda en .svg istället, kan jag tycka, och skala den på samma vis som CSS-elementet. Det har ju dock inte alls funkat bra när jag försökt - förstår bara inte varför.

Långt konstigare att börja krångla med SVG ju. En av mina favoritdeviser inom utveckling är att skriva vad man menar™ – följer man den kan det inte råda några tvivel om hur rundade hörn åstadkommes.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av Johan_G3:

Använd useragent och skapa två olika CSS-script baserat på mobil/desktop så slipper du börja om helt från början.
https://stackoverflow.com/questions/11381673/detecting-a-mobi...

Är inte det en rätt utdaterad metod? Idag verkar det ju talas mest om responsiv design, istället för att i princip göra två olika versioner av en sida.

När jag lekt runt har jag hittat vw/vmax/vmin som funkar bra för att skala saker efter fönstrets storlek. Sen kan man ju också använda @media screen för enkla regler.

Skrivet av Alling:

Långt konstigare att börja krångla med SVG ju. En av mina favoritdeviser inom utveckling är att skriva vad man menar™ – följer man den kan det inte råda några tvivel om hur rundade hörn åstadkommes.

Fast att det inte passar Allings favoritdevis är ju faktiskt inte ett särskilt bra svar på frågan.
En .svg går att få snyggare, mer kontroll över designen och det går att skippa extra element. Vill jag exempelvis ha någon form av dekoration i rutan kan jag rita in det i bilden, istället för att klistra på den; positionera, klippa och funka responsivt.

Permalänk
Medlem

Så du jämför aliasing på ett hörn med 6 pixlars storlek och ett hörn på typ 50 pixlars storlek och tycker aliasing är bättre på den större cirkeln? Om det är grunder du är ute efter så kanske du ska börja med antialiasing. Kan lära dig att skapa det för hand. Sen gör du övningen på två cirklar, en med radie 6 och en på 50.

(Och glöm inte regel nummer ett i optimering av en sida. Skapa inte upp skit ingen ser eller bryr sig om)

Visa signatur

Processor: Motorola 68000 | Klockfrekvens: 7,09 Mhz (PAL) | Minne: 256 kB ROM / 512 kB RAM | Bussbredd: 24 bit | Joystick: Tac2 | Operativsystem: Amiga OS 1.3

Permalänk
Medlem
Skrivet av talonmas:

Så du jämför aliasing på ett hörn med 6 pixlars storlek och ett hörn på typ 50 pixlars storlek och tycker aliasing är bättre på den större cirkeln? Om det är grunder du är ute efter så kanske du ska börja med antialiasing. Kan lära dig att skapa det för hand. Sen gör du övningen på två cirklar, en med radie 6 och en på 50.

(Och glöm inte regel nummer ett i optimering av en sida. Skapa inte upp skit ingen ser eller bryr sig om)

Det här är så nära matchning jag orkar göra. Enda som skiljer är radien men det har inte direkt någon betydelse. Jag vet vilken av dem jag föredrar...
https://ibb.co/ZL5SBtJ

Jag är främst intresserad av vad jag ser och bryr mig om. Det är trots allt för min egen skull jag gör det här.

Permalänk
Medlem
Skrivet av DasIch:

Det här är så nära matchning jag orkar göra. Enda som skiljer är radien men det har inte direkt någon betydelse. Jag vet vilken av dem jag föredrar...
https://ibb.co/ZL5SBtJ

Jag är främst intresserad av vad jag ser och bryr mig om. Det är trots allt för min egen skull jag gör det här.

Fast det där är ju en väldigt orättvis bedömning. Ena bilden har ju en tonad bakgrund. Sånt kan göra stora skillnader i hur aliasing/antialiasing ser ut.

Visa signatur

5700x3D | RTX 2060 Super | 2 TB M.2 | 32 GB RAM | Gigabyte DS3H| 750 WATT

Permalänk
Medlem

Ett viktigare problem... varför funkar inte det här?
https://pastebin.com/U91dpTSh
https://pastebin.com/K9v5uHrk

Output från konsolen är: "GET http://127.0.0.1:5500/templates/$%7Bfile%7D 404 (Not Found)"

Katalogstrukturen är korrekt. Jag har en "templates"-mapp i root-katalogen med template1[osv].html. Jag kan inte heller hitta något fel i koden.

Kör VSCode med Live Server om det nu har betydelse.

Permalänk
Medlem
Skrivet av FX9:

Fast det där är ju en väldigt orättvis bedömning. Ena bilden har ju en tonad bakgrund. Sånt kan göra stora skillnader i hur aliasing/antialiasing ser ut.

Skuggningen skapar mer kontrast och bör därför göra att det ser sämre ut.

Permalänk
Medlem

Sträng-interpoletingen (eller vad det nu kallas i det där skitspråket) funkar inte. Filen ${file} finns inte i templates-mappen. Backticks?

Permalänk
Medlem
Skrivet av KAD:

Sträng-interpoletingen (eller vad det nu kallas i det där skitspråket) funkar inte. Filen ${file} finns inte i templates-mappen. Backticks?

Ah, tack - det skulle vara backticks för `templates/${file}`!

Ibland undrar jag om det är sadister som har hittat på syntaxen i typ alla programmeringsspråk? De måste ju ha medvetet gjort det så svårt som möjligt att läsa och skriva.