当前位置: 代码迷 >> JavaScript >> jQuery-类似于脚本的Messenger
  详细解决方案

jQuery-类似于脚本的Messenger

热度:56   发布时间:2023-06-03 17:46:02.0

也许大家都知道Facebook的Messenger的外观和工作方式。 我正在尝试在页面上归档类似内容。 我将其分为几个步骤:

1)显示打字动画。 一段时间后(按照我的职能,这是3秒钟),动画消失了(您知道,那些气泡像点一样,就像在iPhone中一样)。

2)动画消失时,显示短信。 这是静态的html元素。 我无意使用php使其可动态编辑。

3)在用户重新加载站点的情况下进行了第三步。 如果element在用户的偏移量之内,则不会显示键入动画。 文本立即显示。

我决定尝试jQuery。 我从来没有任何经验,只有vanilia JS。

代码差不多完成了。 但是我不知道如何引用msgText元素的索引。 现在,当一个气泡聊天可见时,将显示所有具有msgText类的元素。 我想我需要在第一个循环中添加另一个循环,但是我真的不知道。 感谢帮助!

    (function($) {

  $.fn.visible = function(partial) {

      var $t            = $(this),
          $w            = $(window),
          viewTop       = $w.scrollTop(),
          viewBottom    = viewTop + $w.height(),
          _top          = $t.offset().top,
          _bottom       = _top + $t.height(),
          compareTop    = partial === true ? _bottom : _top,
          compareBottom = partial === true ? _top : _bottom;

    return ((compareBottom <= viewBottom) && (compareTop >= viewTop));

  };

})(jQuery);

var win = $(window);

var allMods = $(".bubble-chat");
var msgText = $(".text");        

allMods.each(function(i, el) {
  var el = $(el);
  if (el.visible(true)) {
    el.addClass("already-visible");
    msgText.css('display', 'block');
}

    if(el.hasClass("already-visible")) { 
        el.css('display', 'none')};
})


win.scroll(function(event) {

  allMods.each(function(i, el) {
    var el = $(el);
    if (el.visible(true)) {
      el.addClass("come-in"); 
      el.delay(3000);
      el.queue(function (next) { 
        $(this).css('display', 'none'); 
        msgText.css('display', 'block');
        next(); 
    });   
}});

});

我在解决它时遇到了一些麻烦,但最终还是做到了! 发布它,以便将来有人使用它。

事实证明,display:none元素不会被浏览器渲染,因此您无法获取它们的偏移量。 因此,我别无选择,只能使用不透明度。 我知道那不是那么漂亮,但是我没有其他想法。 随意问

  $.fn.visible = function(partial) {

      var $t            = $(this),
          $w            = $(window),
          viewTop       = $w.scrollTop(),
          viewBottom    = viewTop + $w.height(),
          _top          = $t.offset().top,
          _bottom       = _top + $t.height(),
          compareTop    = partial === true ? _bottom : _top,
          compareBottom = partial === true ? _top : _bottom;

    return ((compareBottom <= viewBottom) && (compareTop >= viewTop));

  };

})(jQuery);

var win = $(window);

var allMods = $(".bubble-chat");
var msgText = $(".text");            


allMods.each(function(i, el) {
    var el = $(el);
    if (el.visible(true)) {
        el.addClass("already-visible");
}

    if(el.hasClass("already-visible")) { 
        el.css('display', 'none')};
})

msgText.each(function(i, el) {
  var el = $(el);
  if ($(this).visible(true)) {
    $(this).addClass("already-visible");
}
    if($(this).hasClass("already-visible")) { 
        $(this).css('opacity', '1')};
})


win.scroll(function(event) {

  allMods.each(function(i, el) {
    var el = $(el);
    if (el.visible(true)) {
        el.addClass("come-in"); 
        el.delay(3000);
        el.queue(function (next) { 
            $(this).css('display', 'none'); 
            next(); 
        });   
    }});

    msgText.each(function(j, s) {
    var s = $(s);
    if (s.visible(true)) {
        s.addClass("come-in"); 
        s.delay(3000);
        s.queue(function (next) { 
            s.addClass("come-in"); 
            $(this).css('opacity', '1'); 
            next(); 
        });   

    }});



});
    `
  相关解决方案