.post {
background: white;
border-radius: 12px;
padding: 15px;
margin-bottom: 15px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.post-header {
display: flex;
align-items: center;
margin-bottom: 12px;
}
.avatar {
width: 40px;
height: 40px;
border-radius: 50%;
margin-right: 10px;
object-fit: cover;
}
.post-info {
flex: 1;
}
.username {
font-weight: 500;
font-size: 16px;
}
.post-time {
font-size: 12px;
color: #999;
margin-top: 2px;
}
.post-content {
font-size: 15px;
margin-bottom: 12px;
word-break: break-word;
}
.post-images {
display: grid;
grid-gap: 5px;
}
/* 不同图片数量的布局 */
.single-images {
grid-template-columns: 1fr;
}
.single-images{width:60%; float:left}
.two-images {
grid-template-columns: 1fr 1fr;
}
.three-images {
grid-template-columns: 1fr 1fr 1fr;
}
.four-images {
grid-template-columns: 1fr 1fr;
}
.five-images {
grid-template-columns: 1fr 1fr 1fr;
}
.six-images {
grid-template-columns: 1fr 1fr 1fr;
}
.seven-images {
grid-template-columns: 1fr 1fr 1fr;
}
.eight-images {
grid-template-columns: 1fr 1fr 1fr;
}
.nine-images {
grid-template-columns: 1fr 1fr 1fr;
}
.image-item {
position: relative;
width: 100%;
border-radius: 4px;
overflow: hidden;
cursor: pointer;
background-color: #f5f5f5;
}
.image-item::before {
content: "";
display: block;
padding-top: 100%;
}
.lazy-image {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0;
transition: opacity 0.3s ease;
}
.lazy-image.loaded {
opacity: 1;
}
.image-more {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.3);
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
font-weight: bold;
}
/* 图片查看器样式 */
.image-viewer {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.9);
z-index: 1000;
display: none;
opacity: 0;
transition: opacity 0.3s ease;
}
.image-viewer.show {
display: block;
opacity: 1;
}
.image-viewer-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.viewer-image {
max-width: 94%;
max-height: 100%;
transform: scale(0.95);
transition: transform 0.3s ease;
}
.viewer-image.active {
transform: scale(1);
}
.viewer-close {
position: absolute;
top: 15px;
right: 15px;
color: white;
font-size: 30px;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 1001;
}
.viewer-index {
position: absolute;
top: 20px;
left: 0;
width: 100%;
text-align: center;
color: white;
font-size: 16px;
z-index: 1001;
}
.viewer-nav {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 40px;
height: 40px;
background-color: rgba(255, 255, 255, 0.2);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 24px;
cursor: pointer;
z-index: 1001;
opacity: 0;
transition: opacity 0.3s ease;
}
.image-viewer-container:hover .viewer-nav {
opacity: 1;
}
.viewer-prev {
left: 15px;
}
.viewer-next {
right: 15px;
}
/* 加载动画 */
.loading-spinner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 30px;
height: 30px;
border: 3px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
border-top-color: white;
animation: spin 1s ease-in-out infinite;
}
@keyframes spin {
to { transform: translate(-50%, -50%) rotate(360deg); }
}