簡要記錄維護 jQuery
專案相關需求實現的細節,方便日後回顧。
樣式相關
flex
佈局justify-content: flex-start;
和 justify-content: center;
flex-wrap: wrap;
換行
cursor: pointer;
手型的使用
jQuery 左右移動 animate
使用 jQuery 實現左右按鈕移動效果 – 類似於 FM 音樂播放器專案的動畫實現
var isAnimate = false //判斷是否在動畫之中 var isToStart = true //判斷是否在最起始位置 var isToEnd = false //判斷是否到底 $(".right_button").on("click",function(){ if(isAnimate) return var itemWidth = $(`.items_new`).outerWidth(true) //每個小容器的真實寬度 var rowCount = parseInt($(`.content_new`).width()/itemWidth) //可視視窗 除以 itemWidth 得到可視視窗能看到的整數個數 if(!isToEnd){ isAnimate = true $(`.items_new`).animate({ left: `-=` + rowCount * itemWidth },400, function(){ isAnimate = false isToStart = false if(parseFloat($(`.content_new`).width()) - parseFloat($(`.items_new`).css(`left`)) >= parseFloat($(`.items_new`).css(`width`)) * <?=Yii::$app->params[`bookShow`][`newBookNum`]?>) { // newBookNum 對應 params.php 檔案設定書本數量 isToEnd = true } }) } }) $(".left_button").on("click",function(){ if(isAnimate) return var itemWidth = $(`.items_new`).outerWidth(true) var rowCount = parseInt($(`.content_new`).width()/itemWidth) if(!isToStart){ isAnimate = true $(`.items_new`).animate({ left: `+=` + rowCount * itemWidth },400, function(){ isAnimate = false isToEnd = false if(parseFloat(($(`.items_new`).css(`left`))) >= 0){ isToStart = true } }) } })
localStorage 實現搜尋功能
用 localStorage 實現搜尋歷史功能,點選可跳轉相應頁面
Demo預覽
程式碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> <title>搜尋歷史----localstorage本地化儲存</title> <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.js"></script> </head> <body> <div class="col-lg-6" style="margin-top:20px;"> <div class="input-group"> <input type="text" class="form-control" id="keywords" placeholder="隨便輸入檢視效果,預設5條"> <span class="input-group-btn"> <button class="btn btn-default" id="search" type="button">Go!</button> </span> </div><!-- /input-group --> </div><!-- /.col-lg-6 --> </div><!-- /.row --> <br><br> <div style="margin:20px 20px 0px 20px;"> <span>搜尋歷史</span> <span id="empty">清除歷史</span> </div> <div style="margin:20px;" id="history"> </div> </body> <script type="text/javascript"> $(function(){ update_history(); // 繫結回車事件 $(document).keydown(function(event){ if(event.keyCode==13){ $("#search").click(); } }); // 搜尋點選事件 $("#search").click(function(){ var keywords = $("#keywords").val(); history(keywords); //新增到快取 update_history(); //更新搜尋歷史 }) // 清空搜尋歷史 $("#empty").click(function(){ mystorage.remove(`keywords`); $("#history").html(" "); }) }) /** * [update_history 更新搜尋歷史] */ function update_history(){ console.log(mystorage.get("keywords")); var history = mystorage.get("keywords"); if (history) { var html = ""; $.each(history,function(i,v){ html += "<a class=`history_link btn btn-default` style=`margin: 5px;` href=`javascript:;` role=`button`>"+v+"</a>" }) $("#history").html(html); }; } /** * [history //搜尋歷史函式儲存] */ function history(value){ var data = mystorage.get("keywords"); if (!data) { var data = []; //定義一個空陣列 }else if(data.length === 5){ //搜尋歷史數量 data.shift(); //刪除陣列第一個元素有 }else{ }; if (value) { //判斷搜尋詞是否為空 if (data.indexOf(value)<0) { //判斷搜尋詞是否存在陣列中 data.push(value); //搜尋詞新增到陣列中 mystorage.set("keywords",data); //儲存到本地化儲存中 }; }; } /** * [mystorage 儲存localstorage時候最好是封裝一個自己的鍵值,在這個值裡儲存自己的內容物件,封裝一個方法針對自己物件進行操作。避免衝突也會在開發中更方便。] */ var mystorage = (function mystorage(){ var ms = "mystorage"; var storage=window.localStorage; if(!window.localStorage){ alert("瀏覽器不支援localstorage"); return false; } var set = function(key,value){ //儲存 var mydata = storage.getItem(ms); if(!mydata){ this.init(); mydata = storage.getItem(ms); } mydata = JSON.parse(mydata); mydata.data[key] = value; storage.setItem(ms,JSON.stringify(mydata)); return mydata.data; }; var get = function(key){ //讀取 var mydata = storage.getItem(ms); if(!mydata){ return false; } mydata = JSON.parse(mydata); return mydata.data[key]; }; var remove = function(key){ //讀取 var mydata = storage.getItem(ms); if(!mydata){ return false; } mydata = JSON.parse(mydata); delete mydata.data[key]; storage.setItem(ms,JSON.stringify(mydata)); return mydata.data; }; var clear = function(){ //清除物件 storage.removeItem(ms); }; var init = function(){ storage.setItem(ms,`{"data":{}}`); }; return { set : set, get : get, remove : remove, init : init, clear : clear }; })(); </script> </html>
計時器溫馨提示
溫馨提示功能(例:已耗時用眼1小時,請休息片刻)
timeCount() function timeCount(){ var restHelper = 1 var timer = setInterval(function() { console.log(restHelper++); if(restHelper == 3600){ alert(`已經閱讀一小時咯!請休息片刻喲。`) clearInterval(timer) timeCount() } }, 1000); }