📮实现头像按钮获取全部数据(未完成)
This commit is contained in:
parent
75942db125
commit
9dd43b1ac6
@ -9,6 +9,15 @@
|
||||
<body>
|
||||
<div id="articles-container" class="articles-container"></div>
|
||||
<button id="load-more-btn">显示更多</button>
|
||||
|
||||
<!-- 模态框结构 -->
|
||||
<div id="modal" class="modal">
|
||||
<div class="modal-content">
|
||||
<img id="modal-author-avatar" src="modal-author-avatar" alt="">
|
||||
<a id="modal-author-name-link"></a>
|
||||
<div id="modal-articles-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="./static/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 951 B |
@ -7,6 +7,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
fetch('./all.json')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
allArticles = data.article_data;
|
||||
const articles = data.article_data.slice(start, start + batchSize);
|
||||
articles.forEach(article => {
|
||||
const card = document.createElement('div');
|
||||
@ -29,11 +30,12 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
author.appendChild(document.createTextNode(article.author));
|
||||
card.appendChild(author);
|
||||
|
||||
author.onclick = () => {
|
||||
showAuthorArticles(article.author, article.avatar, article.link);
|
||||
};
|
||||
|
||||
const date = document.createElement('div');
|
||||
date.className = 'card-date';
|
||||
const dateImg = document.createElement('img');
|
||||
dateImg.src = './static/img/rili.png'; // 替换为实际的图标路径
|
||||
date.appendChild(dateImg);
|
||||
date.appendChild(document.createTextNode(article.created.substring(0, 10)));
|
||||
card.appendChild(date);
|
||||
|
||||
@ -54,9 +56,52 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
});
|
||||
}
|
||||
|
||||
// 显示作者文章的函数
|
||||
function showAuthorArticles(author, avatar, link) {
|
||||
const modal = document.getElementById('modal');
|
||||
const modalArticlesContainer = document.getElementById('modal-articles-container');
|
||||
const modalAuthorAvatar = document.getElementById('modal-author-avatar');
|
||||
const modalAuthorNameLink = document.getElementById('modal-author-name-link');
|
||||
|
||||
modalArticlesContainer.innerHTML = ''; // 清空之前的内容
|
||||
modalAuthorAvatar.src = avatar;
|
||||
modalAuthorNameLink.innerText = author;
|
||||
modalAuthorNameLink.href = new URL(link).origin;
|
||||
|
||||
const authorArticles = allArticles.filter(article => article.author === author);
|
||||
authorArticles.forEach(article => {
|
||||
const articleDiv = document.createElement('div');
|
||||
articleDiv.className = 'modal-article';
|
||||
|
||||
const title = document.createElement('a');
|
||||
title.className = 'modal-article-title';
|
||||
title.innerText = article.title;
|
||||
title.href = article.link;
|
||||
title.target = '_blank';
|
||||
articleDiv.appendChild(title);
|
||||
|
||||
const date = document.createElement('div');
|
||||
date.className = 'modal-article-date';
|
||||
date.innerText = article.created.substring(0, 10);
|
||||
articleDiv.appendChild(date);
|
||||
|
||||
modalArticlesContainer.appendChild(articleDiv);
|
||||
});
|
||||
|
||||
modal.style.display = 'block';
|
||||
}
|
||||
|
||||
// 初始加载
|
||||
loadMoreArticles();
|
||||
|
||||
// 加载更多按钮点击事件
|
||||
document.getElementById('load-more-btn').addEventListener('click', loadMoreArticles);
|
||||
|
||||
// 点击遮罩层关闭模态框
|
||||
window.onclick = function(event) {
|
||||
const modal = document.getElementById('modal');
|
||||
if (event.target === modal) {
|
||||
modal.style.display = 'none';
|
||||
}
|
||||
};
|
||||
});
|
||||
|
@ -10,6 +10,72 @@ body {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* 模态框样式 */
|
||||
.modal {
|
||||
display: none; /* 默认隐藏 */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
backdrop-filter: blur(10px);
|
||||
-webkit-backdrop-filter: blur(10px); /* 模糊背景 */
|
||||
background-color: rgba(255, 255, 255, 0.5); /* 背景遮罩 */
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
background-color: #fefefe;
|
||||
margin: 50% auto;
|
||||
padding: 20px;
|
||||
border: 1px solid #888;
|
||||
width: 320px;
|
||||
max-width: 600px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 400px) {
|
||||
.modal-content {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#modal-author-avatar {
|
||||
display: block;
|
||||
margin: 0 auto 10px; /* 垂直方向上自动居中,底部留出间距 */
|
||||
border-radius: 50%; /* 圆形图标 */
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
#modal-author-name-link {
|
||||
display: block;
|
||||
text-align: center;
|
||||
font-size: 15px;
|
||||
margin: 20px 0;
|
||||
color: #007BFF;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#modal-author-name-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.modal-content hr {
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
#modal-articles-container {
|
||||
border-top:#007BFF solid 1px;
|
||||
margin-top: 30px;
|
||||
padding-top: 30px;
|
||||
}
|
||||
|
||||
/* 其他样式... */
|
||||
|
||||
.articles-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
||||
@ -22,7 +88,7 @@ body {
|
||||
font-size: 15px;
|
||||
background-color: white;
|
||||
margin-top: 20px;
|
||||
width: 50%;
|
||||
width: 200px;
|
||||
border-radius: 20px;
|
||||
padding: 3px;
|
||||
border:#b5b5b5 solid 1px;
|
||||
@ -31,7 +97,7 @@ body {
|
||||
|
||||
#load-more-btn:hover {
|
||||
background-color: #0088ff;
|
||||
width: 52%;
|
||||
width: 300px;
|
||||
color: white;
|
||||
|
||||
}
|
||||
@ -40,7 +106,7 @@ body {
|
||||
background-color: white;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||
padding: 15px;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
@ -51,6 +117,7 @@ body {
|
||||
|
||||
.card-title {
|
||||
font-size: 17px;
|
||||
cursor: pointer;
|
||||
margin-bottom: 10px;
|
||||
line-height: 1.5;
|
||||
max-height: 4.5em; /* 三行高度 */
|
||||
@ -72,20 +139,20 @@ body {
|
||||
.card-date {
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
color: #888;
|
||||
background-color: white; /* 白色背景 */
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 阴影 */
|
||||
border-radius: 15px; /* 圆角 */
|
||||
color: #313131;
|
||||
padding: 5px; /* 内边距 */
|
||||
transition: box-shadow 0.2s; /* 过渡效果 */
|
||||
}
|
||||
|
||||
.card-author:hover,
|
||||
.card-date:hover {
|
||||
.card-author:hover {
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* 鼠标悬停时加深阴影 */
|
||||
}
|
||||
|
||||
.card-author {
|
||||
cursor: pointer;
|
||||
background-color: white; /* 白色背景 */
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* 阴影 */
|
||||
border-radius: 15px; /* 圆角 */
|
||||
display: flex;
|
||||
padding-right: 10px;
|
||||
width: fit-content;
|
||||
@ -102,26 +169,20 @@ body {
|
||||
.card-date {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
bottom: 15px;
|
||||
right: 15px;
|
||||
bottom: 10px;
|
||||
cursor: default;
|
||||
right: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.card-date img {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
border-radius: 20%;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.card-bg {
|
||||
z-index: 0;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
bottom: -30px;
|
||||
right: -30px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
bottom: -15px;
|
||||
right: -14px;
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user