div
は、ブラウザウィンドウの上部から約100pxに配置されています。ユーザーがスクロールダウンすると、が画面の一番上に達するまで、のどこにいても、div
がそのまま残ります。次に、JQueryを使っていくつかのCSSを変更して、固定とマージンを0に変更します。div
が画面の上部に表示されている場合はどうすればJQueryでテストできますか?要素が画面上部にある場合のJQueryのテスト
答えて
var distance = $('div').offset().top,
$window = $(window);
$window.scroll(function() {
if ($window.scrollTop() >= distance) {
// Your div has reached the top
}
});
P.S.パフォーマンスを向上させるには、スクロールイベントハンドラを調整する必要があります。
John Resigの記事:Learning from Twitterをご覧ください。
答えはそれほど多くはありませんが、他の人に役立つ可能性があります。上記の受け入れられた答えを使用して、「Twitterから学ぶ」リンク(あなたに感謝@ジョセフ・シブラー)を参照しながら、私は以下を思いつきました。
私の主なナビゲーションにはTwitter Bootstrap Navbarを使用しています。 IDはmegamenu
です。
私のページには「ログイン」ボタンがあります。このボタンをクリックすると、ナビゲーションバーとその下のすべてのコンテンツがスライドしてログインフォームが表示されます。だから何?さて、私のnavbarの位置は変更されています。もし私がその位置を更新しないと、navbarはブラウザの上に飛びます。
ナビゲーションバーの位置を更新するためにこれを思いついたので、ユーザーが「ログイン」をクリックしてスクロールすると、ナビゲーションバーが正しく上に固定されます。
logincollapse
は、login
ボタンがクリックされるまでログインフォームとその他の隠しコンテンツを保持するコンテナdivです。
私は改善の余地があると確信しています - それで私を修正してください、それに応じて更新します。
jqueryの
var did_scroll = false,
$window = $(window),
megamenu_distance = $('#megamenu').offset().top; // The default position of the navbar
$('#logincollapse').slideToggle(300, 'easeInOutQuint', function() {
megamenu_distance = $('#megamenu').position().top; // Updated position of the navbar
....
});
$window.scroll(function (event) {
did_scroll = true;
});
setInterval(function() {
if (did_scroll)
{
did_scroll = false;
if ($window.scrollTop() >= megamenu_distance)
{
$('#megamenu').addClass('navbar-fixed-top');
}
else
{
$('#megamenu').removeClass('navbar-fixed-top');
}
}
}, 250);
あなたはヘッダを持っています。次にバーを脇に置いてください。
Javascriptを:それは、画面の一番上にあるときに、バーを脇に固定する
var scroll_happened = false;
var aside_from_top = $('aside').offset().top;
$window = $(window);
$window.scroll(function()
{
scroll_happened = true;
});
setInterval(function()
{
if(scroll_happened == true)
{
scroll_happened = false;
if($window.scrollTop() >= aside_from_top)
{
$('#aside_container').addClass('fixed_aside');
}
else
{
$('#aside_container').removeClass('fixed_aside');
}
}
} , 250);
のCss:
.fixed_aside
{
position: fixed;
top: 0;
bottom: 0;
}
HTML:
<aside>
<div id="aside_container">
<section>
</section>
<section>
</section>
<section>
</section>
</div>
</aside>
ねえ、あなたは次のように行うことができますこれは:
var distance = $('.yourclass').offset().top;
$(window).scroll(function() {
if ($(this).scrollTop() >= distance) {
console.log('is in top');
} else {
console.log('is not in top');
}
});
$(document).ready(function(){
var $doc = $(document);
var position = 0;
var top = $doc.scrollTop(); // 현재 스크롤바 위치
var screenSize = 0; // 화면크기
var halfScreenSize = 0; // 화면의 반
/* 사용자 설정 값 시작 */
var pageWidth = 1000; // 페이지 폭, 단위:px
var leftOffet = 409; // 중앙에서의 폭(왼쪽 -, 오른쪽 +), 단위:px
var leftMargin = 909; // 페이지 폭보다 화면이 작을때 옵셋, 단위:px, leftOffet과 pageWidth의 반만큼 차이가 난다.
var speed = 1500; // 따라다닐 속도 : "slow", "normal", or "fast" or numeric(단위:msec)
var easing = 'swing'; // 따라다니는 방법 기본 두가지 linear, swing
var $layer = $('#quick'); // 레이어 셀렉팅
var layerTopOffset = 140; // 레이어 높이 상한선, 단위:px
$layer.css('z-index', 10); // 레이어 z-인덱스
/* 사용자 설정 값 끝 */
// 좌우 값을 설정하기 위한 함수
function resetXPosition()
{
$screenSize = $('#contact').width(); // 화면크기
halfScreenSize = $screenSize/2; // 화면의 반
xPosition = halfScreenSize + leftOffet;
if ($screenSize < pageWidth)
xPosition = leftMargin;
$layer.css('left', xPosition);
}
// 스크롤 바를 내린 상태에서 리프레시 했을 경우를 위해
if (top > 0)
$doc.scrollTop(layerTopOffset+top);
else
$doc.scrollTop(0);
// 최초 레이어가 있을 자리 세팅
$layer.css('top',layerTopOffset);
resetXPosition();
// 윈도우 크기 변경 이벤트가 발생하면
$(window).resize(resetXPosition);
// 스크롤이벤트가 발생하면
$(window).scroll(function(){
yPosition = $doc.scrollTop() + layerTopOffset;
$layer.animate({"top":yPosition }, {duration:speed, easing:easing, queue:false});
});
});
あなたはあなたが追加または変更したものを説明することができますか? – lalithkumar
- 1. ".hiddenpost"の一番下が画面上部にある場合
- 2. 小画面上の親要素の上にある子要素
- 3. 要素の下端が画面の上部に到達する場合、要素を切り替えます。
- 4. 要素が別の要素の上にある場合?
- 5. jQuery - 要素をアンカーリンクで上部の代わりに画面の中央にスクロール
- 6. 要素が画面上にあるときのMoveToElement
- 7. 要素が現在のタブにある場合のjQuery
- 8. jQueryすべての要素にクラスがある場合
- 9. 配列にhtml要素がある場合はjQueryのチェック
- 10. 要素にクラスdoがある場合のjQuery
- 11. Android:すべての要素が画面上部に表示される
- 12. 画面上のAndroidの位置要素
- 13. Xamarin.Forms、Androidの場合、画面上部に黒いバーが表示されます
- 14. イベント結果が要素と等しい場合、jQueryテスト?
- 15. jQuery fadeout要素がホバリングの場合
- 16. 要素/ divが画面に表示されない場合のCSSの変更
- 17. Jquery:#IDがURLの最後にある場合、ブラウザ画面の上部に要素があるページが表示されます。#ID要素までスクロールできるのですか?
- 18. Jqueryモバイルとタッチオーバーフローが画面上部にジャンプする
- 19. 画面の表面要素
- 20. 画面上部にTextBlockと画像を合わせる - uwp
- 21. jQuery、要素が画面上にあるときにアニメーションを再生する方法
- 22. Outer Div内部にインラインブロック要素がある場合のコンテンツの幅
- 23. UIImagePickerControllerSourceTypeSavedPhotos iosの画面上部にアルバムがあります。
- 24. セレンテスト。画面にエラーがある場合の単純な例外
- 25. jquery mouseoverマウスがポップアップウィンドウの上にある場合に要素を隠さないようにする
- 26. divを画面の上部に貼る
- 27. 画面の下部にグラデーションが必要
- 28. Javascript Assignment要素がある場合は
- 29. 要素がデータである場合は
- 30. マウスがまだ要素の上にある場合でもjqueryのツールチップを非表示にします
私は距離のためのPX#に入れることはできますか? –
@Hubrid - もちろん。 'px'という文字を含まないようにしてください。数字にしたいからです。 –