Content centreren

Status
Niet open voor verdere reacties.
Ja, de testpagina pakt op zich het stylesheet goed op, dat is er gewoon:
www.eyemlucien.com/test/css/index_sprite.css

Ook het image is er in principe:
www.eyemlucien.com/test/images/sprite.png

En in het stylesheet wordt verwezen naar de goede naam van mapje en bestand:
Code:
h1 a {
	...
	background: url(images/sprite.png);
	}
#linkerkolom li a {
	...
	background: url(images/sprite.png);
	}

Wat hier echter speelt, is de positie van de map "images".
  • Het stylesheet zit zelf in een mapje "http://www.eyemlucien.com/test/css/".
Nu is het principe voor relatieve links, dat bij een stylesheet niet wordt verwezen vanaf het punt waar de html-pagina staat...
  • De html-pagina staat in "http://www.eyemlucien.com/test/"
...maar vanaf het punt waar het stylesheet zelf in de mappenboom zit.

Er wordt dus gezocht naar ...
... en niet gevonden.

Vanaf het stylesheet moet je eerst een mapje omhoog gaan om uit de css-map te komen, en daarna kan pas naar de map images afgedaald worden. Met twee puntjes en een slash is het opstijgen geregeld:
Code:
h1 a {
	...
	background: url(../images/sprite.png);
	}
#linkerkolom li a {
	...
	background: url(../images/sprite.png);
	}
Het zit 'm dus in de w3c-relativiteitstheorie. :)

Met vriendelijke groet,
CSShunter
 
Hoi CSShunter,

Het was inderdaad dat ik niet de juiste verwijzing had naar de images map toe.
Dit aangepast en komt nu wel goed in beeld...

Alleen nu loop ik weer tegen het volgende aan, want ik heb nu de index-pagina als uitgangspunt genomen ook voor de vervolgpagina's, maar nu krijg ik dus mijn content op de vervolgpagina's niet meer goed, want die zit nu veel te laag of te smal in beeld..

zie eyemlucien.com

Groet,
iSylvio
 
Laatst bewerkt:
Hoi iSylvio,
Voordat ik verder kan gaan met je vragen, heb ik eerst een Ernstige Mededeling. ;)

Toen ik de site nog eens aandachtig ging bekijken, bestaat deze uit 3 typen pagina's, met elk een eigen soort opmaak: de homepage, de galery-pagina's en de tekstpagina's.

Nu had ik wel een aardig modelletje gemaakt voor de homepage-layout op zich, maar dat verdraagt zich niet met de andere types. Tenminste niet als je bij alle resoluties wilt omschakelen met enig behoud van de opmaak.
Toen ik de homepage fabriekte, dacht ik: "de andere pagina's zijn VLZ" (Van Later Zorg).
Dat klopt wel, maar de latere zorg was vrij ernstig!
(Intussen ben jij ook gevorderd, zie ik.)​
Ik ben maar eens in de uitdaging gestapt om een schaalbare ("liquid") layout te maken die met één stylesheet alle pagina-types kan bedienen; op zo'n manier dat ze mooi op elkaar aansluiten.
De vlakverdeling van het design is heel spannend om om te zetten in verhoudingen: gedeeltelijk zijn het vaste maten, gedeeltelijk percentages, en gedeeltelijk moeten er voor lagere resoluties maatregelen getroffen worden zodat de zaak niet van het scherm af wandelt. En het oog wil ook wat!
Afijn, een behoorlijk gescharrel met margins in vaste maten, paddings in percentages (of omgekeerd), negatieve margins, absolute posities met top- en bottom waarden (al dan niet in percentages, gepaard met margins/paddings enz.) ... enz. Met als sport: in principe puur css zonder javascript.

Demo-projectje
Al doende (van het een komt het ander) kreeg ik het idee om van de site een "demo-project" te maken, dat (a) op zich draait, en (b) waarin verschillende webdesign-technieken worden geïllustreerd.

Om je niet langer in spanning te houden:

