Имитировать позицию: исправлено в jQuery
У меня есть заголовок, который больше ширины страницы, поэтому я не могу использовать position:fixed
, чтобы установить его поверх страницы, потому что мне абсолютно необходимо прокручивать по горизонтали. Я не думаю, что для этого есть решение CSS.
Я сделал образец кода, чтобы попытаться воспроизвести эффект position:fixed
, но есть нежелательные переходы. Мой код выглядит следующим образом:
$(window).scroll(function() {
var y = $(window).scrollTop();
$("#headertable").css('top', y+175);
});
Есть ли способ сделать это действительно прикрепленным, например position:fixed
? (Любопытно, что он лучше отображается прямо сейчас в IE, чем в FF, потому что у него нет этого эффекта "прыжка" )
Здесь можно найти пример: http://jsbin.com/eyuya/7. Первая таблица с position:fixed
, другая - мой код. Это эффект прыжка, который я пытаюсь избежать, если есть решение.
Edit
По-прежнему не найдено удовлетворительного решения, я думаю, что я буду использовать это в конце, потому что сайт предназначен для использования в IE, и это не похоже на то, что существует чудесное решение для присоединения div к окну просмотра, и иметь возможность прокручивать по горизонтали. Я начинаю щедрость, если кто-то столкнулся с этой проблемой раньше и нашел хорошее решение.
Спасибо, что люди, которые уже пытались ответить на этот вопрос, не так просты, как кажется проблематичным;)
Ответы
Ответ 1
Вы можете обернуть элемент статическим позиционированным DIV для получения полос прокрутки, а затем прослушать прокрутку окна и поместить фиксированный заголовок в соответствии со значением scrollLeft
:
var elem = $('#headertable');
var win = $(window);
var wrap = $('<div>').css({
width: elem.width(),
height: elem.height()
});
elem.wrap(wrap);
win.scroll(function() {
elem.css('left', win.scrollLeft()*-1);
});
Кажется, работает в IE/FF/Chrome:
http://jsbin.com/efuya3
Ответ 2
Вы можете создать фиктивный видимый: скрытый элемент с той же шириной, что и позиция: фиксированный элемент. Вот пример:
<html>
<head>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.4.2");
google.setOnLoadCallback(function() {
$(document).ready(function(){
var dummy = $('<div>dummy</div>').width( $('#header').width() + 'px').css('visibility','hidden');
$('body').append(dummy);
});
});
</script>
</head>
<body>
<div id="header" style="width:2000px;background:red;position:fixed;top:0;height:20px;">
This is aheder with fixed position
</div>
<div style="height:1200px;background:green;">
</div>
</body>
</html>
Ответ 3
http://fixedheadertable.com/demo/multipletablesdemo.html
попробуйте вместо этого:)
Ответ 4
вы можете создать обертку div, а затем указать ширину в div
например, ширина: 150%;
или ширины; 2000px;
в зависимости от ваших требований
зачем вам нужно прокручивать?