如何在您的网站上添加可点击的会员积分
我正在考虑为我的投资组合添加一些有趣且互动性强的内容,而一个可点击的计数器,访问者可以使用它来留下“我来过这里”的消息,这似乎是一个好主意。它简单、引人入胜,是让您的网站感觉更个性化的好方法。如果这听起来像您想创建的东西,本指南将逐步指导您完成它。
我们将逐步介绍如何构建一个功能齐全的视图计数器。您无需成为经验丰富的开发人员即可跟进。让我们开始吧!
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": []
}就这样!您已经创建了一个有趣且互动的浏览计数器。这是吸引访客并为您的网站增添个性的简单方法。
欢迎随时访问我的投资组合来查看其实际运作情况。