Autor Zpráva
Vaetas
Profil
Mám problé, který by jsem stručně popsal v nadpisu, ale trochu to rozepíšu. Mám danou pevnou šířku stránky, a automatické vycentrování. Jenže když je stránka delší, tak se objeví scrollbar a stránka se znovu vycentruje trochu doleva. Což se mi nelíbí, páč při proklikávání se stránka mihotá a to není moc pěkný. Ale teď co vlastně chci. Chci aby byla stránka umístěná na středu a scrollbar ji nějak neomezoval. Prostě by ji scrollbat překryl.

Děkuji
Str4wberry
Profil
Vidím asi 3 možnosti.

1) Vykašlat se na to.
2) Natáhnout všechny stránky tak, aby se posuvník zobrazil (min-height).
3) Rolování řešit JavaScriptem. Scrollbar bude sestávat z obyčejných <div>ů, takže nebude muset ovlivňovat šíři viewportu.
Chamurappi
Profil
Reaguji na Str4wberryho:
2) Natáhnout všechny stránky tak, aby se posuvník zobrazil (min-height).
Nebo raději vynutit zobrazení posuvníku jinak:
html { overflow-y: scroll; }

3) Rolování řešit JavaScriptem.
To už by mi přišlo lepší JavaScriptem zjistit šířku posuvníku a při načtení a onresize vykompenzovat případný posun obsahu nějakým odšťouchnutím.
Str4wberry
Profil
Nebo raději vynutit zobrazení posuvníku jinak:
Těžko říct, co bude lepší. Zobrazení posuvníku, kterým nelze posouvat, může být matoucí, natahování výšky je zase zbytečné.

To už by mi přišlo lepší JavaScriptem zjistit šířku posuvníku a při načtení a onresize vykompenzovat případný posun obsahu nějakým odšťouchnutím.
Čím ti to přijde lepší?
Chamurappi
Profil
Reaguji na Str4wberryho:
Čím ti to přijde lepší?
Je to mnohem jednodušší na výrobu. Zakázání standardního posuvníku má řadu důsledků, které je nutné ručně ošetřovat. Dělat (nestandardně vypadající) napodobeninu jen kvůli posunu obsahu o pár pixelů mi připadá dost přehnané.
margin
Profil *
Str4wberry:
Zobrazení posuvníku, kterým nelze posouvat, může být matoucí, natahování výšky je zase zbytečné.
Natahování výšky mi přijde zbytečné a matoucí současně, protože budu chtít odrolovat, abych zjistil, co je skryto, a tam bude prázdno.
Str4wberry
Profil
No, na tu JS náhradu jsou desítky hotových řešení. Obávám se, že s odšťouchávači to bude slabší*.

*) Ani mě hned nenapadá pod čím to hledat.
Plaváček
Profil
Vaetas:

Neřešit.
Petr ZZZ
Profil
U svého "deníčku" mám dole velkou mezeru:

body { width:960px; margin:0 auto 300px auto; }

(Mám to proto, aby člověk hned viděl, že je na konci stránky. Zobrazení posuvníku i u kratší stránky je jen vedlejší efekt.)
Chamurappi
Profil
Reaguji na Str4wberryho:
na tu JS náhradu jsou desítky hotových řešení
Z nichž velká část funguje mizerně. I kdyby měla náhrada vyřešené rolování kolečkem, klávesnicí i dotykem (se zachováním setrvačnosti) a autoscroll, nikdy nebude respektovat uživatelské nastavení, jako je třeba velikost a plynulost posunu. Dojem, že na stránce je cosi divného, je pak silnější, než kdyby obsahový blok cukal o pár pixelů do strany.

s odšťouchávači to bude slabší
Dalo by se to napsat možná nějak takhle:
var root = document.documentElement;
var scrollbarWidth = (function()
{
  var temp = document.createElement("div")
  temp.style.cssText = "position: absolute; top: 0; left: 0; width: 1px; height: 101%";
  var w = root.clientWidth;
  root.appendChild(temp);
  w -= root.clientWidth;
  root.removeChild(temp);
  return w;
})();

window.onload = function()
{
  (window.onresize = function()
  {
    document.body.style.marginRight = ((window.innerHeight || root.clientHeight) < root.scrollHeight) ? "" : scrollbarWidth + "px";
  })();
};
Zkusil jsem to nasadit na Webylon, krátká stránka je třeba tahle, dlouhé jsou vesměs všechny ostatní. Momentálně mám při ruce jen pár prohlížečů, tak nevím, jak to kde zlobí…
Str4wberry
Profil
Osobně JS šoupátko nevidím jako přílišný problém. Sám v hlavním prohlížeči už nějaký ten rok JS posuvník používám a dojem z něčeho divného nemám.

Tvé odšťouchávání funguje, zdá se, dobře. Akorát mě tak napadá, zda bude slučitelné s obrázkovým centrovaným a svisle se opakujícím pozadím a fixní šířkou.

Moderátor Chamurappi: S odstupem času doplňuji odkaz na související článek od Str4wberryho: Poskakování stránky kvůli posuvníku

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: