10 Stimmen

CSS - Text von links nach rechts verschieben

Ich möchte eine animierte HTML-"Markise" erstellen, die auf einer Website hin und her rollt:

<div class="marquee">This is a marquee!</div>

und dem CSS:

.marquee {
    position: absolute;
    white-space: nowrap;
    -webkit-animation: rightThenLeft 4s linear;
}

@-webkit-keyframes rightThenLeft {
    0%   {left: 0%;}
    50%  {left: 100%;}
    100% {left: 0%;}
}

Das Problem ist, dass das Rechteck nicht aufhört, wenn es den rechten Rand des Bildschirms erreicht; es bewegt sich ganz aus dem Bildschirm heraus (wodurch kurz eine horizontale Bildlaufleiste erscheint) und kommt dann wieder zurück.

Wie kann ich also erreichen, dass der Rahmen anhält, wenn sein rechter Rand den rechten Rand des Bildschirms erreicht?

EDIT: Merkwürdigerweise funktioniert das nicht:

50% {right: 0%}

0 Stimmen

Verwendung von Javascript zum Anhalten der Animation mit Hilfe der CSS-Eigenschaft

0 Stimmen

@Webtecher Woher weiß das Javascript, wann es die Animation anhalten soll?

0 Stimmen

Statt links: 100% sollte es links heißen: 100% - ( number of characters in string * space taken by single character ) Nun, natürlich werden Sie solche Dinge nicht in CSS tun. Daher ist es besser, statt der Verwendung von left o right verwenden margin-left o margin-right .

4voto

ephemeron Punkte 396

Irgendwie habe ich es hinbekommen, indem ich margin-right verwendet und eingestellt habe, dass es sich von rechts nach links bewegt. http://jsfiddle.net/gXdMc/

Ich weiß nicht, warum in diesem Fall margin-right 100% den Bildschirm nicht verlässt :D (getestet mit Chrome 18)

EDIT: jetzt funktioniert auch von links nach rechts http://jsfiddle.net/6LhvL/

0 Stimmen

Ja, das funktioniert, danke :). Hoffentlich kann jemand kommentieren, warum dies der Fall ist. Ich denke, es ist wegen Ihrer {text-align: right;}

0 Stimmen

@tanis.control siehe meinen Kommentar zu Ihrer Frage.

0 Stimmen

Beachten Sie, dass das Ändern des Css auf die Verwendung von text-align:left et margin-left führt nicht zum gewünschten Ergebnis. Funktioniert nur mit text-align: right et margin-right . Ich habe meine Antwort in der von Ihnen gewünschten Richtung bearbeitet :)

3voto

Timur Gafforov Punkte 722

Sie könnten einfach Folgendes verwenden CSS-Generator für animierten Text . Es gibt bereits vorgefertigte Vorlagen

2voto

Shailender Arora Punkte 7594

Hallo, Sie können Ihr Ergebnis mit der Verwendung von <marquee behavior="alternate"></marquee>

HTML

<div class="wrapper">
<marquee behavior="alternate"><span class="marquee">This is a marquee!</span></marquee>
</div>

CSS

.wrapper{
    max-width: 400px;
    background: green;
    height: 40px;
    text-align: right;
}

.marquee {
    background: red;
    white-space: nowrap;
    -webkit-animation: rightThenLeft 4s linear;
}

siehe die Demo:- http://jsfiddle.net/gXdMc/6/

2 Stimmen

Leider veraltet.

1voto

Spider Pig Punkte 11

Ich verwende gerne die folgenden Methoden, um zu verhindern, dass Dinge außerhalb meiner div Elemente. Es hilft auch bei CSS-Rollovers.

.marquee{
    overflow:hidden;
}

Dadurch wird alles ausgeblendet, was sich außerhalb des Divs bewegt, wodurch verhindert wird, dass sich der Browser erweitert und eine Bildlaufleiste erscheint.

0voto

David542 Punkte 100780

Wenn ich Ihre Frage richtig verstehe, könnten Sie einen Wrapper um Ihr Marquee erstellen und dann eine width (ou max-width ) an das umhüllende Element. Zum Beispiel:

<div id="marquee-wrapper">
    <div class="marquee">This is a marquee!</div>   
</div>

Und dann #marquee-wrapper { width: x } .

0 Stimmen

Daran habe ich auch gedacht, aber es funktioniert nicht. Mit {left: 100%} verschwindet es ganz vom Bildschirm. Ich wünschte, ich könnte {left: 100% - 30px} tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X