2017-06-08 9 views
14

にスクロールするページを引き起こし、私は、入力フィールドまたは内部のテキストエリアなどの編集可能な要素を有する、トリガーことに気づいたときに私の個人的なプロジェクトの一つでCSS position: stickyを使用しようとしていましたページをスクロールして上部にスクロールします。編集Chromeで粘着性の入力要素がトップ

可能であれば、この動作を削除したいと思います。

.container { 
 
    height: 5000px; 
 
} 
 

 
.heading{ 
 
    background: #ccc; 
 
    height: 50px; 
 
    line-height: 50px; 
 
    margin-top: 10px; 
 
    font-size: 30px; 
 
    padding-left: 10px; 
 
    position: -webkit-sticky; 
 
    position: sticky; 
 
    top: 0px; 
 
}
<h1>Lorem Ipsum</h1> 
 

 
<div class="container"> 
 
    <div class="heading"> 
 
    <input placeholder="Edit this while scrolling..."> 
 
    </div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
</div>

+1

'sticky'はまだ実験的なものです。これは単に問題が発生していないバグであり、最良の賭け(これについての解決策を見たい限り)はおそらくあなた自身のスティッキーのような振る舞いを実装する可能性が高いでしょう。 – George

+0

あなたはこのブラウザでどのブラウザを表示していますか? Firefoxでは発生しません。 – TylerH

+0

それは垂直に配置入力のChromeのデフォルトの動作をされた入力フィールドの中心(または十分なコンテンツが上記存在しないように、このシナリオでのトップまでスクロール)視野範囲外にある入力フィールドに入力するときクロム – Morpheus

答えて

1

あなたはキーのいくつかの検証を行う必要があるでしょう - 許容可能な文字を確認するための正規表現のチェックでおそらく最高をしますが、キー操作からJavaScript関数を呼び出すことができ、値を更新入力の、そしてfalseを返す:

var e = document.getElementById('input'); 
 
e.onkeypress = myFunction; 
 

 
function myFunction(t) { 
 
    document.getElementById('input').value += t.key; 
 
    return false; 
 
}
.container { 
 
    height: 1000px; 
 
} 
 

 
.heading{ 
 
    background: #ccc; 
 
    height: 50px; 
 
    line-height: 50px; 
 
    margin-top: 10px; 
 
    font-size: 30px; 
 
    padding-left: 10px; 
 
    position: -webkit-sticky; 
 
    position: sticky; 
 
    top: 0px; 
 
}
<h1>Lorem Ipsum</h1> 
 

 
<div class="container"> 
 
    <div class="heading"> 
 
    <input id="input" placeholder="Edit this while scrolling..."> 
 
    </div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
</div>

+0

はい、これは良い方法です。私が探していたものは100%ではありませんでしたが、私は自分のシナリオに再読み込みできます。 – andreasonny83

+0

位置:-webkit-stickyが存在しません。 CSSに不要なバイトを追加するだけです。 – BoltClock

+0

こちらのように見えます:https://developer.mozilla.org/en-US/docs/Web/CSS/position?v=example#Sticky_positioning – user7363719

1

私はそれを動作させることができましたが、おそらく最善の解決策ではありません。

  1. position: stickyでクラスにoverflow: autooverflow: hiddenのいずれかを追加します。
  2. placeholder<input>から削除します。

私はoverflowを追加またはplaceholderを削除すると、多分誰かがこれを説明するのに役立つことができ、それが仕事になる理由はわかりません。

.container { 
 
    height: 5000px; 
 
} 
 

 
.heading{ 
 
    background: #ccc; 
 
    height: 50px; 
 
    line-height: 50px; 
 
    margin-top: 10px; 
 
    font-size: 30px; 
 
    padding-left: 10px; 
 
    position: -webkit-sticky; 
 
    position: sticky; 
 
    top: 0px; 
 
    overflow: auto; 
 
}
<h1>Lorem Ipsum</h1> 
 

 
<div class="container"> 
 
    <div class="heading"> 
 
    <input> 
 
    </div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
    <div>Lorem Ipsum</div> 
 
</div>

+0

残念ながら、その方法はAngular2 +プロジェクトをAngular材料。プレースホルダを削除して要素のオーバーフローを変更するかどうかに関わらず、問題は引き続き表示されます – andreasonny83

関連する問題