活动介绍
file-type

如何用JS实现类似MSN的消息提示框功能

版权申诉

RAR文件

3KB | 更新于2024-12-02 | 197 浏览量 | 0 下载量 举报 收藏
download 限时特惠:#14.90
该资源摘要信息涉及了如何在网页中实现类似MSN即时通讯软件的消息提示框功能。MSN消息提示框功能是指在用户接收到即时消息时,能够在网页的指定区域显示出消息的内容以及发送者等信息,类似于一个弹出通知。为了实现这样的功能,通常需要使用前端技术,尤其是JavaScript、HTML以及CSS来完成设计和开发。 在这一过程中,有几个关键的知识点需要注意: 1. **HTML结构设计**:首先需要设计一个合适的HTML结构,用来承载消息提示框。这通常意味着需要有一个固定的容器(div元素),用来在用户接收消息时显示提示内容。 2. **CSS样式设置**:为了让消息提示框美观并符合用户体验,必须设置合适的CSS样式。这可能包括背景颜色、边框样式、字体大小、颜色以及动画效果等,从而使得消息提示框具有良好的视觉效果和清晰的视觉层次。 3. **JavaScript交互逻辑**:核心在于使用JavaScript来编写消息提示框的交互逻辑。这部分代码将负责检测消息的接收,以及在指定的容器中创建并显示消息提示框。通常会涉及到操作DOM元素,如创建新元素、修改现有元素的内容、样式以及类名等。 4. **消息推送机制**:实现MSN消息提示框功能,还需要一个模拟消息推送的机制,这可以通过JavaScript中的setInterval函数定时检测新消息,或者是通过事件监听机制响应消息推送。 5. **用户体验优化**:考虑用户体验,设计消息提示框时要避免过于突兀和分散用户注意力。可以设置声音提示,或者让消息提示框在一定时间后自动消失,又或者用户可以通过点击来关闭提示框。 6. **跨浏览器兼容性**:在不同的浏览器中,相同的代码可能表现不一致。因此,需要确保消息提示框的功能在主流浏览器上都具有良好的兼容性。 7. **响应式设计**:考虑到用户可能会在不同尺寸的设备上浏览网页,因此需要确保消息提示框在各种屏幕尺寸下都有良好的显示效果,这需要使用响应式设计的技术。 根据提供的文件信息,文件名"JSXX.html"暗示了这个HTML文件中可能包含上述功能的实现。该HTML文件中应该包含了JavaScript代码来控制消息提示框的显示逻辑,以及相应的CSS代码来定义提示框的样式。至于"JSXX.rar",这表示该HTML文件可能被打包在RAR压缩文件中,需要解压缩后才能查看其完整内容。 在实际开发过程中,开发者需要仔细分析具体需求,考虑实现效果与实际技术的适配,从而设计出一个符合预期的功能实现方案。这可能包括深入研究HTML5的Canvas或者SVG技术用于创建动态的图形效果,使用WebSocket技术实现实时通信,或是利用各种前端框架(如Vue.js、React等)来提升开发效率和代码质量。

相关推荐

filetype

with base_list as (SELECT xxxqmc AS xqmc, jsmc, string_agg ( jc :: TEXT, ',' ORDER BY jc ) AS jc, ( sjzl_xlxx.ksrq :: DATE ) + ( zc :: INT - 1 ) * 7 + ( xqj :: INT - 1 ) AS DATE FROM ( SELECT xnxq, xxxqmc, jsmc, regexp_split_to_table( jcname, ',' ) :: INTEGER AS jc, zc, xq AS xqj FROM jwxt_ztk_kxjs_qywx ) T LEFT JOIN sjzl_xlxx ON substr( T.xnxq, 1, 4 ) = xnm AND substr( T.xnxq, 11, 1 ) = sjzl_xlxx.xq AND SUBSTRING ( T.xnxq FROM 1 FOR 4 ) :: INT >= EXTRACT ( YEAR FROM CURRENT_DATE ) - 1 WHERE jc IS NOT NULL GROUP BY xxxqmc, jsmc, ( sjzl_xlxx.ksrq :: DATE ) + ( zc :: INT - 1 ) * 7 + ( xqj :: INT - 1 )), ldxx as ( SELECT DISTINCT xqh,jzwh,jzwmc FROM jwxt_jwxt_jxl_zdb_qywx WHERE gjlspysc='0' ) SELECT ldxx.xqh as campus_code, COALESCE(blt.xqmc,case when ldxx.xqh='01' then '首义校区' when ldxx.xqh='02' then '南湖校区' END) as campus_name, jsxx.jxlh as building_code, jsxx.jxlmc as building_name, jsxx.jsh as classroom_code, jsxx.jsbhmc as classroom_name, '2025-06-06'::date as date,---上线改成CURRENT_DATE JSONB_BUILD_ARRAY( CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)1(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)2(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)3(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)4(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)5(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)6(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)7(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)8(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)9(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)10(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)11(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)12(,|$)' THEN 1 ELSE 0 END, CASE WHEN COALESCE(blt.jc, '') ~ '(^|,)13(,|$)' THEN 1 ELSE 0 END )::JSONB AS session_free, jsxx.yxzws::int as classroom_size FROM sjzl_jsxxb_qywx jsxx LEFT JOIN base_list blt on jsxx.jsbhmc=blt.jsmc and blt.date='2025-06-06'---上线改成CURRENT_DATE LEFT JOIN ldxx ON ldxx.jzwh=jsxx.jxlh AND ldxx.jzwmc=jsxx.jxlmc WHERE jsxx.jslxmc='一般教室' ORDER BY ldxx.xqh,jsxx.jxlh,jsxx.jsh

