Jump to content
  • 0

Прокрутка содержимого блока


Suppy
 Share

Question

Здравствуйте! На сайте есть некоторый блок фиксированной высоту при переполнении которого должны появляться сверху и снизу кнопки прокрутки(хочется заменить не оч эстетичное overflow). Подскажите пожалуйста плагин к jquery если такой есть или другое готовое решение. Или на худой конец скажите пожалуйста куда копать.

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

В итоге написал свое решение, задача немного конкретизировалась и это по большей части для фотогалереи. Все блоки элементов(фотографий например) имеют фиксированную величину, которая указывается в скрипте. Это необходимо знать, чтобы вовремя убирать кнопки прокрутки. Дольше всего пришлось помучиться с кроссбраузерностью, но терь все работает. Вот, может кому пригодится..

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
<style type="text/css">
.up-but {
cursor: pointer;
height: 20px;
width: 47px;
visibility: hidden;
background: url('up-but.gif') no-repeat;
margin-left: 67px;
}

.down-but {
cursor: pointer;
height: 20px;
visibility: hidden;
width: 47px;
background: url('down-but.gif') no-repeat;
margin-left: 67px;
}

.gallery {
width: 185px; height: 320px;
border: 2px solid black;
overflow: hidden;
position: relative;
}

.scroll {
position: relative;
top: 0;
}

</style>
<script type="text/javascript">
$(document).ready(function(){
var item_height=105;
var scroll_speed=600;
var item_num=0;
var cont_height=parseFloat($(".gallery").css("height"));
$(".gallery .scroll div").each(function() {item_num++;});
all_item_height=item_height*item_num;
var dif=all_item_height-cont_height;
if (dif > 0) $(".down-but").css("visibility", "visible");
$(".down-but").click(function(){
$(".scroll").animate({top: "-="+item_height}, scroll_speed);
$(".up-but").css("visibility", "visible");
dif=dif-item_height;
if (dif<0) $(".down-but").css("visibility", "hidden");
return false;
});
$(".up-but").click(function(){
$(".down-but").css("visibility", "visible");
$(".scroll").animate({top: "+="+item_height}, scroll_speed);
dif=dif+item_height;
if (dif+1 > all_item_height-cont_height) $(".up-but").css("visibility", "hidden");
return false;
});

});
</script>
</head>
<body>
<div class="up-but">Вверх</div>
<div class="gallery">
<div class="scroll">
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок1</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок2</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок3</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок4</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок5</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок6</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок7</div>
</div>
</div>
<div class="down-but">Вниз</div>
</body>
</html>

Link to comment
Share on other sites

  • 0

В данном конкретном случае для самодостаточности примера- скопировал и оценил (поддерживал бы форум вложения, выложил бы с кнопочками). А вообще это удобно. Если пользователь посещал любой сайт, грузящий библиотеку с Google Code ( тот же gmail), то она уже будет в кэше и соответственно загрузится мгновенно. Но с оправданностью такого решения можно конечно и поспорить.

Link to comment
Share on other sites

  • 0
В итоге написал свое решение, задача немного конкретизировалась и это по большей части для фотогалереи. Все блоки элементов(фотографий например) имеют фиксированную величину, которая указывается в скрипте. Это необходимо знать, чтобы вовремя убирать кнопки прокрутки. Дольше всего пришлось помучиться с кроссбраузерностью, но терь все работает. Вот, может кому пригодится..

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"></script>
<style type="text/css">
.up-but {
cursor: pointer;
height: 20px;
width: 47px;
visibility: hidden;
background: url('up-but.gif') no-repeat;
margin-left: 67px;
}

.down-but {
cursor: pointer;
height: 20px;
visibility: hidden;
width: 47px;
background: url('down-but.gif') no-repeat;
margin-left: 67px;
}

.gallery {
width: 185px; height: 320px;
border: 2px solid black;
overflow: hidden;
position: relative;
}

.scroll {
position: relative;
top: 0;
}

</style>
<script type="text/javascript">
$(document).ready(function(){
var item_height=105;
var scroll_speed=600;
var item_num=0;
var cont_height=parseFloat($(".gallery").css("height"));
$(".gallery .scroll div").each(function() {item_num++;});
all_item_height=item_height*item_num;
var dif=all_item_height-cont_height;
if (dif > 0) $(".down-but").css("visibility", "visible");
$(".down-but").click(function(){
$(".scroll").animate({top: "-="+item_height}, scroll_speed);
$(".up-but").css("visibility", "visible");
dif=dif-item_height;
if (dif<0) $(".down-but").css("visibility", "hidden");
return false;
});
$(".up-but").click(function(){
$(".down-but").css("visibility", "visible");
$(".scroll").animate({top: "+="+item_height}, scroll_speed);
dif=dif+item_height;
if (dif+1 > all_item_height-cont_height) $(".up-but").css("visibility", "hidden");
return false;
});

});
</script>
</head>
<body>
<div class="up-but">Вверх</div>
<div class="gallery">
<div class="scroll">
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок1</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок2</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок3</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок4</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок5</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок6</div>
<div style="margin-top: 5px; background: #ededed; height: 100px; width: 180px">Блок7</div>
</div>
</div>
<div class="down-but">Вниз</div>
</body>
</html>

Интересное решение. А как сюда добавить, что бы скрол работал когда на мышке колесиком скролишь?

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy