Ajax — 大事件项目(第二天)
大事件-02
fix一個bug
原因:
- 開始做注冊的時候,頁面中只有一個 name=password的input,所以 $(‘input[name=“password”]’) 可以準確的找到元素
- 后來做登錄的時候,頁面中多了一個name=password的input,所以$(‘input[name=“password”]’)找到的就不是注冊的密碼框了
解決辦法:
- 給注冊的密碼框加一個 類 reg-password
- 表單驗證的時候,根據類名來獲取密碼框 let pwd = $('.reg-password').val().trim(); // 獲取密碼
合并login分支,創建index分支
# 先把login分支的內容全部提交# 切換分支到master git checkout master# 合并分支login git merge login# 創建并切換到index分支(在這個分支上,開發首頁) git checkout -b index后臺首頁布局
完成了基本的頁面布局
去layui官網,文檔 --> 頁面布局 --> 后臺布局,把html代碼全部復制,應用到我們自己的index.html中。
修改一下layui.css 和 layui.all.js的路徑
頭部區域處理
- 更換logo
- 刪除頭部的一個導航菜單
- 修改了右上角(比對線上做好的效果)
頭部字體頭像處理
新注冊的用戶,沒有圖片頭像。只能使用用戶名的首字母(大寫)當做頭像。
<!-- 在圖片前面,加一個span --> <span class="text-avatar">A</span>引入自己的 index.css
/*字體頭像*/ .text-avatar {width: 33px;height: 33px;margin-right: 10px;border-radius: 50%;display: inline-block;background-color: #419488;line-height: 33px;text-align: center;vertical-align: middle;color: #fff;font-size: 20px; }/*默認先讓字體頭像隱藏*/ .text-avatar {display: none; }側邊欄菜單手風琴效果和默認選中狀態
- 自己調整出三個菜單(首頁、文章管理、個人中心)
- 實現手風琴效果
- 給 ul 添加一個屬性 lay-shrink="all"
- 默認讓首頁有選中狀態
- 給 首頁 li 添加一個 layui-this 類
- 默認所有菜單都是收縮狀態
- 去掉 文章管理 li 標簽的 layui-nav-itemed 類
側邊欄頂級菜單使用iconfont字體圖標
- 先看demo(/assets/fonts/demo_index.html),里面有使用方法
- 具體使用方法
- index.html 中加載css文件 <link rel="stylesheet" href="/assets/fonts/iconfont.css">
- 在首頁、文章管理、個人中心、退出之前,分別加入span標簽 <span class="iconfont icon-xxx"></span>
- 更換類名
注意,個人中心,是側邊欄的個人中心。不是頭部的
自定義樣式,調整圖標的位置
/*跳轉頂級菜單的圖標位置*/ .iconfont {margin-right: 8px;position: relative;top: 1px; }側邊欄子菜單使用layui字體圖標
-
使用layui的字體圖標,不用再次引入css文件了。因為前面引入過了
-
所以,直接在每個子菜單前面加 <i class="layui-icon layui-icon-app"></i>
-
自定義樣式,調整一下位置 margin: 0 5px 0 15px;
側邊欄頭像和歡迎語
-
分析:
- 側邊欄的頭像和歡迎語和頭部的效果差不多
-
具體做法
-
復制頭部“個人中心”的 a 標簽,放到側邊欄 ul 前面,并且把a換成了div
<div class="userinfo"><span class="text-avatar">A</span><img src="http://t.cn/RCzsdCq" class="layui-nav-img"><span class="welcome">歡迎 老湯</span> </div> -
樣式
/*側邊欄頭像和歡迎語*/ .userinfo {display: block;height: 60px;line-height: 60px;text-align: center; } .welcome {color: #fff;font-size: 12px;user-select: none; }
-
iframe標簽原理
-
把原來的內容區的div換成iframe標簽
<div class="layui-body"><!-- 內容主體區域 --><!-- <div style="padding: 15px;">內容主體區域</div> --><iframe src="/home/dashboard.html" name="fm"></iframe> </div> -
修改樣式
/*iframe*/ iframe {width: 100%;height: 100%; }/*去掉iframe的滾動條 -- 給父級的div加 overflow:hidden */ .layui-body {overflow: hidden; } -
可以自行創建兩個頁面,然后在側邊欄掛好超鏈接,指定target屬性,測試一下。
退出功能
- 刪除token
- 跳轉頁面到 /login.html
具體做法:
- 創建 assets/js/index.js文件
- index.html 加載 所需的js文件(jQuery、index.js)
- 在index.js 中,完成退出的功能
獲取用戶信息并渲染到頁面中
思路:
- 調用接口 /my/userinfo ,來獲取用戶的信息
- 那獲取到的信息渲染到頁面中
步驟:
- 必須在請求頭中,攜帶token,否則 請求失敗
- 優先使用昵稱,沒有昵稱(nickname),則使用賬號(username)
- 優先使用圖片
- 沒有圖片,則使用 名字(設置文字頭像顯示,不要使用 show(),要設置css)
合并index分支,創建user分支
# 先把index分支的代碼全部提交 # 切換到master git checkout master# 合并index到master git merge index# 創建新分支user,并且切換 (用于開發個人中心) git checkout -b user用戶基本信息
準備工作
- 創建HTML文件、css文件、js文件
- 創建 /user/userinfo.html
- 創建 /assets/css/user/userinfo.css
- 創建 /assets/js/user/userinfo.js
- userinfo.html 中加載所需的css和js文件(layui.css/自己的css、jQuery、layui.all.js、自己的js)
- index.html 頭部和側邊欄,掛超鏈接,鏈接到 /user/userinfo.html
頁面布局
使用layui的卡片面板來布局
- layui文檔 --> 頁面元素 --> 面板 --> 卡片面板
- 內容區里面放表單
CSS樣式:
.layui-card {margin: 20px 20px 0 20px; }.layui-form {width: 500px; }我們需要把 index.css 里面的 iframe 加一個灰色的背景色。
為表單賦值
思路:
- 發送ajax請求,獲取用戶信息
- 設置表單各項(每個輸入框)的value值。
具體步驟:
-
先設置表單各項的name屬性
-
發送ajax請求
-
根據表單各項的name屬性,找到每個input,分別設置value值
細節問題:
- 加一個隱藏域 id <input type="hidden" name="id" />,放到表單里面的任意位置,一會提交表單的時候用
- 設置賬號readonly,表示該項不能修改
HTML代碼:
<!--form中加一個隱藏域--> <input type="hidden" name="id"><!-- 設置每個input的name --> id / username / nickname / email<!-- 設置登錄賬號的readonly屬性 --> <input readonly type="text" name="username" required lay-verify="required" autocomplete="off" class="layui-input">使用layui的from模塊快速為表單賦值
-
為表單設置 lay-filter="user" ,值隨便定義,我這里使用的是user
-
JS代碼中,一行代碼為表單賦值
let form = layui.form; form.val('user', res.data);- 要求,res.data 這個對象的屬性(key)要和表單各項的name屬性值相同,才能賦值
完成更新用戶信息的功能
- 注冊表單的提交事件
- 阻止默認行為
- 收集表單數據(form.val(‘user’) 或者 使用 $(‘form’).serialize() 都行)
- 發送ajax請求,完成更新
- 更新成功之后,提示,并且調用父頁面的 getUserInfo() 從新渲染用戶的頭像
表單驗證
優化Ajax請求
總結
以上是生活随笔為你收集整理的Ajax — 大事件项目(第二天)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ajax — 大事件项目(第一天)
- 下一篇: Ajax — 大事件项目(第三天)