filetype

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>2023610221 诸梦盈</title> <style> header{ width: 1200px; padding: 0; margin: 0 auto; box-sizing: border-box; } header h1{ text-align: center; } hr{ height: 2px; background-color: #aaaaff; border: none; } .gwc{ width: 1200px; margin: auto; } .bt{ width: 1200px; height: 50px; line-height: 50px; color:#aaaaff; font-size: 32px; } .tab{ margin-top: 20px; width: 1200px; border-collapse: collapse; } thead tr th{ height:50px; text-align: left; background-color: #aaaaff; padding-left: 10px; } thead tr th:nth-of-type(1){ width: 80px; } img{ width: 60px; height: 60px; } td{ height: 80px; padding-left: 10px; border-bottom: 2px solid #aaaaff; } .btn1{ background-color:#aaaaff; border: none; width: 20px; height: 20px; } input{ width: 18px; } .sc{ background-color: crimson; width: 50px; height: 30px; border: 0; color: white; } #yhq,#jsxx{ width: 1200px; height: 50px; line-height: 50px; color:#aaaaff; font-size: 32px; padding: 10px 0px; } .yhzc{ display: flex; flex-wrap: wrap; padding-right: 20px; margin:auto; width: 1200px; } .yhqbh { background-color: blue; color: white; } #yhq1,#yhq2,#yhq3{ width: 380px; height: 100px; margin:auto; background-color: #aaaaff; border: 2px dotted #aa55ff; color: white; text-align: center; } .js{ width: 1200px; } .jswz{ height: 50px; background-color: #aaaaff; } .js-title{ margin: 5px; padding-right: 5px; font-size: 15px; } #zongshu,#zongjia,#shuliang,#manjian,#yinfu{ float: right; padding: 5px; } .yfje{ font-size: 20px; color: blueviolet; } #yinfu{ font-size: 20px; color: blueviolet; } #jsbtn{ margin-top: 10px; background-color: #aaaaff; width: 50px; height: 30px; color: white; float: right; } /* 弹窗 (background) */ .tc { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); justify-content: center; align-items: center; } #jsxq{ font-size: 32px; font-weight: bold; padding-bottom: 20px; } .close{ float: right; font-size: 32px; } .close:hover{ color:red; } /* 弹窗内容 */ .tc-content { position: relative; background-color: #fefefe; margin:auto; border: 1px solid #888; width: 600px; } </style> </head> <body>

学生文具购物车


已选商品
图片 商品 单价 数量 小计 操作
2B铅笔(12支笔)
优质木质拖拽,书写顺畅,不粘附
¥15.00 <button class="btn1" onclick="updateQuantity(1, -1)">-</button> <input type="text" class="quantity-input" id="qty1" value="1" readonly> <button class="btn1" onclick="updateQuantity(1, 1)">+</button>
¥15
<button class="sc" onclick="removeProduct(1)"> 删除 </button>
A5笔记本
优质纸张,方格设计,适合日常记录
¥12 <button class="btn1" onclick="updateQuantity(2, -1)">-</button> <input type="text" class="quantity-input" id="qty2" value="1" readonly> <button class="btn1" onclick="updateQuantity(2, 1)">+</button>
¥12
<button class="sc" onclick="removeProduct(2)"> 删除 </button>
彩色荧光笔(5色)
多彩荧光标记笔,不易洇染
¥18.00 <button class="btn1" onclick="updateQuantity(3, -1)">-</button> <input type="text" class="quantity-input" id="qty3" value="1" readonly> <button class="btn1" onclick="updateQuantity(3, 1)">+</button>
¥18
<button class="sc" onclick="removeProduct(3)"> 删除 </button>
橡皮擦(3块装)
高效擦除,不留痕迹,不易碎
¥6.00 <button class="btn1" onclick="updateQuantity(4, -1)">-</button> <input type="text" class="quantity-input" id="qty4" value="1" readonly> <button class="btn1" onclick="updateQuantity(4, 1)">+</button>
¥6
<button class="sc" onclick="removeProduct(4)"> 删除 </button>
直尺30cm
透明刻度清晰,耐用防折断
¥5 <button class="btn1" onclick="updateQuantity(5, -1)">-</button> <input type="text" class="quantity-input" id="qty5" value="1" readonly> <button class="btn1" onclick="updateQuantity(5, 1)">+</button>
¥5
<button class="sc" onclick="removeProduct(5)"> 删除 </button>
圆规
精密绘图工具,金属材质耐用
¥8 <button class="btn1" onclick="updateQuantity(6, -1)">-</button> <input type="text" class="quantity-input" id="qty6" value="1" readonly> <button class="btn1" onclick="updateQuantity(6, 1)">+</button>
¥8
<button class="sc" onclick="removeProduct(6)"> 删除 </button>
钢笔
经典款式,流畅书写,赠送墨囊
¥20.00 <button class="btn1" onclick="updateQuantity(7, -1)">-</button> <input type="text" class="quantity-input" id="qty7" value="1" readonly> <button class="btn1" onclick="updateQuantity(7,1)">+</button>
¥20
<button class="sc" onclick="removeProduct(7)"> 删除 </button>
文件夹
A4尺寸,可装30页纸,多色可选
¥16.00 <button class="btn1" onclick="updateQuantity(8, -1)">-</button> <input type="text" class="quantity-input" id="qty8" value="1" readonly> <button class="btn1" onclick="updateQuantity(8, 1)">+</button>
¥16
<button class="sc" onclick="removeProduct(8)"> 删除 </button>
修正带
5mm宽度,8m长,修正精确无残留
¥10.00 <button class="btn1" onclick="updateQuantity(9, -1)">-</button> <input type="text" class="quantity-input" id="qty9" value="1" readonly> <button class="btn1" onclick="updateQuantity(9, 1)">+</button>
¥10
<button class="sc" onclick="removeProduct(9)"> 删除 </button>
便利贴套装
多色组合,3种尺寸,便于标记归类
¥14.00 <button class="btn1" onclick="updateQuantity(10, -1)">-</button> <input type="text" class="quantity-input" id="qty10" value="1" readonly> <button class="btn1" onclick="updateQuantity(10, 1)">+</button>
¥14
<button class="sc" onclick="removeProduct(10)"> 删除 </button>
优惠券

满100减10元

有效使用

满200减30元

有效使用

满500减90元

有效使用

结算信息

商品总额 ¥236.00
数量折扣 -¥28.00
满减优惠 -¥30.00
应付金额 ¥178.00
<button id="jsbtn">结算</button>
结算详情 ×
商品总数 20
商品总额 ¥236.00
数量折扣 -¥28.00
满减优惠 -¥30.00
应付金额 ¥178.00
<script> // 打开弹窗的按钮对象 var btn = document.getElementById("jsbtn"); // 获取 元素,用于关闭弹窗 var span = document.querySelector('.close'); // 点击按钮打开弹窗 btn.onclick = function() { tc.style.display = "block"; } // 点击 (x), 关闭弹窗 span.onclick = function() { tc.style.display = "none"; } // 删除商品 function removeProduct(productId) { const productRow = document.getElementById(`product${productId}`); productRow.style.display = 'none'; // 重置数量为0 const quantityInput = document.getElementById(`qty${productId}`); quantityInput.value = 0; // 重新计算总价 calculateTotal(); } // 更新商品数量 function updateQuantity(productId, change) { // 获取商品行 var productRow = document.getElementById('product' + productId); if (!productRow) return; // 获取数量输入框 var qtyInput = productRow.querySelector('.quantity-input'); if (!qtyInput) return; // 获取当前数量 var currentQty = parseInt(qtyInput.value); // 更新数量(不能小于0) var newQty = currentQty + change; if (newQty < 0) newQty = 0; // 更新页面显示 qtyInput.value = newQty; // 更新小计 updateSubtotal(productId); // 重新计算总价 calculateTotal(); } // 更新商品小计 function updateSubtotal(productId) { // 获取商品行 var productRow = document.getElementById('product' + productId); if (!productRow) return; // 获取价格元素 var priceElement = productRow.querySelector('.original-price'); if (!priceElement) return; // 获取价格(去掉¥符号) var price = parseFloat(priceElement.textContent.replace('¥', '')); // 获取数量输入框 var qtyInput = productRow.querySelector('.quantity-input'); if (!qtyInput) return; // 获取当前数量 var quantity = parseInt(qtyInput.value); // 计算折扣(2件9折,3件及以上8折) var discount = 1.0; if (quantity >= 3) { discount = 0.8; // 3件及以上8折 } else if (quantity === 2) { discount = 0.9; // 2件9折 } // 计算小计 var subtotal = price * quantity * discount; // 更新小计显示 var subtotalElement = productRow.querySelector('.jg'); if (subtotalElement) { subtotalElement.textContent = '¥' + subtotal.toFixed(2); } } // 计算总价和应用优惠券 function calculateTotal() { // 商品总额 var total = 0; // 数量折扣总额 var quantityDiscount = 0; // 商品总数 var totalItems = 0; // 遍历所有商品行(1到10) for (var i = 1; i <= 10; i++) { var productRow = document.getElementById('product' + i); // 如果商品行不存在(已被删除),跳过 if (!productRow) continue; // 获取价格元素 var priceElement = productRow.querySelector('.original-price'); if (!priceElement) continue; // 获取价格(去掉¥符号) var price = parseFloat(priceElement.textContent.replace('¥', '')); // 获取数量输入框 var qtyInput = productRow.querySelector('.quantity-input'); if (!qtyInput) continue; // 获取当前数量 var quantity = parseInt(qtyInput.value); // 计算折扣(2件9折,3件及以上8折) var discount = 1.0; if (quantity >= 3) { discount = 0.8; } else if (quantity === 2) { discount = 0.9; } // 计算原价小计 var originalSubtotal = price * quantity; // 计算折扣后小计 var discountedSubtotal = originalSubtotal * discount; // 累加到总额 total += discountedSubtotal; // 累加数量折扣 quantityDiscount += (originalSubtotal - discountedSubtotal); // 累加商品总数 totalItems += quantity; } // 应用优惠券 var couponDiscount = 0; // 按阈值从大到小检查优惠券 if (total >= 500) { couponDiscount = 90; // 满500减90 highlightCoupon(3); } else if (total >= 200) { couponDiscount = 30; // 满200减30 highlightCoupon(2); } else if (total >= 100) { couponDiscount = 10; // 满100减10 highlightCoupon(1); } else { // 没有适用的优惠券,重置所有优惠券高亮 resetCouponHighlights(); } // 计算应付金额 var payable = total - couponDiscount; // 更新结算信息 document.getElementById('zongjia').textContent = '¥' + total.toFixed(2); document.getElementById('shuliang').textContent = '-¥' + quantityDiscount.toFixed(2); document.getElementById('manjian').textContent = '-¥' + couponDiscount.toFixed(2); document.getElementById('yinfu').textContent = '¥' + payable.toFixed(2); document.querySelector('#tc #zongjia').textContent = '¥' + total.toFixed(2); document.querySelector('#tc #shuliang').textContent = '-¥' + quantityDiscount.toFixed(2); document.querySelector('#tc #manjian').textContent = '-¥' + couponDiscount.toFixed(2); document.querySelector('#tc #yinfu').textContent = '¥' + payable.toFixed(2); // 更新弹窗中的商品总数 document.getElementById('zongshu').textContent = totalItems; } // 修改后的 highlightCoupon 函数 function highlightCoupon(yhqId) { // 重置所有优惠券高亮 resetCouponHighlights(); // 高亮指定优惠券 var xs = document.getElementById('yhq' + yhqId); if (xs) { xs.classList.add('active-coupon'); // 添加新的高亮类 } } // 修改后的 resetCouponHighlights 函数 function resetCouponHighlights() { // 移除所有优惠券的高亮效果 for (var i = 1; i <= 3; i++) { var xs = document.getElementById('yhq' + i); if (xs) { xs.classList.remove('active-coupon'); // 移除高亮类 } } } </script> </body> </html> 请把优惠券变化改为变色及变字,代码基础化

刘良运
  • 粉丝: 96
上传资源 快速赚钱