news 2026/4/15 17:53:35

运用VS Code前端开发工具完成微博发布案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运用VS Code前端开发工具完成微博发布案例

要求:完成微博发布案例,运行结果如下:

解题思路:

1.创建HTML文件,运用内嵌式CSS完成输入框部分,运行效果如下:

2.创建英雄表,用于存放英雄名字与头像

3.获取元素有输入框,输入时随字数变化的0,发布按钮,还有发布的位置

4.各个元素绑定相应的事件:

输入框:读取所输入的内容和长度,长度传给输入时随字数变化的0,内容传给发布按钮

输入时随字数变化的0:接收输入框传给的长度,修改原本的0变为对应长度的数字,随输入框的变化而变化

发布按钮:读取输入框传给的内容,点击按钮后,输入框将变为空,长度为0,在div下方生成微博

5.使用事件委托处理删除按钮点击绑定到整个列表

更多细节请看源代码!

源代码:

<!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; } .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: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> <div class="info"> <img class="userpic" src="./images/9.6/03.jpg" /> <span class="username">死数据:百里守约</span> <p class="send-time">死数据:发布于 2020年12月05日 00:07:54</p> </div> <div class="content">死数据:111</div> <span class="the_del">X</span> </li> <script> // maxlength 是一个表单属性, 作用是给表单设置一个最大长度 // 模拟数据 - 王者荣耀英雄 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' }, ]; // 1. 获取元素 let area = document.querySelector('#area'); let useCount = document.querySelector('.useCount'); let send = document.querySelector('#send'); let list = document.querySelector('#list'); // 2. 绑定输入事件 area.oninput = function () { // 2.1 获取输入框的值 let value = area.value; // 2.2 计算输入框的值的长度 let len = value.length; // 2.3 把长度赋值给 useCount useCount.innerHTML = len; } // 3. 点击发布按钮, 把输入框的值添加到列表中 send.onclick = function () { // 3.1 获取输入框的值 let value = area.value.trim(); // 3.2 获取输入框的值的长度 let len = value.length; // 3.3 判断输入框的值是否为空 if (len == 0) { alert('请输入内容'); return; } // 3.4 判断输入框的值的长度是否大于200 if (len > 200) { alert('输入框的值不能大于200'); return; } // 3.5 随机选择一个用户 let randomIndex = Math.floor(Math.random() * dataArr.length); let randomUser = dataArr[randomIndex]; // 3.6 获取当前时间并格式化 let now = new Date(); let year = now.getFullYear(); let month = (now.getMonth() + 1).toString().padStart(2, '0'); let day = now.getDate().toString().padStart(2, '0'); let hour = now.getHours().toString().padStart(2, '0'); let minute = now.getMinutes().toString().padStart(2, '0'); let second = now.getSeconds().toString().padStart(2, '0'); let timeStr = `${year}年${month}月${day}日 ${hour}:${minute}:${second}`; // 3.7 创建一个新的 li 元素 let newLi = document.createElement('li'); // 3.8 把输入框的值添加到 li 元素中 newLi.innerHTML = ` <div class="info"> <img class="userpic" src="${randomUser.imgSrc}" /> <span class="username">${randomUser.uname}</span> <p class="send-time">发布于 ${timeStr}</p> </div> <div class="content">${value}</div> <span class="the_del">X</span> `; // 3.9 把 li 元素添加到 ul 中 list.insertBefore(newLi, list.children[0]); // 3.10 清空输入框的值并重置计数器 area.value = ''; useCount.innerHTML = '0'; } // 4. 使用事件委托处理删除按钮点击 - 绑定到整个列表 list.addEventListener('click', function (e) { // 4.1 判断点击的是不是 X 按钮 if (e.target.className == 'the_del') { // 4.2 获取点击的 X 按钮所在的 li 元素 let li = e.target.parentNode; // 4.3 删除 li 元素 list.removeChild(li); } }) </script> </body> </html>

运行结果:

实验到此结束!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 18:00:25

Qwen3-VL-8B精彩案例:学生上传数学试卷截图→自动解题+步骤讲解

Qwen3-VL-8B精彩案例&#xff1a;学生上传数学试卷截图→自动解题步骤讲解 1. 这不是“看图说话”&#xff0c;是真正能解题的AI助手 你有没有见过这样的场景&#xff1a;中学生把一张手写数学试卷拍照发给老师&#xff0c;几秒后&#xff0c;不仅答案出来了&#xff0c;连每…

作者头像 李华
网站建设 2026/3/14 2:16:44

AI 净界-RMBG-1.4 教学辅助:教师快速制作课件透明素材

AI 净界-RMBG-1.4 教学辅助&#xff1a;教师快速制作课件透明素材 1. 为什么老师需要“透明素材”&#xff1f;——从课件痛点说起 你有没有试过在PPT里插入一张学生实验照片&#xff0c;结果背景杂乱、边框生硬&#xff0c;反复调整还是不协调&#xff1f; 或者想把卡通人物…

作者头像 李华
网站建设 2026/4/14 2:43:52

超越官方教程:用SDK Manager高效管理Jetson AGX Xavier多版本开发环境

超越官方教程&#xff1a;用SDK Manager高效管理Jetson AGX Xavier多版本开发环境 当团队需要同时维护多个Jetson AGX Xavier设备时&#xff0c;传统的刷机方法往往效率低下且容易出错。特别是在跨国协作场景下&#xff0c;网络延迟和依赖下载问题会让整个部署过程变得异常痛苦…

作者头像 李华
网站建设 2026/4/7 11:25:34

热门包管理器中存在多个漏洞,JavaScript 生态系统易受供应链攻击

聚焦源代码安全&#xff0c;网罗国内外最新资讯&#xff01; 编译&#xff1a;代码卫士 专栏供应链安全 数字化时代&#xff0c;软件无处不在。软件如同社会中的“虚拟人”&#xff0c;已经成为支撑社会正常运转的最基本元素之一&#xff0c;软件的安全性问题也正在成为当今社…

作者头像 李华