Как убрать смещение страницы при появлении скроллинга

На одном проекте появилась необходимость убрать смещение страницы при появлении на ней вертикальной прокрутки, т.к. страницы прыгали и это сильно бросалось в глаза.
Тут же придумалось несложное, а главное — быстрое решение на javascript:

<script type="text/javascript">
	  function ret() // эта функция двигает body, чтобы оно не прыгало если на сайте появилась прокрутка
	  {
		bodyH = getDocumentHeight(); //проверяем высоту документа
		clientH = getClientHeight(); //проверяем высоту окна браузера
		razn = (bodyH - clientH);
		if (razn>0) 	$("body").css("margin", "0 0 0 0");
		else $("body").css("margin", "0 0 0 -17px");
	  }
           ret();
</script>
  • B216236

    Ведь можно сделать вот так:
    body: {overflow-y :scroll»;}

    • Аноним

      не решение, т.к. если вы уменьшите ширину браузера, или разрешение вашего монитора меньше ширины страницы, то вы просто не увидите часть контента и не сможете прокрутить страницу. Думайте о всех пользователях вашего ресурса

      • Alexander

        Если разрешение монитора меньше ширины страницы, то как в этом случае помогут манипуляции с вертикальным скроллингом?

  • http://twitter.com/vdv73rus Vislov Dmitry

    17px ну какой-то хардкод. Ширина полосы прокрутки скроллинга зависит от ОС, браузера и темы рабочего стола.

    • Аноним

      не поспоришь, но в 90% случаев это прокатит

  • Dimbit

    getDocumentHeight() — не работает

    • Аноним

      попробуйте использовать $(«body»).height(), если подключена библ. jQuery

  • ForMotherRuss1a

    А почему ты берёшь высоту документа и высоту клиента? Если мы убираем вертикальную полосу прокрутки? Вроде как ширина нужна, или я что-то не понял?

    • admin

      ты что-то не понял) высота берется для проверки, есть ли прокрутка в данный момент (путем получения разницы между высотой браузера и страницы)