Wat hierin verwerkt zit:
  • Schaalbare layout
    Als boven al aangegeven, is de liquid design techniek toegepast. Met puur css (all-styles.css) is de site te bezichtigen vanaf een resolutie van 800*600px (!) en hoger, zonder dat iets buiten beeld valt.
    Dit kan je zien als je javascript in je browser uitschakelt. In elk geval vanaf 1024*768px zijn het cleane pagina's zonder scrollbars (met uitzondering van de exhibitions-pagina).
    NB: het reset.css stylesheet heb ik helemaal niet meer gebruikt. Ik heb er altijd meer last dan gemak van. De uitvinder, Eric Meyer, bedoelde het niet als standaard-oplossing maar als uitgangspunt voor een custom reset-stylesheet, aangepast op de noden van een specifieke site (en hij gebruikt de reset.css zelf ook niet op zijn site!).

  • Javascript assistentie
    Met javascript (css-helper.js) is verfijning aangebracht voor lagere resoluties (in breedte en/of hoogte). Techniek: DOM (Document Object Model) om elementen op te vragen en/of van eigenschappen te laten veranderen; plus meet- en rekenkunde.
    De elementen worden beter gearrangeerd, overtollige grijsvlakken zijn verwijderd, en de horizontale scrollbalk is overbodig gemaakt. In full-screen mode van de browser (F11) past alles er zelfs precies op bij een resolutie van 800*600px, zonder enige scrollbar!

  • Actuele pagina gehighlight
    De css-sprite techniek was al toegepast voor de hovers over het menu. De sprite is uitgebreid met nog een kolommetje voor de weergave van de actuele pagina met de naam aan de rechterkant. Het menu op elke pagina is exact gelijkluidend gebleven, daar hoeft geen extra "actual" signalering in te komen. Door elke pagina in der <body> een eigen class te geven, gebeurt het volautomatisch met een uitbreiding van het stylesheet.
    In dezelfde sprite zijn ook een gewone en hover-toestand opgenomen voor de twitter en facebook-figuurtjes op de contact-pagina, en voor de footer-toelichting op de foto-pagina's. Een css-sprite hoeft zich dus niet tot 1 pagina te beperken!

  • Full-screen tip
    Onderaan de foto-pagina's wordt op bescheiden manier de tip gegeven om de site fullscreen te bekijken (want dan komt ie het beste tot z'n recht).
    Wie denkt dat op het "enlarge" icoontje in de tip geklikt moet worden, krijgt bij z'n hover/click-poging een uitgebreider toelichting te zien. Techniek: pure css pop-up. Met weghoveren verdwijnt de pop-up weer.
    Tevens toegepast: een custom cursor style, zodat een eigen fabrikaat cursor (transparante gif met pijltje en blauw I-symbooltje) getoond kan worden i.p.v. het standaard pijltje, handje of vraagtekentje. Opera kan hier niet mee overweg, die krijgt het vraagteken-pijltje te zien.

  • Image viewer aangepast (1)
    Bij het opstarten van een galerie komt er linksbovenin de viewer-ruimte een m.i. detonerend zwart vierkantje met een loading-image voorbijgeflitst. Vervangen door een eigen fabrikaat progress-bar met gebruikmaking van de blokjes uit het logo. Techniek: animated gif, plaatsing midden in grijze achtergrond (css), verschijnen en verdwijnen geregeld met een javascript-functie.

  • Image viewer aangepast (2)
    Om een geruisloze overgang bij het inladen van de galleria te krijgen, is alvast tijdelijk een (fake) image met de viewer optie-balk geplaatst (tmp-bar.png). Deze is zichtbaar gedurende de progress-balk vertoning. Techniek: wederom css + javascript combinatie.

  • Image viewer aangepast (3)
    De viewer start met een zwarte achtergrond in het vierkant, waarna de fade-in van de eerste foto volgt. Dat zou mooi zijn als de pagina ook zwart is, maar die is lichtgrijs. De zwarte bg-color overruled (css) met lichtgrijs, zodat de fade-in nu "vanuit het niets" kan plaatsvinden.

  • Image viewer aangepast (4)
    De viewer wisselt de foto's ook over een knalzwarte achtergrond. Bij overgang van donkere naar donkere foto is dat mooi, van lichte naar lichte foto niet. Vervangen door het gemiddelde tussen wit en zwart: een medio grijze tint. Dit kan niet met overrulen van de css, want deze background wordt er via de galleria-scripts in gezet. Gerealiseerd met een javascript-functie, die pas getriggerd wordt als de eerste foto zijn fade-in vanaf lichtgrijs heeft gehad.

  • Image viewer aangepast (5)
    De galleria image-viewer heeft een full-screen mode die helaas nergens op lijkt. Op 1024*768px worden grote delen van de foto's afgehakt, en ook bij hogere resoluties speelt dit. Met fullscreen via F11 en de Popout button komt een veel beter beeld. *)
    Rigoureuze maatregel: deze optie-button van de viewer-balk verwijderd. Techniek: aanpassing javascript (nu: galleria.twelve.adapted.js).

  • Image viewer aangepast (6)
    Soms kan de viewer om een of andere reden niet meteen goed inladen. Dan verschijnt een rood alarm-bericht "Fatal Error" zonder verdere uitleg. Vervangen door een gebruikersvriendelijker mededeling: "hij laadt niet, dat gebeurt soms, probeer 't svp nog eens". Realisatie: aanpassing javascript (nu: galleria.adapted.js).

  • Inwendige scrollbar
    Voor de exhibitions-pagina is een inwendige scrollbar voor het overzicht toegepast. Techniek: css (overflow:auto bij een vastgelegde hoogte, hier via de top/border definitie). Zo'n inwendige scrollbar zit vaak stuik tegen het te scrollen blok aan, maar om het luchtig te houden kan dit ook op enige afstand; en eveneens met wat afstand tot de rechter-schermrand.
    Voor de afstand tussen scrollbar en scrollblok is een "binnen-div" gebruikt met eigen breedte. Om de scrollbar zo onopvallend mogelijk te maken, heeft het randje om het scrollblok dezelfde lichtblauwe tint als de scrollbar gekregen.
    De zijranden kunnen aan de binnen-div zitten, maar de boven- en onderrand niet: die scrollen mee (= buiten beeld). Boven- en onderrand kunnen ook niet aan de omvattende scroll-container vastgemaakt worden, want dan zou het randje doorlopen in de grijze achtergrond tussen het scrollblok en de scrollbar. Opgelost door separate "border-div's" van 1px hoog, die als "border" een lichtblauwe bg-color hebben en naadloos op de bovenkant en onderlant van de scrollbox worden geplakt. Alles met css.

  • Belettering met custom-font
    Het gewenste "Sansation" lettertype is toegepast met de css-eigenschap @font-face. Met correcte code (zie stylesheet) doet ook Internet Explorer het, als zowel een .eot- als een .ttf-bestand op de server staan.
    Bij een font-family aanroep hoort ook altijd één of meer alternatieven, mocht het onverhoopt toch niet lukken (met als uiterste redmiddel een "generiek font", hier "sans-serif"; dit is het standaard schreefloze lettertype van de computer van de bezoeker - en dat is er altijd).
    Voor een aantal elementen bleek de Sansation niet mooi over te komen (erg schriel/brokkelig bij medium fontgrootte), dan is een ander lettertype gebruikt.

  • Anti-flits maatregel voor IE
    Internet Explorer geeft bij een pagina-wisseling een witte flits te zien (staat bekend onder de naam FOUC = Flash Of Unstyled Content). Er valt van af te komen door IE via een html <meta> opdracht (zie pagina-code) een fade-in pagina-overgang te laten maken. Dit is browserspecifieke code voor IE, maar onschadelijk voor andere browsers.

  • Image preloader
    Op de homepage worden alvast de "systeem-images" gedownload die later voor het bekijken van de galery-pagina's nodig zijn: een html div met via css de hidden inhoud aan images. Daarmee winnen de foto-pagina's aan snelheid.

  • Inhoudelijk
    Om wat tekst op de homepage te zetten die meer is dan alleen de links, dacht ik aan een soort van "statement". Dit zou moeten uitnodigen om de rest van de site te bekijken, en is tevens het bekende Welkom-bericht in wat andere gedaante. Het kan in kleine letters het inhoudblokje opgenomen worden. Daarmee wordt dit meteen iets vierkanter, en sluit dan qua vormgeving aardig aan bij de vierkante galery-pagina's.
