前言:

  之前编写了一个网页闯关游戏(类似Riddle Game), 除了希望大家能够体验一下我的游戏外. 也愿意分享编写这个网页游戏过程中, 学到的一些知识.

  本文讲描述, 如何在网页端实现一个仿微信的聊天窗口界面, 以及其中涉及到的一些技术点. 作者前端是初学者, 请大拿们轻拍.

效果展示:

gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点

  这种聊天对话的布局模式, 比PC端QQ的那种聊天方式更贴近移动端, 我个人感觉.

需求设定:

  让我们先过一遍, 实现该聊天窗口需要支持的一些功能点.

  "text-align: center">gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点

 "htmlcode">

<div>
<img src="/UploadFiles/2021-04-02/">

  注: 头像为一个img标签, 文本消息内容则为一个div, 包裹两者的是另一个大的div, 代表完整的一个消息.

  对于布局的左偏移和右偏移, 则借助float:left|right, 来进行控制, 这个还是基础的.

  "JQuery 计算文本的总宽度 Width".

function GetCurrentStrWidth(text, font) {
var currentObj = $('<pre>').hide().appendTo(document.body);
$(currentObj).html(text).css('font', font);
var width = currentObj.width();
currentObj.remove();
return width;
}

  注: 巧妙的通过添加/删除<pre>标签, 返回<pre>的真实长度, 既文本长度.

  对于小于预设的max-width, 则文本区域div缺省即可. 对于大于预设的max-width值, 则文本区域div设定为width=max-width.

var maxWidth = 320;
var currentFont = "normal 13px Helvetica, Arial, sans-serif";
msgDiv.style.font = currentFont;
var currentWidth = GetCurrentStrWidth(message, currentFont);
// *) 设定文本区域的宽度
if (currentWidth <= maxWidth) {
  msgDiv.style.width = "" + currentWidth + "px";
} else {
  msgDiv.style.width = "" + maxWidth + "px";
}

  当然这边还有一个需要的注意的地方, 就是自动换行.

word-break: normal|break-all|keep-all;


值 描述

normal 使用浏览器默认的换行规则。
break-all 允许在单词内换行。
keep-all 只能在半角空格或连字符处换行。
  为了防止太长的英文单词(非常规词)的影响, 最后选用了word-break: break-all.
  "keydown", function (evt) {
  if (evt.keyCode == 13) {
    // TODO
  }
});

后记:

  原本以为实现一个聊天窗口的示例很容易, 却在真正的实践过程中磕磕碰碰, 步履蹒跚. 前端这一块, 真心水很深. 事后回忆起来,觉得收获很大, 当然对于文本的自适应, 采用了一个较复杂的办法. 后来想想是不是加个max-width属性就能轻松搞定了?

好了,关于本文给大家介绍的gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点就给大家介绍这么多,希望对大家走gameboy网页闯关游戏有所帮助!

标签:
gameboy闯关游戏

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com