2016-07-07 9 views
1

私が達成しようとしているのは、打撃のような入力テキストの内側にマーキーがあります。入力テキストの中のCSSアニメーション?

<input type="text" class="form-control" value="<marquee>Hi</marquee>" disabled></input> 

これはJavaScriptとタグ付けされていますが、これは単なるHTMLでは可能ではないと私は考えていますが、間違います。

EDIT - おそらく、代わりに時代遅れ<marquee>タグ、私は、入力全体にテキストスクロールを作成する代わりに、マーキーのCSSアニメーションを使用することができます。

+0

...入力の値を変更し、それがその移動のようになります。 ''タグには「」という閉じがありません。第二に、 ''をHTMLとして挿入しようとすると、無効になります。第三に、「」という要素は存在しませんが、それは別の話です。 – Rob

+0

現代のブラウザはすべて、マーキーを単独でサポートしているとは思えません。 CSSアニメーションを使用して同じ効果を得ることができます。 –

+1

これはCSSアニメーションでどのように達成できるかを概説する前の質問がありますか?あるいは誰かが代替方法でこれがどのように達成されるのかを気にしていますか? –

答えて

2

CSSアニメーションは、その機能を模倣することができます。あなたはJSでできること

@-webkit-keyframes marquee { 
 
    0% {text-indent:100%;} 
 
    100% {text-indent:-10%} 
 
} 
 

 
input.marquee { 
 
    -webkit-animation: marquee 5s infinite; 
 
    -webkit-animation-timing-function: linear; 
 
    }
<input type="text" class="form-control marquee" value="Hi" disabled ></input> 
 

 
<marquee>Hi</marquee>

+1

私が達成したいと思っていた、まあまあありがとうございます。 –

+0

終了タグには ''というようなものはありません。 https://developers.whatwg.org/the-input-element.html#the-input-elementそして、もう一度、 ''要素のようなものはありません(それは別の話です)。 – Rob

+0

私はあなたを愛している男! – Rahnzo

1

これです:まず

var marquu = document.getElementById('marquu'); 
 
var valLength = marquu.value.length; 
 
var padding = 70; 
 
var step = 0; 
 
var originalString = marquu.value 
 
var interval = setInterval(function() { 
 
    if (step++ == 0) marquu.value = originalString; 
 
    marquu.value = (valLength >= step) ? originalString.substr(valLength - step, valLength) : " " + marquu.value; 
 
    
 
    if (step == padding) step = 0; 
 
}, 100);
<input id="marquu" type="text" value="Some String" disabled />

関連する問題