==========
Met het stylesheetje van 10kB voor alle css-geweld, plus het css-helper javascriptje van 4.5kB en het sprite-image van een kleine 100kB (maar daar zit dan ook zo ongeveer alles in!) zijn de html-pagina's zelf nu enorm kort en van een eenvormige structuur geworden. Bv. de inhoud van een foto-pagina is:
HTML:
<h1 id="logo"><a title="Home" href="index.html"><span>Eye M Lucien - Photography</span></a></h1>

<div id="leftcolumn">
	<ul>
		<li><a id="creative" href="creative.htm"></a></li>
		<li><a id="portraits" href="portraits.htm"></a></li>
		<li><a id="stills" href="stills.htm"></a></li>
		<li><a id="about" href="about.htm"></a></li>
		<li><a id="exhibitions" href="exhibitions.htm"></a></li>
		<li><a id="contact" href="contact.htm"></a></li>
	</ul>
</div>

<div id="maincontainer">
	<div id="subcontainer">
		<div id="content">
			<div id="tmp-bar">
				<div id="galleria"></div>
			</div>
		</div>
	</div>
</div>
 
<div id="footer"><!-- filled by javascript --></div>
De rest van de foto-pagina's is alleen maar het aanroepen van de scripts met de juiste parameters.
De andere pagina's volgen dezelfde structuur: alleen wat binnen de #content staat is verschillend.
Is dat niet wonderbaar? :)

