の両方に純粋なCSSのソリューションをトランジションを追加することができ、jQueryを使ってinput:focus
にbrandHeader
に切り替えるか、addClassすることができます - フレキシボックス注文
を使用すると、再構築することができれば、あなたのhtmlは少しdomのように変更することが可能ですので、input
はhtmlでは1位ですが、画面上では2位です。この方法ではフレックスボックスorder
を使用します。
例を示します。
.container {
display: flex;
flex-direction: column;
}
input {
display: flex;
flex-direction: column;
order: 2;
}
.brandHeader {
display: flex;
order: 1;
transition: all 0.2s ease;
}
input:focus + .brandHeader {
margin-top: -10px;
}
<form class="container">
<input type="text" id="search-bar" placeholder="Search">
<div class="brandHeader">
<h1>My Header</h1>
</div>
</form>
フィドル
https://jsfiddle.net/Hastig/djj01x6e/
それはあなたが私が知っていると私はそれについての詳細を説明しますのために働くだろう場合。
第二ピュアCSSソリューション - フレックス方向:カラムは、逆にほとんど
最初けどorder: x;
.container {
display: flex;
flex-direction: column-reverse;
}
input {
display: flex;
flex-direction: column;
}
.brandHeader {
display: flex;
transition: all 0.2s ease;
}
input:focus + .brandHeader {
margin-top: -10px;
}
<form class="container">
<input type="text" id="search-bar" placeholder="Search">
<div class="brandHeader">
<h1>My Header</h1>
</div>
</form>
を使用する必要はありませんと同じ
フィドル
https://jsfiddle.net/Hastig/djj01x6e/1/
あなたは位置を使用してフレキシボックスせずに同様のことを行うことができます。画面上のDOMが、第二に、入力第一を維持するために、絶対に、それはあまりにもあなたがHTMLの構造を変更することができることに依存します。
純粋なCSSでは、あなたのHTMLが今のところ構造化されているようにすることはできません。 CSSで親や兄弟を選択する方法はありません。 JavaScriptを使用する必要があります。 – skyline3000