Mein CSS3-Laufschrift-Effekt funktioniert wie gewünscht, jedoch durchläuft er nicht alle Elemente, die in meiner <section id="updates_display" class="marquee"></section>
enthalten sind.CSS3-Laufschrift zeigt nicht alle HTML-Elemente im .Marnee-Container
Ich verwende ASP.NET WebForms, und ich verwende Repeater, die an eine Datenquelle gebunden sind, um meine <a></a>
Elemente auf zu rendern. Der Laufrahmen würde meine normalen Updates anzeigen, bevor ich dringende und Team-Updates hinzugefügt hatte. Jetzt, da dringende und Teamaktualisierungen zur Laufzeit erstellt werden, durchläuft es nur zwei Zyklen und erreicht nie die dritte, bevor es beim ersten Element neu beginnt. Ich nehme an, wenn ich mehr hinzufüge, würde dies weiterhin der Fall sein.
Wie kann ich die Laufschrift zwingen, durch alle <a></a>
Elemente zu gehen, die im section.marquee
enthalten sind?
CSS:
section#updates_display {
float: left;
width: 60%;
height: 25px;
padding-top: 13px;
}
section.marquee {
overflow: hidden;
position: relative;
}
section.marquee a {
position: absolute;
width: 100%;
height: 100%;
margin: 0;
line-height: 20px;
text-align: center;
transform:translateX(100%);
font-size: 2em;
}
@keyframes left-one {
0% {
transform: translateX(100%);
}
10% {
transform: translateX(0);
}
40% {
transform: translateX(0);
}
50% {
transform: translateX(-100%);
}
100% {
transform: translateX(-100%);
}
}
@keyframes left-two {
0% {
transform: translateX(100%);
}
50% {
transform: translateX(100%);
}
60% {
transform: translateX(0);
}
90% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
section.marquee a:nth-child(1) {
animation: left-one 20s ease infinite;
}
section.marquee a:nth-child(2) {
animation: left-two 20s ease infinite;
}
a.urgent_update {
color: #FF3D00;
}
a.normal_update {
color: #00E676;
}
a.team_update {
color: #FFFF00;
}
HTML:
<section id="updates_display" class="marquee">
<asp:Repeater ID="UrgentUpdatesRepeater" runat="server" DataSourceID="UrgentUpdatesDataSource">
<ItemTemplate>
<a class="urgent_update" href='<%# Eval("link") %>' runat="server" target="_blank"><%# Eval("Title") %></a>
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="TeamUpdatesRepeater" runat="server" DataSourceID="TeamUpdatesDataSource">
<ItemTemplate>
<a class="team_update" href='<%# Eval("link") %>' runat="server" target="_blank"><%# Eval("Title") %></a>
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="NormalUpdatesRepeater" runat="server" DataSourceID="NormalUpdatesDataSource">
<ItemTemplate>
<a class="normal_update" href='<%# Eval("link") %>' runat="server" target="_blank"><%# Eval("Title") %></a>
</ItemTemplate>
</asp:Repeater>
Hier sind der Inhalt des Inspektors in Chrome, was zeigt, dass es 3 Links in ihr enthalten, aber es nur Zyklen durch die ersten 2 ?
<section id="updates_display" class="marquee">
<a href="Updates/Post.aspx?p=3" class="urgent_update" target="_blank">Urgent Test</a>
<a href="Updates/Post.aspx?p=4" class="team_update" target="_blank">Team Test</a>
<a href="Updates/Post.aspx?p=2" class="normal_update" target="_blank">Test</a>
</section>
Edit: Ich habe mit ihm einige mehr gespielt und entdeckte mein Problem liegt mit meinem nth-child()
in meinem Marquee CSS. Ich versuchte, nth-child(even/odd)
zu verwenden, aber das verursachte alle meine sogar Elemente zur gleichen Zeit und Chancen zur gleichen Zeit anzuzeigen, immer noch funktionierend, wenn ich die Lösung finde.
Sie haben die dritte nicht gesagt, etwas in Ihrem CSS –
@AndrewBone zu tun, entdeckte ich, dass nur eine Sekunde vor und in meinem bearbeiten enthalten Ich arbeite daran, einen dynamischen Weg zu finden, dies zu erreichen, weil ich eine dynamische Anzahl von Elementen zum Scrollen haben könnte. – dbrad
Sind Sie dagegen, Javascript zu verwenden? –