2011-09-21 17 views
7

JavaScriptを使用して水平スクロールバーを無効にする方法があるかどうかは知りませんか?JavaScriptで水平スクロールを無効にする

私はoverflow-x: hidden;を使用しません。

+3

本当に、最も簡単な方法は、スクロールバーを非表示にして、あなたはそれを表示したいときにそれを削除したいときにオーバーフロー-Xスタイルを適用することであろう。 – n8wrl

+0

'overflow-x:hidden'を使いたくない理由を説明できますか? – Sparky

+1

おそらく、iOSが多くの場合無視する傾向があるためです。 –

答えて

9

CSSプロパティを完全に有効にしないと、スクロールバーやJavaScript、HTML/CSSデザインを必要としないようにコンテンツのサイズを変更できます。

あなたもこれを行うことができます:任意のスクロールを検出し、自動的に左上/へのスクロールを返します

window.onscroll = function() { 
window.scrollTo(0,0); 
} 

...。このようなことをすることは、ユーザーを苛立たせることになることに言及しています。

不要なUI要素がまったく存在しない環境(CSS、デザインを通じて)を作成すると、最も効果的です。上記のアプローチでは、不要なUI要素(スクロールバー)が表示され、ユーザーが期待するように動作しないようにします(ページをスクロールします)。あなたはユーザーと "契約を壊した" - ユーザーが慣れ親しんだ行動を取ったときに、残りのWebサイトやアプリケーションが期待したことをどのように行うことができるか、どのように信頼できるか?

+2

欲求不満なユーザーのメモを+1するには、そのグループでカウントしてください:) – Sander

+1

私は通常、overflow-x:hiddenを設定します。しかし、通常は、ブラウザがOSXのタッチパッドでターゲットを水平方向にスクロールするのを妨げない。 –

2

のjQueryでスクロールダウンから要素を防ぐ方法:

$(element).scroll(function() { 
    this.scrollTop = 0; 
    this.scrollLeft = 0; 
}); 

まあ、これは実際にスクロールを防ぐことはできませんが、に似た要素の左上隅に、それは「バックスクロール」、 Chrisのソリューションで、単一の要素の代わりにウィンドウ用に作成されたものです。必要に応じてscrollTopまたはscrollLeft行を削除します。

+0

彼らは左右にスクロールすると言っていました.. – Reuben

+1

@Reuben 'scrollTop'の代わりに' scrollLeft'を使います。 – Lekensteyn

+0

私は 'this.scrollTop = 0;'を削除すると言いますが、これは間違いなく答えです! – Reuben

0

スクロールバーが重複しています(http://jsfiddle.net/dJqgf/)。

var overlap = $('<div id=b>'); 

$("#a").wrap($('<div>')); 

$("#a").parent().append(overlap); 

#a { 
    width: 100px; 
    height: 200px; 
    overflow-x: scroll; 
} 

#b { 
    position: relative; 
    left: 0; 
    bottom: 20px; 
    width: 100%; 
    height: 20px; 
    background-color: white; 
} 
関連する問題