要在 Flask 中實現 Spinner 的動態加載效果,你可以使用 JavaScript 和 AJAX 技術。這里是一個簡單的示例,展示了如何在 Flask 應用中實現 Spinner 的動態加載效果:
from flask import Flask, render_template, jsonify
import time
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/load_data')
def load_data():
# 模擬數據加載過程
time.sleep(3)
data = "數據已加載完成!"
return jsonify({'data': data})
if __name__ == '__main__':
app.run(debug=True)
templates
的文件夾,并在其中創建一個名為 index.html
的文件,內容如下:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spinner 動態加載示例</title>
<style>
.spinner {
display: none;
margin: 20px auto;
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
border-radius: 50%;
width: 50px;
height: 50px;
animation: spin 2s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
</style>
</head>
<body>
<h1>Spinner 動態加載示例</h1>
<div class="spinner"></div>
<button id="loadDataBtn">加載數據</button>
<div id="dataContainer"></div>
<script>
document.getElementById("loadDataBtn").addEventListener("click", function() {
// 顯示 Spinner
document.querySelector(".spinner").style.display = "block";
// 發送 AJAX 請求加載數據
fetch("/load_data")
.then(response => response.json())
.then(data => {
// 隱藏 Spinner
document.querySelector(".spinner").style.display = "none";
// 顯示加載的數據
document.getElementById("dataContainer").innerHTML = data.data;
})
.catch(error => {
console.error("Error:", error);
});
});
</script>
</body>
</html>
在這個示例中,我們創建了一個簡單的 Flask 應用,包含一個名為 load_data
的路由,用于模擬數據加載過程。在 index.html
文件中,我們使用 CSS 創建了一個簡單的 Spinner,并使用 JavaScript 和 AJAX 技術實現了動態加載效果。當用戶點擊 “加載數據” 按鈕時,Spinner 將顯示,并發送 AJAX 請求加載數據。數據加載完成后,Spinner 將隱藏,并顯示加載的數據。