==========
Zelftest-pakketje
  • De hele site zoals ik 'm gemaakt heb zit ingepakt in dit eye.zip bestand (incl. alle mappen, submappen en bestanden), dat je kunt downloaden als je ermee wilt testen of verder borduren.
  • Ik heb dezelfde mapnamen gebruikt als bij jou op de server, dus alle relatieve verwijzingen blijven kloppen.
  • De pagina's behalve de index.html heb ik de uitgang .htm gegeven (zonder de L).
  • Het enige verschil tussen mijn pagina's en echte pagina's is, dat ik "noindex,nofollow" in een <meta> heb staan, zodat Google de pagina's van de schaduwsite op mijn server niet kan vinden.
  • In de css en de scripts zitten een aantal explicaties over hoe vorken aan de steel zitten.
==========

Nu even kijken wat je openstaande vraag ook alweer was. ;)
mocht ik nou een andere foto willen gebruiken voor de sprite.png of het logo willen veranderen of een link willen toevoegen, moet ik dan het gehele sprite.png veranderen?
Ja, dat klopt als een zwerende vinger. Zo heb ik ook de oude sprite bijgewerkt en rechts en onder van nieuwe plaatjes voorzien. Je kan 'm dus ook straffeloos groter maken: als je in de css maar het juiste aantal px opgeeft waarmee geschoven moet worden om het nieuwe stukje in beeld te krijgen.
Als een img moet repeaten, is het vaak even goed mikken op de sprite om dat (horizontaal of verticaal) mogelijk te maken. Soms kan het ook niet, dan maak je daarvoor een losse afbeelding of een tweede sprite.
  • Alles is beter dan de 38 losse images van deze helpmij-pagina. :D
Zo, dat was 'm voor vandaag. :)

Met vriendelijke groet,
CSShunter
______________
*) Overigens hakt de viewer altijd stukken foto weg. Als je in Firefox rechtsklikt en kiest voor "Afbeelding bekijken", krijg je de werkelijke foto te zien. Dan blijkt dat sommige foto's staand zijn (bv Lenny en Classic uit de serie Creative, die gekoppensneld zijn). Ik weet niet of dit aan de instellingen van de viewer of die van de flickr-API ligt of aan de viewer of de flickr-API zelf.

Gelukkig komen ze wel compleet in beeld bij de popout van de viewer, dus het is te hopen dat de bezoekers die gaan gebruiken ipv de slideshow van de viewer (eventueel valt die > knop en de pauzeknop || ook nog weg te poetsen).
Zonder de vierkante eenheidsworst van de viewer vind ik de foto's een stuk beter!

<edit>
Bij testen met resizen van het window of bij resolutie-verandering: altijd even een refresh geven zodat het javascript de nieuwe maten kan taxeren en verwerken!
</edit>
 
Laatst bewerkt:
Hoi CSShunter,

Ik vind jouw demo site er prachtig uit zien en ook qua overzichtelijkheid erg goed gestructureerd en wil hem dan ook op deze manier gaan gebruiken...

Ga jij deze demo-site zelf ook gebruiken (voor je eventuele eigen portfolio??)

Alleen ik krijg het echt niet voor elkaar om de sprite.png aan te passen, ik zag dat jij het logo hebt voorzien van een rode kleur, terwijl ik dezelfde oranje kleur in het logo wilt hebben, zie ook http://www.eyemlucien.com/test/image...900_bGRIJS.png (kleur code #f99000)

Ik wil ook het plaatje van exhibitions voorzien van een (eigen) andere foto...
En ik wil er terzijnertijd een link Fashion aan toevoegen..(aangezien ik de laatste tijd ook fashion-foto's maak).
Pagina is er al ;)

Met vriendelijke groet...
Lucien
 
Laatst bewerkt:
Hoi Lucien,
Ha, leuk dat je 'm bruikbaar vindt.

Ga jij deze demo-site zelf ook gebruiken (voor je eventuele eigen portfolio??)
Ah, was ik niet direct van plan. Dacht dat een aantal aspecten uit deze demo wel eens van pas zouden kunnen komen bij beantwoording van andere vragen op het helpmij-forum, dan kan ik naar het huidige topic verwijzen. Maar omdat er een noindex,nofollow <meta> in zit, ziet Google dat niet, en kunnen er alleen maar mensen op komen die op de link in het helpmij-forum klikken. - Mocht ik ooit iets anders met deze demo willen gaan doen, dan neem ik tevoren contact op.

