如何在您的网站上添加可点击的会员积分
我正在考虑为我的投资组合添加一些有趣且互动性强的内容,而一个可点击的计数器,访问者可以使用它来留下“我来过这里”的消息,这似乎是一个好主意。它简单、引人入胜,是让您的网站感觉更个性化的好方法。如果这听起来像您想创建的东西,本指南将逐步指导您完成它。
我们将逐步介绍如何构建一个功能齐全的视图计数器。您无需成为经验丰富的开发人员即可跟进。让我们开始吧!
1. HTML:构建结构
首先,我们将设置视图计数器的结构。虽然您可以使用任何您喜欢的图标或按钮样式,但在本教程中我将使用眼睛图标。以下是 HTML 代码:
2. CSS:设置计数器的样式
让我们添加一些简单的样式,使计数器看起来干净且居中。以下是 CSS:
.eye-counter { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .eye-button { background: none; border: none; cursor: pointer; display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border-radius: 20px; background-color: rgba(255, 255, 255, 0.1); color: #333; transition: transform 0.3s ease, background-color 0.3s ease; } .eye-button:hover { transform: scale(1.05); background-color: rgba(255, 255, 255, 0.2); } .eye-icon { fill: currentColor; } .view-count { font-size: 1rem; font-weight: bold; }
此 CSS 将计数器置于页面中央,并为按钮添加一些悬停效果。
3. 使用 JavaScript 让它变得生动
现在轮到主要事件了,让计数器发挥作用。
以下是 JavaScript,为了简单起见,将其分解为几个函数:
// Run code after the page has loaded document.addEventListener('DOMContentLoaded', async () => { const eyeButton = document.querySelector('.eye-button'); const viewCount = document.querySelector('.view-count'); const BIN_URL = 'https://api.jsonbin.io/v3/b/YOUR_BIN_ID'; // Replace with your bin URL const API_KEY = 'YOUR_API_KEY'; // Replace with your API key // Function to get the visitor's IP address async function getVisitorIP() { try { const response = await fetch('https://api.ipify.org?format=json'); const data = await response.json(); return data.ip; } catch (error) { console.error('Error fetching IP:', error); return null; } } // Function to fetch data from JSONBin async function fetchBinData() { const response = await fetch(BIN_URL, { headers: { 'X-Master-Key': API_KEY } }); const result = await response.json(); return result.record; } // Function to update data in JSONBin async function updateBinData(data) { await fetch(BIN_URL, { method: 'PUT', headers: { 'Content-Type': 'application/json', 'X-Master-Key': API_KEY }, body: JSON.stringify(data) }); } // Main logic const visitorIP = await getVisitorIP(); if (!visitorIP) { eyeButton.classList.add('disabled'); return; } const binData = await fetchBinData(); viewCount.textContent = binData.totalClicks; if (binData.clickedIPs.includes(visitorIP)) { eyeButton.classList.add('disabled'); } eyeButton.addEventListener('click', async () => { if (!eyeButton.classList.contains('disabled')) { binData.totalClicks += 1; binData.clickedIPs.push(visitorIP); await updateBinData(binData); viewCount.textContent = binData.totalClicks; eyeButton.classList.add('disabled'); } }); });
具体分析:
4.设置 JSONBin
如果你以前从未使用过 JSONBin,请不要担心!请按照以下步骤操作:
{ "totalClicks": 0, "clickedIPs": [] }
就这样!您已经创建了一个有趣且互动的浏览计数器。这是吸引访客并为您的网站增添个性的简单方法。
欢迎随时访问我的投资组合来查看其实际运作情况。