Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Кнопка наверх (https://javascript.ru/forum/events/42042-knopka-naverkh.html)

dolte 10.10.2013 11:30

Кнопка наверх
 
Как сделать чтобы при прокрутке страницы кнопка фиксировалась отсносительно футера.

Т.е крутим вниз страницу, кнопка появилась.
Если дошли до футера, кнопка не двигается, а фиксируется относительно отступа от низа страницы.

Как саму кнопку сделать знаю:

$(document).ready(function(){
  $(window).scroll(function () {
	if ($(this).scrollTop() > 200) {
		$('#scroller').fadeIn();
	} else {
		$('#scroller').fadeOut();
	}
  });
  $('#scroller').click(function () {$('body,html').animate({scrollTop: 0}, 400); return false;});
});


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

она fixed, и bottom:70px;
Когда появляется футер, чтобы уже от него было 70px;

BETEPAH 10.10.2013 22:28

навскидку:
от высоты страницы отнимаете высоту скролла - получаете сколько осталось до низа страницы.
От высоты футера отнимаете полученную выше разницу. Если получилось отрицательное число боттом - 70пкс. Если получилось положительное (т.е. футер уже видно) - 70 + это положительное число пикселей.

рони 11.10.2013 02:24

Цитата:

Сообщение от dolte
чтобы она не наползала на футер (футер высокий)

Вариант ...
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>
  <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
  <style type='text/css'>
  body{padding:0px;margin:0px}
  *{margin:0}
  html,body{height:1000px}
  .wrapper{min-height:100%;height: auto !important;height:100%;margin:0 auto -170px}
  .footer,.push{height:170px}
  .footer{background:#F00}
  #scroll{background:#008000;height:50px;width:50px;position:fixed;right:0px;bottom:40px;display:none}
  </style>
<script type='text/javascript'>
$(function(){
var up = $("#scroll"),
    b = up.css("bottom"),
    h = up.height(),
    d = $(".footer").offset();
$(document)
    .scroll(function () {
        var c = $(window)
            .height(),
            a = $(this)
                .scrollTop();
        200 < a ? up.fadeIn() : up.fadeOut();
        d.top > a + c - h ? up.css({
            background: "red",
            bottom: b
        }) : up.css({
            background: "green",
            bottom: a + c - d.top
        })
    });
up.click(function () {$('body,html').animate({scrollTop: 0}, 400); return false;});
});
</script>
</head>
<body>
<div id="scroll"></div>
<div class="wrapper">
<p>Your website content here.</p>
<div class="push"></div>
</div>
<div class="footer">
  <p>Copyright (c) 2013</p>
</div>
</body>
</html>

рони 11.10.2013 08:59

Poznakomlus,
:-? вы показали что кнопку можно создать программно, но тегом проще по моему и как ваш код решает проблему
Цитата:

Сообщение от dolte
мне надо фиксировать её относительно появления футера, т.е чтобы она не наползала на футер (футер высокий)


dolte 11.10.2013 09:34

рони,
Благодарю =) отлично


Часовой пояс GMT +3, время: 08:15.