2017-01-20 7 views
1

私が直面してる問題がある:CSSアニメーションは、動的に

  • 私は、ことを引き起こしているものをlanguagueセットに応じて、このテキストの変更を、右から左に行くアニメーションテキストを持っていますテキストの全幅も変わります。この絵で

Working fine

いくつかのプロパティが固定されているので、私が欲しい効果は、正常に動作しています。今、私は問題がアップcames長いテキストを変更したときに

enter image description here

だから、これは私が今持っているものです。

enter image description here

そして、これは私が持っているしたいものです。ここで

enter image description here

は、私が使用しているコードです。 :

リアクタンス:

constructor(props) { 
    super(props); 

    this.state = { 
    checked: false 
    } 
} 

componentDidMount() { 
    window.addEventListener('scroll',() => { 
    if (event.srcElement.body.scrollTop >= 1400) { 
     this.setState({ checked: true }); 
    } 
    }); 
} 

render() { 
    return (
    <div> 
     ... stuff 
     <span style={{ fontSize: "40px", color: this.state.theme.COLOR_3 }}> 
     <input type="checkbox" id="Resume-chk" style={{ display: "none" }} checked={this.state.checked} /> 
     <b id="Resume-title">{this.state.languageSet.RESUME}</b> 
     </span> 
     ... more stuff 
    <div> 
); 
} 

CSSサイド:

//This is the text 
#Resume-title { 
    display: inline-block; 
    -webkit-transition: color 200ms ease-in; 
    -moz-transition: color 200ms ease-in; 
    transition: color 200ms ease-in; 

    -webkit-transition: right 500ms ease-in; 
    -moz-transition: right 500ms ease-in; 
    transition: right 500ms ease-in; 

    position: relative; 
    right: -40.5%; 
} 

//This is the text when the checkbox is checked 
#Resume-chk:checked ~ #Resume-title { 
    right: 40.5%; 
} 

だから、質問は:それを修正する方法は?または、私は行方不明のコンセプトがあります。バグを修正するだけではありません。 right: -40.5%;right: 40.5%;のようなものをやってすることをお勧めしている場合

はまた、私はわからないんだけど、私はfloatまたはalignのようなプロパティをアニメーション化する方法を見つける傾けます。

もちろん、それを修正する方法があるだけでなく、それをさらに良くする方法がある場合は、それも歓迎です! EDITED

hereあなたはと変換との位置の組み合わせを必要とするのdevのコンソール

+0

あなたはデベロッパーコンソールから実際のHTMLを取り、質問に追加することができますか?それはタグの詳細などが既に与えられているとはいえ、もっと役に立ちます。 – Harry

+1

完了!私はHTML全体を追加しました。その特定のセクションを#resumeとして探すことができます。ありがとうございました –

+0

私はすでに実際には、すでにそこにあったタグの詳細を試していました。**私が持っているもの**は片方のテキストが右揃えになっており、トランジションが完了したら左揃えになるので難しいでしょう。私はそれが可能かどうかはわかりませんが、もし私がそれを見つけることができれば、私は答えを投稿しようとします。 – Harry

答えて

2

からコピーされた全体のhtmlセクションを含むフィドル。

これはあなたの要求に適応要素をセンタリングするための通常のアイデア:

.container { 
 
    width: 300px; 
 
    background-color: lime; 
 
    margin: 10px; 
 
    position: relative; 
 
} 
 

 
.item { 
 
    display: inline-block; 
 
    position: relative; 
 
    right: -100%; 
 
    transform: translateX(-100%); 
 
    transition: right 1s, transform 1s; 
 
} 
 

 
.container:hover .item { 
 
    right: 0%; 
 
    transform: translateX(0%); 
 
}
<div class="container"> 
 
    <div class="item">Item</div> 
 
</div> 
 
<div class="container"> 
 
<div class="item">Item long</div> 
 
</div><div class="container"> 
 
    <div class="item">Item longer longer</div> 
 
</div>

+0

非常に賢い!ニースの回答@vals。あなたからこのような革新的な答えを期待して来ました:)私は誰がこのアプローチを概念化したのか分かりませんが、私はそれを** valsのアプローチと呼んでいます! – Harry

+2

@ハリーありがとうございました! – vals

+1

@valsこれは非常に賢い人で、完璧に働いています!ありがとう。あなたは15 + 10ポイントを獲得しました! –