=====
... de sprite.png aanpassen ...
Vlak voordat ik m'n vorige reactie #24 instuurde, zag ik je vraag #23 over het aanpassen van het logo. Ik heb er toen snel-snel nog even een oranjerood blokje in gezet.
Maar nu het serieuze vormen begint aan te namen, is het tijd voor de finishing touch!
  • Het logo heb ik aangepast in het oranje blokje, met je voorbeeld als uitgangspunt.

=====
Ik wil ook het plaatje van exhibitions voorzien van een (eigen) andere foto...
  • Dat kan, ik heb van het PSP-bestand met de laagjes een .psd bestand gemaakt, waarmee je in het laagje van de images alle gewenste wijzigingen kunt doorvoeren.

=====
En ik wil er terzijnertijd een link Fashion aan toevoegen...
Tja! :rolleyes: Als dat ook een blokje van 60*60px wordt, gaat de fotostrook uit de linkerkolom hoger worden ... dan valt het hele css-model zo'n beetje in duigen.
Zou betekenen: alle percentages e.d. (en het helper-javascript) zouden aangepast moeten worden; en dan nog: dan zal het er niet op gaan passen bij een resolutie van 1024*768px (wat ik wel een resolutie vind om rekening mee te houden).
Nu zou je de nu 6 plaatjes kunnen vervangen door 7 plaatjes die allemaal iets minder hoog zijn, maar dan krijg je een raar formaat van 60*51px: niet vierkant, en ook geen mooie landscape-verhouding.
  • Mijn idee zou zijn, om de images van de galery-pagina's te handhaven op 60*60px, maar de drie tekstpagina-links te verkleinen tot images van 60*43px. Met een beetje minder ruimte tussen de images ben je er dan ook, als je het geheel nog iets omhoog trekt.
  • Consequentie is dat de css voor de background-posities bijgesteld moet worden, en ook een paar dingen in de gewone css (en het js ook op een enkel punt). Maar dat is te doen (lees: is gedaan).
Mocht er in de toekomst nog een categorie bij moeten komen, dan zou mijn voorstel zijn om die niet rechtstreeks in het menu toe te voegen, maar een huidige categorie (bv. "Stills") om te dopen tot "Varia" of "More..." of zoiets, waarmee je een pagina binnengaat met een submenu waarin de nieuwe categorieën staan.
  • Niet alleen omdat het hoofdmenu anders weer te hoog zou worden, maar ook omdat de bezoekers anders een overdaad aan keuzemogelijkheden voorgeschoteld krijgen.
  • Alternatief zou zijn om naast het huidige kolommetje een tweede kolommetje met rubrieken te maken; maar dat wordt wel erg vol, en vergt ook vrij ingrijpende wijzigingen in de css.

=====
Pagina Fashion is er al... ;)
In de nieuwe versie is al een dummypagina aan boord voor de Fashion-pagina. ;)

=====
Nieuwe versie?
En de opmerkingen zijn:
  • In het kader van de finishing touch aan "Home" op de homepage de correcte kleur gegeven.
  • Daarbij de hover-kleur in het middenblok hetzelfde gelaten, maar de hovers voorzien van een background-color, zodat er toch wat te zien valt bij het hoveren.
  • Voor browsers die css3 ondersteunen, is ietsjepietsje schaduw toegevoegd aan de items in het middenblok.
  • Nieuwe rubriek Fashion alsvast aangemaakt.
  • Het menu op elke pagina is daardoor anders geworden.
  • Zolang die rubriek nog niet live is, kan deze simpel uit het <li> lijstje gehaald worden. Dankzij de css draait alles dan zonder die rubriek (zie index2.html, waarin de link buiten werking is gezet).
  • Sprite is aangepast m.b.t. logo, Fashion-rubriek en kleinere text-pagina links (nu deze).
  • Hier is de psd-versie (gewoon Opslaan als... enz.). NB: de sprite voor webgebruik opslaan als transparant .png bestand, i.v.m. de transparante hoekjes van de css pop-up.
  • Op de pagina About ook je echte naam vermeld: voor Google-zoekers die daarop zoeken. En wat uitgebreid met andere takken van sport, die ik op internet tegenkwam. Hoe groter het scala, des te meer kans op opdrachten!
Nieuwe zip met alles er in (ook de gewijzigde all-styles.css en css-helper.js, pagina's met herziene menu's enz.): eye2.zip

Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan