#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
У меня в контейнере отображается довольно огромное изображение, изображение растягивается вместе с портом просмотра при изменении его размера, но поскольку изображение такое большое, я добавил кнопки прокрутки сбоку страницы, вверх и вниз, единственная проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я нажимаю вверх илиесли ограничений нет, пользователь может продолжать, пока изображение полностью не исчезнет из поля зрения, как я могу остановить это?
Вот код, который у меня есть на данный момент,
HTML:
<body>
<div id="wrapper">
<div class="scroll top"></div>
<div id="content">
<div id="zoom_container">
<img id="image" src="8052x2000px" />
</div>
</div>
<div class="scroll bot"></div>
</div>
</body>
CSS:
body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
#wrapper {
overflow: hidden;
height: 100%;
max-height: 100%;
}
#content {
min-height: 100% !important;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
}
#image {
position: fixed;
top: 0;
left: 0;
width: 100%;
}
jQuery:
//side scroller bar
$('.scroll').live('click', function(){
var direction = $(this).hasClass('top');
var img_pos_top = $("#zoom_container img").position().top;
var inc = 0;
inc = $("#zoom_container img").height() / 10;
if(direction)
{
inc = $("#zoom_container img").position().top inc;
}
else
{
inc = $("#zoom_container img").position().top - inc;
}
$("#zoom_container img").css({ position: 'relative',top: inc });
});
итак, как вы можете видеть, я увеличиваю или уменьшаю верхнее расположение изображения на 10% от его высоты при каждом нажатии, как я могу убедиться, что верхняя часть изображения никогда не будет опускаться ниже верхней части окна просмотра, а нижняя часть изображения никогда не будет подниматься выше нижней части окна просмотра?область просмотра?
Есть ли лучший, более эффективный способ достижения того же результата?
Комментарии:
1. я играю на jsfiddle с этим … можете ли вы поделиться URL-адресом своей фотографии?
2. Конечно, никаких проблем … dummyimage.com/2500×2500/000/fff
Ответ №1:
Попробуйте это.
<html>
<head>
<title>Canvas Sizing</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var canvasContext;
resizeCanvas();
$(window).resize(function() { resizeCanvas() });
function resizeCanvas()
{
var w = window.innerWidth - 40;
var h = window.innerHeight - 40;
var canvasString = '<canvas id="mainCanvas" width="' w '" height="' h '">Canvas is not supported</canvas>';
$('#contentholder').empty();
$(canvasString).appendTo('#contentholder');
canvasContext = $('#mainCanvas').get(0).getContext('2d');
drawOnCanvas();
}
function drawOnCanvas()
{
var x = 15;
var y = 35;
canvasContext.font = "30pt serif";
canvasContext.fillStyle="#0f0";
canvasContext.fillText("Hello World!", x, y);
}
});
</script>
<style>
#mainCanvas
{
background-color: #000;
border: solid 3px #0F0;
}
body
{
background: #000;
}
#contentholder
{
width: 99%;
height: 99%;
margin: auto;
}
</style
</head>
<body>
<div id="contentholder"></div>
</body>