下拉刷新組件是一種常用的交互方式,它可以讓用戶通過上拉或下拉頁面來刷新內容,提高用戶體驗。下面是一個簡單的上下拉刷新組件的實現思路。
首先,我們需要監聽用戶的上拉和下拉操作。可以通過監聽滾動事件來實現。當用戶滾動到頁面頂部時,表示用戶想要下拉刷新,此時可以觸發下拉刷新的動作。當用戶滾動到頁面底部時,表示用戶想要上拉加載更多內容,此時可以觸發上拉加載的動作。
在下拉刷新的動作中,一般會有一個下拉刷新的動畫效果,用來提示用戶正在加載數據。可以使用CSS動畫或者JS動畫來實現。當數據加載完成后,需要更新頁面的內容,并且隱藏下拉刷新的動畫效果。
在上拉加載的動作中,一般會有一個上拉加載的動畫效果,用來提示用戶正在加載更多數據。同樣,可以使用CSS動畫或者JS動畫來實現。當數據加載完成后,需要將新加載的數據追加到頁面的末尾,并且隱藏上拉加載的動畫效果。
下面是一個簡單的實現示例:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上下拉刷新組件</title>
<style>
/* 下拉刷新和上拉加載的動畫效果樣式 */
.loading {
text-align: center;
padding: 10px;
font-size: 14px;
color: #999;
}
.loading .icon {
display: inline-block;
width: 16px;
height: 16px;
margin-right: 5px;
background: url(loading.gif) no-repeat center center;
background-size: 16px 16px;
vertical-align: middle;
animation: rotate 1s infinite linear;
}
@keyframes rotate {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
</style>
</head>
<body>
<div id="content">
<!-- 頁面內容 -->
</div>
<script>
// 獲取頁面元素
var content = document.getElementById('content');
// 監聽滾動事件
window.addEventListener('scroll', function() {
// 獲取頁面的滾動高度
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
// 獲取頁面的可視高度
var clientHeight = document.documentElement.clientHeight || document.body.clientHeight;
// 獲取頁面的總高度
var scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight;
// 判斷是否到達頁面頂部
if (scrollTop === 0) {
// 觸發下拉刷新的動作
refresh();
}
// 判斷是否到達頁面底部
if (scrollTop + clientHeight === scrollHeight) {
// 觸發上拉加載的動作
loadMore();
}
});
// 下拉刷新的動作
function refresh() {
// 顯示下拉刷新的動畫效果
var loading = document.createElement('div');
loading.className = 'loading';
loading.innerHTML = '<span class="icon"></span>正在刷新...';
content.insertBefore(loading, content.firstChild);
// 模擬加載數據
setTimeout(function() {
// 更新頁面的內容
content.innerHTML = '刷新后的內容';
// 隱藏下拉刷新的動畫效果
content.removeChild(loading);
}, 2000);
}
// 上拉加載的動作
function loadMore() {
// 顯示上拉加載的動畫效果
var loading = document.createElement('div');
loading.className = 'loading';
loading.innerHTML = '<span class="icon"></span>正在加載更多...';
content.appendChild(loading);
// 模擬加載更多數據
setTimeout(function() {
// 追加新加載的數據到頁面的末尾
content.innerHTML += '加載更多的內容';
// 隱藏上拉加載的動畫效果
content.removeChild(loading);
}, 2000);
}
</script>
</body>
</html>
```
在上面的示例中,我們通過監聽滾動事件來實現上下拉刷新的功能。當用戶滾動到頁面頂部時,會觸發下拉刷新的動作,即調用refresh()函數。在refresh()函數中,我們使用了一個loading的div元素來顯示下拉刷新的動畫效果,然后在模擬加載數據的過程中,更新頁面的內容,并且隱藏下拉刷新的動畫效果。
當用戶滾動到頁面底部時,會觸發上拉加載的動作,即調用loadMore()函數。在loadMore()函數中,同樣使用了一個loading的div元素來顯示上拉加載的動畫效果,然后在模擬加載更多數據的過程中,將新加載的數據追加到頁面的末尾,并且隱藏上拉加載的動畫效果。
在實際開發中,我們可以根據具體的需求來實現上下拉刷新的效果,包括動畫效果、數據加載方式等。上面的示例只是一個簡單的實現思路,具體的實現方式可以根據項目的需求來進行調整和優化。
. 將徹底屏蔽鼠標右鍵
<table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body> 取消選取、防止復制
3. 不準粘貼
4. 防止復制
5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址欄前換成自己的圖標
6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夾中顯示出你的圖標
7. <input style="ime-mode:-Disabled"> 關閉輸入法
8. 永遠都會帶著框架
<script language="javascript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm為框架網頁
// --></script>
9. 防止被人frame
<SCRIPT LANGUAGE=javascript><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>
10. 網頁將不能被另存為
<noscript><iframe src=*.html></iframe></noscript>
11. <input type=button value=查看網頁源代碼
onclick="window.location = `view-source:`+ http://www.51js.com/`";>
12.刪除時確認
<a href=`javascript:if(confirm("確實要刪除嗎?"location="boos.asp?&areyou=刪除&page=1"`>刪
除</a>
13. 取得控件的絕對位置
//javascript
<script language="javascript">
function getIE(E){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"/nleft="+l);
}
</script>
//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>
14. 光標是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart(`character`,e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123">
15. 判斷上一頁的來源
javascript:
document.referrer
16. 最小化、最大化、關閉窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" value="Close"></OBJECT>
<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=關閉 onclick=hh3.Click()>
本例適用于IE
17.屏蔽功能鍵Shift,Alt,Ctrl
<script>
function look(){
if(event.shiftKey)
alert("禁止按Shift鍵!"; //可以換成ALT CTRL
}
document.onkeydown=look;
</script>
18. 網頁不會被緩存
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
19.怎樣讓表單沒有凹凸感?
<input type=text style="border:1 solid #000000">
或
<input type=text style="border-left:none; border-right:none; border-top:none; border-bottom:
1 solid #000000"></textarea>
20.<div><span>&<layer>的區別?
<div>(division)用來定義大段的頁面元素,會產生轉行
<span>用來定義同一行內的元素,跟<div>的唯一區別是不產生轉行
<layer>是ns的標記,ie不支持,相當于<div>
21.讓彈出窗口總是在最上面:
<body>
22.不要滾動條?
讓豎條沒有:
<body style=`overflow:-Scroll;overflow-y:hidden`>
</body>
讓橫條沒有:
<body style=`overflow:-Scroll;overflow-x:hidden`>
</body>
兩個都去掉?更簡單了
<body scroll="no">
</body>
23.怎樣去掉圖片鏈接點擊后,圖片周圍的虛線?
<a href="#"><img src="logo.jpg" border=0></a>
24.電子郵件處理提交表單
<form name="form1" method="post" action="mailto:****@***.com" enctype="text/plain">
<input type=submit>
</form>
25.在打開的子窗口刷新父窗口的代碼里如何寫?
window.opener.location.reload()
26.如何設定打開頁面的大小
<body>
打開頁面的位置<body>
27.在頁面中如何加入不是滿鋪的背景圖片,拉動頁面時背景圖不動
<style>
body
{background-image:url(logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</style>
內容首發于工粽號:程序員大澈,每日分享一段優質代碼片段,歡迎關注和投稿!
大家好,我是大澈!
本文約 700+ 字,整篇閱讀約需 1 分鐘。
今天分享一段優質 JS 代碼片段,實現在關閉或刷新瀏覽器窗口時做提示。
老規矩,先閱讀代碼片段并思考,再看代碼解析再思考,最后評論區留下你的見解!
window.addEventListener('beforeunload', function (event) {
const confirmationMessage = "確定要離開此頁面嗎?您所做的更改可能不會被保存。";
event.preventDefault();
event.returnValue = confirmationMessage;
return confirmationMessage;
});
分享原因
這段代碼展示了如何使用 JavaScript 的 beforeunload 事件來提示用戶在關閉或刷新瀏覽器窗口時確認操作,從而避免意外的數據丟失或操作中斷。
這種方法適用于 未保存的數據(如填寫表單或編輯文檔)、長時間操作(如文件上傳或大規模數據處理)、敏感操作(如在線交易或重要系統設置)等場景。
項目中用到時直接CV,但對于用戶體驗而言,不宜過度使用。
代碼解析
1. window.addEventListener('beforeunload', function (event) { ... })
為 window 對象添加一個 beforeunload 事件監聽器。
當用戶試圖關閉或刷新瀏覽器窗口時,此事件將被觸發。
2. event.preventDefault();
調用 event.preventDefault() 方法來阻止默認的瀏覽器行為。
在大多數情況下,這一步是冗余的,因為 beforeunload 事件默認不會執行任何動作,但這可以確保兼容性。
3. event.returnValue = confirmationMessage;
設置 event.returnValue 為 confirmationMessage 提示信息。
這是確保在大多數現代瀏覽器中顯示確認對話框的關鍵步驟。
4. return confirmationMessage;
返回 confirmationMessage 提示信息。
在一些舊版瀏覽器中,這一步是必要的,以確保顯示提示信息。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。