CSS feladvány
Adott egy, egy fix szélességű blokkot és annak fejlécét tartalmazó, középre igazított oldal. A fejléckép szélesebb, mint a fix blokk, azaz kétoldalt kilóg belőle.
A vízszintes görgetősáv csak akkor jelenik meg, ha a böngészőablakot keskenyebbre húzom, mint a fix blokk szélessége, akkor nem, ha a fix blokknál szélesebb, de a kilógó fejlécnél szűkebb. Ha a böngészőablak keskenyebb, mint a fix blokk szélessége, akkor a fejléc ugyanúgy megáll, mint a fix blokk, nem tolódik tovább.
Tehát voltaképpen a fejléc nem középre van igazítva, hanem a középre igazított blokkot követi, viszont nem okozhat görgetősávot, görgetősávot csak a blokk okozhat.
Mi a megoldás?
■ A vízszintes görgetősáv csak akkor jelenik meg, ha a böngészőablakot keskenyebbre húzom, mint a fix blokk szélessége, akkor nem, ha a fix blokknál szélesebb, de a kilógó fejlécnél szűkebb. Ha a böngészőablak keskenyebb, mint a fix blokk szélessége, akkor a fejléc ugyanúgy megáll, mint a fix blokk, nem tolódik tovább.
Tehát voltaképpen a fejléc nem középre van igazítva, hanem a középre igazított blokkot követi, viszont nem okozhat görgetősávot, görgetősávot csak a blokk okozhat.
Mi a megoldás?
ötlet
szerk: itt egy új megoldás:
Na jó, de akkor ez nem
Valaki? :)
háttér vs elem
az én példámban 800 és 1000 pixel közötti szélességű böngészőnél tüntesd el a görgetősávot diszkrét js-sel ha ennyire zavar. sima xhtml-css-sel szerintem ez nem megoldható.
De én azért tettem fel a
jah
Igen, de nem tudom, mennyire
Mondjuk holnap... addig még bírd ki :)
De addig is: jó a gondolatmeneted egyébként, annyi kiegészítéssel, hogy body háttér helyett 100% széles divben centerbe rakott background is jó. Persze ezzel nincs megoldva a blokkhoz kötöttség.
És persze önmagában a blokkhoz kötés sem olyan nagy wasistdas, de akkor meg nincs megoldva a görgetősáv...
második nekifutás
ff3-ban és ie6-ban teszteltem, szóval elvileg másban is mennie kell.
ez a megoldás? (ja és persze segített, hogy azt írtad hogy jó a gondolatmenet, enélkül elvetettem volna az abszolút pozícionált divet.)
szerk: ie7, opera 9.62, safari 3.2.2 és chrome-ban is jó. win alatt. ami érdekes, hogy webkitben (safari, chrome) a középre igazított body háttérkép nem csúszik el. raktam fel egy online példát ahol áttetsző a tartalom, ott jól látszik.
ehh
pedig hányszor előjött már ez... kicsit túlmisztifikáltam. :)
Grat.
Ön nyert! Gratulálok
Igen, a dupla kép a trükk. Pontosan úgy: van egy 100% széles elem center háttérrel (ez nálad a body), és van egy azt eltakaró, a contenthez kötött másolat, amit a content jobb szélénél meg kell vágni, hogy ne okozzon görgetősávot.
Bemásolom én is a weblabor-fejléces példával.
- FF-ben szinkronban vannak, ha a fejléc és a content eltérő párosságú.
- Opera/Chrome esetén szinkron van akkor, ha a fejléc és a content azonos párosságú (ez az elvárt viselkedés sztem), viszont ez érdekes módon megfordul, ha a böngésző keskenyebb, mint a fejléc: akkor a szinkron eltérő párosságnál jelentkezik.
- IE mindez pontos fordítottja: széles ablaknál szinkron eltérő párossággal, fejlécszélesség alatt pedig szinkron azonos párossággal.
Következő kérdés, hány milyen beállításokat használjunk, hogy minimalizáljuk az esélyét annak, hogy egy látogatónál 1px-es rés legyen a vágásnál...
nem kell position, 1px
az 1px-es ugrálás pedig a tapasztalataim szerint azért van, mert máshogy kerekíti a legtöbb böngésző a background-position tulajdonság center értékét és a margin tulajdonság auto értékét (ami egyébként teljesen érthetetlen nekem, mint webfejlesztőnek, böngészőprogramozóként biztos meg tudnám indokolni). egyszer erről is csináltam egy példát.
szerk: ja igen amit itt belinkeltem nézd meg különböző szélességű ablakokban. bizonyos ablakszélességnél jó, bizonyosnál nem. ie, ff, mindegy.
Izgalmas
Igen, itt is az van, amiről
Ha az ablakot lépésekben 1 pixelenként szűkíted (windowsban Ctrl+nyilakkal lehet csinálni), akkor az tapasztalható, hogy az auto margin (kék rész) 2 lépésenként ugrik egy 1 px-t rendesen, a center bg is, de amikor elérjük a kép szélességét, akkor a center bg, vagyis a sárga rész egy lépésnél kimarad. Ilyenkor fordul át az említett "szinkron". Opera/Webkit/IE-nél van így, FF-nél nem fordul át a szinkron, vagyis nincs ilyen kimaradás.
Igen, gondoltam rá, hogy
Az 1px-es ugrálásnál nekem az az igazán meglepő, hogy FF-et kivéve minden böngésző máshogy viselkedik, ha az ablak szélesebb, mint a fejléc, ill. ha keskenyebb. Tehát nálad például a fejléc 1024px, a content 800px, azonos a párosság. Ennek megfelelően FF-ben ugrál, de nem ez a lényeg, hanem hogy pl. Opera/Chrome-ban nem ugrál, azaz szinkronban van, viszont 1024-nél keskenyebb ablaknál ugrál; ill. IE-ben fordítva.
Valami olyasmi lehet emögött, hogy negatív értéknél máshogy kerekít (?), merthogy akkor megy át a center background offsetje negatívba...
A fejléc kép?
Igen.
Az én nevezésem
Itt is elcsúszik a fejléc és
Update
gex mindegyik kísérletében ott van a min-width, csak az első kísérletben erről elterelte a figyelmet a túl széles div. A további kísérletekben pedig már duplikálta a hátteret :)
Az egyetlen kényelmetlenség vele csak, hogy ie6-re workaround kell rá.
nekem nem jó
Tényleg, body háttérrel