2016-12-26 5 views
0

スクリプトは視差効果に関して機能しますが、一度ページがスクロールされると 'logo' divがすぐに左に飛び出し、これを修正する方法がわかりません。可能であれば、私は紛争の原因を知りたいと思います。視差要素の位置ずれを防止するにはどうすればよいですか?

*このスクリプトは、htmlの下に記載されています。あなたがスクロールするとき

html { 
 
overflow: 
 
} 
 

 
body { 
 
    overflow-y: auto; 
 
    overflow-x: hidden; 
 
    height: 100vh; 
 
    margin: 0; /* remove default margin */ 
 
} 
 

 
div#container{ 
 
    height: 100%; 
 
    margin: 0; 
 
} 
 

 
div#static_nav { 
 
    width: 100%; 
 
    height: 2em; 
 
    padding-top: 10px; 
 
    position: fixed; 
 
    z-index: 999; 
 
} 
 

 
.static_nav_full { 
 
    background-color: #3A3D3F; 
 
    transition: background-color 2s; 
 
    opacity: .90; 
 
} 
 

 
.navbar{ 
 
    font-family: 'Source Sans Pro', sans-serif; 
 
    padding-right: 20px; 
 
    background-color: transparent; 
 
    text-align: right; 
 

 
} 
 

 
div#static_nav a{ 
 
    color: white; 
 
    text-decoration: none; 
 
    padding-right: 20px; 
 
} 
 

 
div#block_one, div#block_two, div#block_three, 
 
div#block_four{ 
 
    height: 100vh; 
 
    z-index: 1; 
 
} 
 

 
div#block_one{ 
 
    background-image: url(https://images5.alphacoders.com/439/thumb-1920-439361.jpg); 
 
    background-size: cover; 
 
    background-attachment: fixed; 
 
    transition: all 0.2s ease; 
 

 
} 
 

 
div#logo{ 
 
    background-image: url(https://cdn.pixabay.com/photo/2016/06/13/16/35/indian-1454621_1280.png); 
 
    background-size: contain; 
 
    background-position: center; 
 
    background-repeat: no-repeat; 
 
    background-attachment: fixed; 
 
    height: 100%; 
 
} 
 

 
div#block_five{ 
 
    height: 30vh; 
 
    background-color: #F5F5F5; 
 
}
<!DOCTYPE html> 
 

 
<html lang = "en"> 
 
<meta charset = "utf-8" /> 
 

 
<head> 
 
    <link rel = "stylesheet" type = "text/css" href = "tof_css.css" /> 
 
    <script src ="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 

 
    <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Lato|Kanit|Heebo|Source+Sans+Pro:200"> 
 

 
    <script src="finaljs.js"></script> 
 
    <script src="smthscrll.js"></script> 
 
</head> 
 

 
<body> 
 
    <div id = "container"> 
 

 
    <header> 
 
     <div id = "static_nav"> 
 
     <nav class = "navbar"> 
 
      <a href = "#block_one">Home</a> 
 
      <a href = "#block_two">About</a> 
 
      <a href = "#block_four">People</a> 
 
      <a href = "#block_five">Contact</a> 
 
      <a href = "">Log In</a> 
 
     </nav> 
 
     </div> 
 
    </header> 
 

 

 
    <div id = "block_one"> 
 
    <div id = "logo"> 
 
    </div> 
 
    </div> 
 

 
    <div id = "block_two"> 
 
    </div> 
 

 
    <div id = "block_three"> 
 
    </div> 
 

 
    <div id = "block_four"> 
 
    </div> 
 

 
    <div id = "block_five"> 
 
    </div> 
 

 
</div> 
 

 
<script type="text/javascript"> 
 

 
     (function() { 
 

 
      var documentEl = $(document), 
 
       blockone = $('#block_one'); 
 
       logo = $('#logo'); 
 

 
      documentEl.on('scroll', function() { 
 
       var currScrollPos = documentEl.scrollTop(); 
 
       blockone.css('background-position', '0 ' + -currScrollPos/4 + 'px'); 
 
       logo.css('background-position', '0 ' + -currScrollPos/2 + 'px'); 
 
      }); 
 

 
      })(); 
 
     </script> 
 
</body> 
 
</html>

+0

位置を操作するためにジャンプします。 (左は0に設定され、スクロール関連の先頭に設定されます)。 –

答えて

0

上記のコメントのとおり。ジャンプするので、ジャンプします。あなたは0に背景位置(左値)を操作し、あなたの代わりのようなものにそれを操作する必要があります:私はexampleを更新しました

function setPosition() { 
    var currScrollPos = documentEl.scrollTop(); 
    blockone.css('background-position', '0 ' + -currScrollPos/4 + 'px'); 
    logo.css('background-position', 'center ' + -currScrollPos/2 + 'px') 
} 

+0

ああ、私はロゴが左のハハにあるはずだと理解しました。私は正しいです。 –

+0

@Citizen彼のCSS値は「正しい」ものだと思っています。 –

+0

ええ、私は修正しました、thx;) –

1

Scrollイベントは非常に最初のページinitの位置決め機能を呼び出し、唯一と呼ばれ、その後、あなたの問題は解決されています。ここでは

(function() { 

var documentEl = $(document), 
    blockone = $('#block_one'); 
    logo = $('#logo'); 

setPosition(); 

documentEl.on('scroll', function() { 
    setPosition(); 
}); 

function setPosition() { 
    var currScrollPos = documentEl.scrollTop(); 
    blockone.css('background-position', '0 ' + -currScrollPos/4 + 'px'); 
     logo.css('background-position', 'center ' + -currScrollPos/2 + 'px'); 
    } 

})(); 

example

+0

ご協力ありがとうございました!私はそれがシンプルだが、私はそれを見ることができないことを知っている。再度、感謝します! –

関連する問題