当前位置: 首页 > news >正文

微博发布.html

最终效果展示图:

主要代码:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>微博发布</title> <style> * { margin: 0; padding: 0; } ul { list-style: none; } .w { width: 900px; margin: 0 auto; } .controls textarea { width: 878px; height: 100px; resize: none; border-radius: 10px; outline: none; padding-left: 20px; padding-top: 10px; font-size: 18px; } .controls { overflow: hidden; } .controls div { float: right; display: flex; justify-content: space-between; align-items: center; margin-top: 15px; } .controls div span { color: #666; } .controls div .useCount { color: red; } .controls div button { width: 100px; outline: none; border: none; background: rgb(0, 132, 255); height: 30px; cursor: pointer; color: #fff; font: bold 14px '宋体'; transition: all 0.5s; } .controls div button:hover { background: rgb(0, 225, 255); } .controls div button:active { transform: translateY(1px); } .controls div button:disabled { background: rgba(0, 225, 255, 0.5); } .contentList { margin-top: 50px; } .contentList li { padding: 20px 0; border-bottom: 1px dashed #ccc; position: relative; } .contentList li .info { position: relative; } .contentList li .info span { position: absolute; top: 15px; left: 100px; font: bold 16px '宋体'; } .contentList li .info p { position: absolute; top: 40px; left: 100px; color: #aaa; font-size: 12px; } .contentList img { width: 80px; border-radius: 50%; } .contentList li .content { padding-left: 100px; color: #666; word-break: break-all; } .contentList li .the_del { position: absolute; right: 0; top: 0; font-size: 28px; cursor: pointer; } </style> </head> <body> <div class="w"> <!-- 操作的界面 --> <div class="controls"> <img src="./images/9.6/tip.png" alt="" /><br /> <!-- maxlength 可以用来限制表单输入的内容长度 --> <textarea placeholder="说点什么吧..." id="area" cols="30" rows="10" maxlength="200"></textarea> <div> <span class="useCount" id="useCount">0</span> <span>/</span> <span>200</span> <button id="send">发布</button> </div> </div> <!-- 微博内容列表 --> <div class="contentList"> <ul id="list"></ul> </div> </div> <!-- 添加了hidden属性元素会直接隐藏掉 --> <li hidden id="template"> <div class="info"> <img class="userpic" src="./images/9.6/03.jpg" /> <span class="username">百里守约</span> <p class="send-time">发布于 2026年1月28日 21:41:20</p> </div> <div class="content">111</div> <span class="the_del">X</span> </li> <script> // maxlength 是一个表单属性, 作用是给表单设置一个最大长度 const textarea = document.getElementById('area'); const useCount = document.getElementById('useCount'); const sendBtn = document.getElementById('send'); const list = document.getElementById('list'); const template = document.getElementById('template'); // 模拟数据 let dataArr = [ { uname: '司马懿', imgSrc: './images/9.5/01.jpg' }, { uname: '女娲', imgSrc: './images/9.5/02.jpg' }, { uname: '百里守约', imgSrc: './images/9.5/03.jpg' }, { uname: '亚瑟', imgSrc: './images/9.5/04.jpg' }, { uname: '虞姬', imgSrc: './images/9.5/05.jpg' }, { uname: '张良', imgSrc: './images/9.5/06.jpg' }, { uname: '安其拉', imgSrc: './images/9.5/07.jpg' }, { uname: '李白', imgSrc: './images/9.5/08.jpg' }, { uname: '阿珂', imgSrc: './images/9.5/09.jpg' }, { uname: '墨子', imgSrc: './images/9.5/10.jpg' }, { uname: '鲁班', imgSrc: './images/9.5/11.jpg' }, { uname: '嬴政', imgSrc: './images/9.5/12.jpg' }, { uname: '孙膑', imgSrc: './images/9.5/13.jpg' }, { uname: '周瑜', imgSrc: './images/9.5/14.jpg' }, { uname: '老夫子', imgSrc: './images/9.5/15.jpg' }, { uname: '狄仁杰', imgSrc: './images/9.5/16.jpg' }, { uname: '扁鹊', imgSrc: './images/9.5/17.jpg' }, { uname: '马可波罗', imgSrc: './images/9.5/18.jpg' }, { uname: '露娜', imgSrc: './images/9.5/19.jpg' }, { uname: '孙悟空', imgSrc: './images/9.5/20.jpg' }, { uname: '黄忠', imgSrc: './images/9.5/21.jpg' }, { uname: '百里玄策', imgSrc: './images/9.5/22.jpg' }, ]; // 初始化:添加一些示例微博 function initExamples() { const examplePosts = [ { content: '今天非常的开心!', userIndex: 0 }, ]; examplePosts.forEach(post => { addWeibo(post.content, dataArr[post.userIndex]); }); } // 实时更新字数统计 textarea.addEventListener('input', function () { const count = this.value.length; useCount.textContent = count; // 如果字数超过200,截断 if (count > 200) { this.value = this.value.substring(0, 200); useCount.textContent = 200; } // 启用/禁用发布按钮 sendBtn.disabled = this.value.trim().length === 0; }); // 获取当前时间格式化字符串 function getCurrentTime() { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, '0'); const day = String(now.getDate()).padStart(2, '0'); const hour = String(now.getHours()).padStart(2, '0'); const minute = String(now.getMinutes()).padStart(2, '0'); const second = String(now.getSeconds()).padStart(2, '0'); return `${year}年${month}月${day}日 ${hour}:${minute}:${second}`; } // 添加微博到列表 function addWeibo(content, user) { // 克隆模板 const newWeibo = template.cloneNode(true); newWeibo.removeAttribute('hidden'); newWeibo.removeAttribute('id'); // 设置内容 newWeibo.querySelector('.userpic').src = user.imgSrc; newWeibo.querySelector('.username').textContent = user.uname; newWeibo.querySelector('.send-time').textContent = `发布于 ${getCurrentTime()}`; newWeibo.querySelector('.content').textContent = content; // 添加到列表最前面 list.insertBefore(newWeibo, list.firstChild); // 为删除按钮添加事件 const delBtn = newWeibo.querySelector('.the_del'); delBtn.addEventListener('click', function () { if (confirm('确定要删除这条微博吗?')) { list.removeChild(newWeibo); } }); } // 发布按钮点击事件 sendBtn.addEventListener('click', function () { const content = textarea.value.trim(); if (content.length === 0) { alert('请输入微博内容!'); return; } // 随机选择一个用户 const randomUser = dataArr[Math.floor(Math.random() * dataArr.length)]; // 添加微博 addWeibo(content, randomUser); // 清空输入框 textarea.value = ''; useCount.textContent = '0'; sendBtn.disabled = true; // 滚动到顶部 window.scrollTo({ top: 0, behavior: 'smooth' }); }); // 按Enter键发布,按Ctrl+Enter换行 textarea.addEventListener('keydown', function (e) { if (e.key === 'Enter' && !e.ctrlKey) { e.preventDefault(); sendBtn.click(); } }); // 页面加载完成时初始化示例微博 document.addEventListener('DOMContentLoaded', function () { initExamples(); }); </script> </body> </html>
http://www.jsqmd.com/news/315330/

相关文章:

  • HTML作业展示
  • ePWM信号的艺术:如何用Simulink生成高精度PWM波形
  • 基于Verilog HDL的1位十进制可逆计数器设计与FPGA实现
  • STM32单定时器多通道输入捕获的实战解析
  • WuliArt Qwen-Image Turbo实际项目:独立开发者构建本地化AI作图SaaS原型
  • 动手实测YOLOv13镜像,AI目标检测真实体验分享
  • OLED显示优化实战:从基础显示到动态效果的全链路实现
  • Fun-ASR响应式设计体验:手机和平板也能操作
  • GLM-4.7-Flash行业落地:电力巡检报告生成+缺陷描述标准化处理
  • 检测结果为空?可能是这几个原因导致的cv_resnet18_ocr-detection失败
  • 逻辑推理的日常应用:如何用‘且’、‘或’关系提升决策效率
  • 中英日韩都能说?IndexTTS 2.0多语言合成功能测评
  • 实测阿里Qwen-2512图像模型,ComfyUI版速度提升明显
  • 为什么说孩子近视是拖出来的?这些征兆很多家长都忽略了!
  • Z-Image-Turbo_UI界面适合哪些绘画场景?案例展示
  • Ollama部署embeddinggemma-300m:开源嵌入模型在RAG Pipeline中的关键作用解析
  • DASD-4B-Thinking一文详解:vLLM镜像免配置部署+Chainlit前端调用完整步骤
  • 河南优质复合肥服务商深度测评与选购指南
  • DDD 领域驱动设计(二)
  • 2026年质量好的非金属补偿器/金属波纹补偿器厂家推荐与选购指南
  • Clawdbot+Qwen3:32B镜像部署:支持HTTPS+Basic Auth的企业级安全配置
  • DDD 领域驱动设计(四)
  • 完整示例:Linux下通过V4L2捕获并转发UVC视频流
  • Qwen3-4B-Instruct-2507部署教程:Streamlit现代化UI+CSS圆角交互设计详解
  • Qwen2.5-7B-Instruct实际生成效果:法律条款分析+风险点结构化输出
  • 白点彩线代表什么?AI手势识别可视化元素解读
  • Ollama镜像免配置|embeddinggemma-300m构建本地AI写作辅助工具
  • 用MGeo做了个地址匹配小项目,结果超预期!
  • Qwen-Turbo-BF16惊艳效果展示:超写实皮肤质感+体积雾+霓虹反射实测对比
  • 通义千问3-Reranker-0.6B快速上手:Gradio界面上传txt文档列表批量重排