讲师中心 微信公众号
AI工具推荐 视频效率加速

为 AJAX 响应中的布尔值动态添加 CSS 类实现消息左右对齐

陌丽君_4375

陌丽君_4375

发布时间:2025-12-27 11:44:02

|

244人浏览过

|

来源于php中文网

原创

为 AJAX 响应中的布尔值动态添加 CSS 类实现消息左右对齐

本文介绍如何根据 ajax 返回数据中的 `bot` 布尔字段,动态为聊天消息容器添加 `right` 或默认类,从而在前端区分用户消息(左对齐)与机器人消息(右对齐),并保持 html 结构简洁、css 可扩展。

在构建实时聊天界面时,仅靠统一的 .chat 类无法体现消息发送方的身份差异。为实现“用户消息靠左、机器人消息靠右”的视觉逻辑,关键在于将后端返回的 model.bot 布尔值映射为前端 CSS 类名,并将其动态注入到消息容器元素中。

核心思路是:在 JavaScript 模板字符串拼接前,用三元表达式判断 model.bot 值,生成对应类名字符串(如 'right' 或空字符串),再将其插入

的 class 属性中。这样既无需重复编写 DOM 操作逻辑,也避免了冗余的条件分支。

以下是优化后的完整 JS 实现(含必要注释):

$(document).ready(function() {
  function imgMarkup(model) {
    return model.mediasrc 
      ? `<img class="imgchat" src="../static/${model.mediasrc}.png" alt="media">`
      : '';
  }

  setInterval(function() {
    $.ajax({
      type: 'GET',
      url: '/checkview',
      success: function(response) {
        console.log('Received messages:', response.models_to_return);
        $('#display').empty();

        response.models_to_return.forEach(function(model) {
          // ✅ 动态决定额外 CSS 类:bot 为 true → 添加 'right'
          const botClass = model.bot ? 'right' : '';

          // ✅ 拼接完整 HTML 片段,支持多类共存
          const temp = `
            <div class="chat ${botClass}">
              <span class="time-left">${model.datetime}</span>
              <b>${model.user_id}</b>
              <p>${model.room}</p><div class="aritcle_card flexRow">
                                                        <div class="artcardd flexRow">
                                                                <a class="aritcle_card_img" href="/xiazai/skill11112" title="CSS工具箱(专业版)"><img
                                                                                src="https://img.php.cn/upload/skill/001/246/273/6adaf20e352aa140.jpg" alt="CSS工具箱(专业版)" ></a>
                                                                <div class="aritcle_card_info flexColumn">
                                                                        <a href="/xiazai/skill11112" title="CSS工具箱(专业版)">CSS工具箱(专业版)</a>
                                                                        <p>全功能 CSS 工程手册,覆盖性能优化、无障碍、设计系统与跨浏览器兼容。</p>
                                                                </div>
                                                                <a href="/xiazai/skill11112" title="CSS工具箱(专业版)" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
                                                        </div>
                                                </div><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
              ${imgMarkup(model)}
            </div>
          `;
          $('#display').append(temp);
        });
      },
      error: function(xhr, status, err) {
        console.warn('AJAX request failed:', status, err);
      }
    });
  }, 1000);
});

⚠️ 注意事项与最佳实践:

  • CSS 需补充 .chat.right 样式:仅添加类名无效,必须在 CSS 中定义其布局行为。例如:
    .chat {
      max-width: 80%;
      margin: 0.5em 0;
      padding: 0.75em 1em;
    }
    .chat.right {
      margin-left: auto; /* 推向右侧 */
      background-color: #007bff; /* 区分色 */
    }
    .chat:not(.right) {
      background-color: #6c757d; /* 用户消息背景 */
    }
  • 模板字符串安全建议:若 model.user_id 或 model.room 可能含 HTML 特殊字符(如 ),应使用 textContent 或 DOM 方法替代内联插值,防止 XSS;当前示例假设数据已可信。
  • 性能优化提示:频繁的 setInterval + 全量重绘(empty() + 逐条 append())在消息量大时可能卡顿。进阶方案可采用虚拟滚动、增量更新或 DocumentFragment 批量插入。

通过该方法,你无需修改后端结构或增加复杂状态管理,即可用最小代价实现语义清晰、样式可控的双侧消息布局。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

3200

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

360

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3013

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1161

2024.09.24

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1838

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2924

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6224

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

6109

2023.11.24

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

100

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6.1万人学习

CSS教程
CSS教程

共754课时 | 99.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn