我的代码中存在问题,似乎无法找到它。我的新闻自动收报机不会滚动。任何人都可以帮我修理它。
我不想使用html分隔。我只想要一个完整的JavaScript代码。
var width = $('.ticker-text').width(),
containerwidth = $('.ticker-container').width(),
left = containerwidth;
$(document).ready(function(e) {
function tick() {
if (--left < -width) {
left = containerwidth;
}
$(".ticker-text").css("margin-left", left + "px");
setTimeout(tick, 16);
} {
var $markup = $('<div id="clientip"><div class = "ticker-container><div class = "ticker-text">start text text text text</div></div></div>');
$markup.insertAfter('#header-userinfo');
}
tick();
});
CSS代码:
#clientip {
float: left;
margin-right: 25px;
margin-top: 12px;
position: relative;
vertical-align: middle;
}
.ticker-container {
width: 100%;
height: 2.9%;
border: 1px solid;
overflow: hidden;
}
.ticker-text {
height: 150%;
white-space:nowrap;
display:inline-block;
}
答案 0 :(得分:1)
您尝试在脚本开头获取.ticker-text
和.ticker-container
的宽度,但在此之后插入它们。如果你稍微重新组织代码它应该工作。
$(document).ready(function(e){
// insertAfter returns the jQuery object.
var $markup = $('<div id="clientip"><div class = "ticker-container><div class = "ticker-text">start text text text text</div></div></div>').insertAfter('#header-userinfo'),
$tickerText = $(".ticker-text"),
width = $tickerText.width(),
containerwidth = $('.ticker-container').width(),
left = containerwidth;
function tick() {
if(--left < -width){
left = containerwidth;
}
$tickerText.css("margin-left", left + "px");
setTimeout(tick, 16);
}
tick();
});
那是未经测试的。我还为自动收录器文本dom对象创建了一个变量,以防止在每个帧上查询dom。
如果你不需要任何特别的东西,也许你可以使用<marquee>
(docs)
答案 1 :(得分:0)
您的问题是您在.ticker-container
元素存在之前计算其尺寸!
所以将width
变量向下移到 insertAfter()
下。
你生成的html中也有一些拼写错误(class="ticker-container
缺少引号,属性之间有额外的空格。)
这应该更好:
$(document).ready(function(e) {
function tick() {
if (--left < -width) {
left = containerwidth;
}
console.log(containerwidth);
$(".ticker-text").css("margin-left", left + "px");
setTimeout(tick, 16);
}
var $markup = $('<div id="clientip"><div class="ticker-container"><div class="ticker-text">start text text text text</div></div></div>');
$markup.insertAfter('#header-userinfo');
// calculate dimensions here now the elements exist!
var width = $('.ticker-text').width(),
containerwidth = $('.ticker-container').width(),
left = containerwidth;
tick();
});
&#13;
#clientip {
float:left;
width:150px;
margin-right: 25px;
margin-top: 12px;
position: relative;
vertical-align: middle;
}
.ticker-container {
width: 100%;
height: 2.9%;
border: 1px solid #000;
overflow: hidden;
}
.ticker-text {
height: 150%;
white-space:nowrap;
display:inline-block;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="header-userinfo"></div>
&#13;