如何将图像放入我的滚动文本js中
How to put image into my scrolling text js
我正在使用下面的js插件进行文本滚动:https://github.com/aamirafridi/jQuery.Marquee
基本上,我们只需要调用下面的文本滚动:
$('.marquee').marquee();
但我也计划把图片放到滚动文本中。就像它在自述文件中提到的那样,我们需要像下面这样放置$(window).load,这样它就可以准确地计算图像宽度:
$(window).load(function() { $('.marquee').marquee(); });
此功能将在网页加载后加载字幕。
但是,如果我只是在收到命令后才加载字幕呢。例如:
receivedCom = function(){ $('.marquee').marquee({duration: 8000}); });
我已尝试将$(window).load放入receivedCom函数中。它跑不动了。知道怎么做吗?
我对这个例子进行了更多的修改。由于您知道从服务器发送的图像数量,因此可以将该数字作为num_images
传递给客户端。客户端将把字幕内容转储到具有marquee
类的div
中,然后检查期望的图像是否与字幕div
中的数字匹配。如果没有,加载仍在进行,我们每隔半秒就会检查一次。加载完成后,我们清除setInterval
调用,并告诉字幕开始。
正如我们在聊天中所讨论的,setTimeout
在启动字幕代码时是有效的,因为它在单独的事件循环中执行代码,使插件有机会"看到"新加载的动态图像。如果以下内容不适用,请尝试稍微增加setTimeout
延迟。
我添加了一个不使用socket.io的工作示例。在这支笔中,内容被动态添加到字幕div
中,一次添加两个图像。直到看到里面有八个图像,这个字幕才会初始化。与下面的代码类似,setInterval
被调用来检查预期的图像数量是否与DOM中的实际图像数量匹配。
HTML
<div class='marquee'></div>
服务器JS
// Send the HTML along and the known number of images
// inside the string
socket.emit('your_event_name', {
marquee_content : 'html images and text go here',
num_images : 3
});
客户端JS
var socket = io.connect('http://localhost')
images_expected = 0, // 'num_images' from socket.emit data
interval;
function startMarquee() {
$('.marquee').marquee({duration: 8000});
}
function checkImagesLoaded() {
if ($('.marquee img').length === images_expected) {
clearInterval(interval);
setTimeout(startMarquee); // fire in new event loop
}
}
function insertMarqueeContent(content) {
$(".marquee").html(content);
}
function initMarquee() {
interval = window.setInterval(checkImagesLoaded, 500);
}
socket.on('your_event_name', function (data) {
images_expected = data.num_images;
insertMarqueeContent(data.marquee_content);
initMarquee();
});
如果我正确理解你的问题,"在我收到命令之后"意味着你正在寻找一个事件。
根据你想要收听的事件类型,有很多技巧
例如,您可能想要监听鼠标点击:
$(document).ready(function(){
$(window).click(function(event, target){
$('.marquee').marquee();
});
});
JSfiddle在这里:http://jsfiddle.net/knr2qzxu/如果你想玩一玩:)
如果你想更深入地了解这里发生的事情,我强烈建议你在这里阅读更多关于jQuery事件的信息:https://api.jquery.com/category/events/
编辑:
好的,我又问了一遍你的问题,如果我没有答对,请纠正我:
js代码中的某个地方有一个函数,它是这样写的:receivedCom=function(com){};如果是这样,请在调用字幕功能之前检查窗口是否已加载:
var receivedCom = function(com) {
if (document.readyState === "complete") {
$('.marquee').marquee();
}
};
接下来:js检查你的窗口是否显示正确,然后触发字幕。
您也可以使用setInterval每隔n毫秒检查一次窗口是否已加载,然后触发字幕,如果需要,请阅读文档:http://www.w3schools.com/jsref/met_win_setinterval.asp
请告诉我它是否有效!
- 使用.animate滚动文本
- 在html中的图像上滚动文本
- Phonegap/Cordova中的可滚动文本区域
- 如何将图像放入我的滚动文本js中
- 如何创建具有滚动背景图像的可滚动文本区域
- 滚动文本中的顶部单词
- JavaScript滚动文本;t负载变量
- 使用 JavaScript 滚动文本区域
- jquery:滚动文本的问题
- 最有效的滚动文本
- 显示滚动文本消息
- 如何使用javascript/jquery在图像上动态滚动文本
- 滚动视图中text区域的滚动文本
- 禁止滚动文本
- Jquery滚动文本像选框
- 使用鼠标拖动滚动文本
- 如何使用HTML5流畅地滚动文本
- 滚动文本框并设置属性
- 滚动文本辅助(HTML)
- 如何在流体布局中创建可调整大小的滚动文本框