JS實現(xiàn)微博發(fā)布功能
本文實例為大家分享了JS實現(xiàn)微博發(fā)布小案例的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:
html代碼:
<div class="w"> ? ? ? <!-- 操作的界面 --> ? ? ? <div class="controls"> ? ? ? ? <img src="./images/9.6/tip.png" alt="" /><br /> ? ? ? ? <!-- maxlength 可以用來限制表單輸入的內(nèi)容長度 --> ? ? ? ? <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">發(fā)布</button> ? ? ? ? </div> ? ? ? </div> ? ? ? <!-- 微博內(nèi)容列表 --> ? ? ? <div class="contentList"> ? ? ? ? <ul id="list"> ? ? ? ? ? <!-- <li> ? ? ? ? ? ? <div class="info"> ? ? ? ? ? ? ? <img class="userpic" src="./images/9.5/01.jpg" /> ? ? ? ? ? ? ? <span class="username">名字</span> ? ? ? ? ? ? ? <p class="send-time">發(fā)布于 時間</p> ? ? ? ? ? ? </div> ? ? ? ? ? ? <div class="content">內(nèi)容</div> ? ? ? ? ? ? <span class="the_del">X</span> ? ? ? ? ? </li> --> ? ? ? ? </ul> ? ? ? </div> ? ? </div>
css代碼:
<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>
JS代碼:
?// 模擬數(shù)據(jù),后期我們需要從這個數(shù)組中隨機(jī)獲取一個數(shù)據(jù)對象,做為發(fā)布微博的用戶信息進(jìn)行渲染,但是這個不是關(guān)鍵業(yè)務(wù),我也可以固定寫死 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' } ? ? ? ] ? ? ? // 獲取元素 ? ? ? let area = document.querySelector(`#area`) ?//文本框 ? ? ? let useCount= document.querySelector(`#useCount`) ?//文字?jǐn)?shù)量 ? ? ? let bnt = document.querySelector(`#send`) //發(fā)布按鈕 ? ? ? let list =document.querySelector(`#list`) //列表結(jié) ? ? ? let contentList=document.querySelector(`.contentList`) ?//微博內(nèi)容 ? ? ? ? // 為文本域添加鍵盤事件 ? ? ? area.addEventListener(`keydown`,function(e){ ? ? ? ? // 判斷e.key用戶按下的鍵盤鍵的值 =Enter回車鍵 ? ? ? ? if (e.key == `Enter`){ ? ? ? ? ? bnt.click() ? ? ? ? } ? ? ? }) ? ? ? ? // 為文本框添加input事件 ? ? ? area.addEventListener(`input`,function(){ ? ? ? ? // 去除左右空格trim() ? ? ? ? useCount.innerHTML=area.value.trim().length ? ? ? }) ? ? ? // 為發(fā)布按鈕添加點擊事件 ? ? ?bnt.addEventListener(`click`,function(){ ? ? ? // 隨機(jī)獲取數(shù)據(jù)對象進(jìn)行渲染 ? ? ? let arr=parseInt(Math.random()*dataArr.length) ? ? ? ? ?let content=area.value ? ? ? // ?判斷 文本框內(nèi)容的長度=0 ?提示用戶 ? ? ? ?if (content.trim().length ==0){ ? ? ? ? ?alert(`請先填寫內(nèi)容再發(fā)布`) ? ? ? ? ?return ? ? ? ?} ? ? ? ?let li = document.createElement(`li`) ? ? ? // ? 給元素拼接 ? ? ? ?li.innerHTML=`<div class="info"> ? ? ? ? ? ? ? ? ? ? ? ? <img class="userpic" src="${dataArr[arr].imgSrc}" /> ? ? ? ? ? ? ? ? ? ? ? ? <span class="username">${dataArr[arr].uname}</span> ? ? ? ? ? ? ? ? ? ? ? ? <p class="send-time">發(fā)布于 ${dateFormat()}</p> ? ? ? ? ? ? ? ? ? ? ? </div> ? ? ? ? ? ? ? ? ? ? ? <div class="content">${content}</div> ? ? ? ? ? ? ? ? ? ? ? <span class="the_del">X</span>` ? ? ? ? ? // 把創(chuàng)建好的元素插入到list ? ? ? ?list.insertBefore(li,list.children[0]) ? ? ? ? ? // ?內(nèi)容發(fā)布出去里面清空 ? ? ? ?area.value=`` ? ? ? ? ? // ?內(nèi)容發(fā)布出去長度清0 ? ? ? ? useCount.innerHTML=0 ? ? ? // 刪除評論 ? ? ?let del = document.querySelector(`.the_del`) ? ? ?del.addEventListener(`click`,function(){ ? ? ? ?del.parentNode.remove() ? ? ?}) ? ? ? ? ?// ?函數(shù)封裝時間 ? ? function dateFormat(){ ? ? ? let data = new Date()? ? ? ? let year = data.getFullYear() //年 ? ? ? let month = data.getMonth()+1//月 ? ? ? let day = data.getDate() //日 ? ? ? let h = data.getHours() //時 ? ? ? h = h<10? `0`+h :h ? ? ? let m = data.getMinutes() //分 ? ? ? m = m<10? `0`+m :m ? ? ? let s = data.getSeconds() //秒 ? ? ? s = s<10? `0`+s :s ? ? ? return (`${year}-${month}-${day} ?${h}:${m}:${s}`) ? ? } })
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript設(shè)計模式 – 裝飾模式原理與應(yīng)用實例分析
這篇文章主要介紹了javascript設(shè)計模式 – 裝飾模式,結(jié)合實例形式分析了javascript裝飾模式基本概念、原理、應(yīng)用場景及操作注意事項,需要的朋友可以參考下2020-04-04JavaScript arguments.callee作用及替換方案詳解
這篇文章主要介紹了JavaScript arguments.callee作用及替換方案詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09JavaScript中this的學(xué)習(xí)筆記及用法整理
在本篇文章里小編給大家整理的是關(guān)于JavaScript中this的使用以及代碼實例,需要的朋友們學(xué)習(xí)下。2020-02-02Javascript單元測試框架QUnitjs詳細(xì)介紹
這篇文章主要介紹了Javascript單元測試框架QUnitjs詳細(xì)介紹,需要的朋友可以參考下2014-05-05JavaScript高級程序設(shè)計(第三版)學(xué)習(xí)筆記1~5章
這篇文章主要介紹了JavaScript高級程序設(shè)計(第三版)學(xué)習(xí)筆記1~5章 的相關(guān)資料,需要的朋友可以參考下2016-03-03JS實現(xiàn)的一個簡單的Autocomplete自動完成例子
這篇文章主要介紹了JS實現(xiàn)的一個簡單的Autocomplete自動完成例子,需要的朋友可以參考下2014-04-04