|
@@ -0,0 +1,432 @@
|
|
|
|
+/* 基础样式 */
|
|
|
|
+* {
|
|
|
|
+ margin: 0;
|
|
|
|
+ padding: 0;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+body {
|
|
|
|
+ background: linear-gradient(135deg, #fff8f0, #fff0e6);
|
|
|
|
+ color: #5a3e36;
|
|
|
|
+ line-height: 1.6;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.container {
|
|
|
|
+ max-width: 480px;
|
|
|
|
+ margin: 0 auto;
|
|
|
|
+ background: white;
|
|
|
|
+ min-height: 100vh;
|
|
|
|
+ position: relative;
|
|
|
|
+ box-shadow: 0 0 40px rgba(255, 152, 0, 0.1);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 头部样式 - 橙色系 */
|
|
|
|
+.header {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ padding: 20px;
|
|
|
|
+ background: linear-gradient(to right, #ff9800, #ff5722);
|
|
|
|
+ color: white;
|
|
|
|
+ position: sticky;
|
|
|
|
+ top: 0;
|
|
|
|
+ z-index: 100;
|
|
|
|
+ box-shadow: 0 4px 12px rgba(255, 87, 34, 0.2);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.back-btn {
|
|
|
|
+ width: 40px;
|
|
|
|
+ height: 40px;
|
|
|
|
+ border-radius: 50%;
|
|
|
|
+ background: rgba(255, 255, 255, 0.2);
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ font-size: 18px;
|
|
|
|
+ color: white;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ background: rgba(255, 255, 255, 0.3);
|
|
|
|
+ transform: scale(1.05);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.header-title {
|
|
|
|
+ font-weight: 600;
|
|
|
|
+ font-size: 20px;
|
|
|
|
+ letter-spacing: 1px;
|
|
|
|
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.action-icons {
|
|
|
|
+ display: flex;
|
|
|
|
+ gap: 20px;
|
|
|
|
+
|
|
|
|
+ i {
|
|
|
|
+ font-size: 20px;
|
|
|
|
+ color: white;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ transition: all 0.3s;
|
|
|
|
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ transform: scale(1.15);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 图片展示区域 */
|
|
|
|
+.image-showcase {
|
|
|
|
+ position: relative;
|
|
|
|
+ height: 380px;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ background: #333;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 图片展示区域 */
|
|
|
|
+.image-showcase {
|
|
|
|
+ position: relative;
|
|
|
|
+ height: 380px;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ background: #333;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+swiper-container {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+
|
|
|
|
+ // Swiper 11 自定义样式
|
|
|
|
+ --swiper-pagination-color: #ff9800;
|
|
|
|
+ --swiper-pagination-bullet-inactive-color: rgba(255, 255, 255, 0.5);
|
|
|
|
+ --swiper-pagination-bullet-inactive-opacity: 1;
|
|
|
|
+ --swiper-pagination-bullet-size: 10px;
|
|
|
|
+ --swiper-pagination-bullet-horizontal-gap: 6px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+swiper-slide {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+
|
|
|
|
+ img {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ object-fit: cover;
|
|
|
|
+ transition: transform 0.5s;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.swiper-pagination {
|
|
|
|
+ bottom: 20px !important;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.swiper-pagination-bullet {
|
|
|
|
+ width: 10px;
|
|
|
|
+ height: 10px;
|
|
|
|
+ background: rgba(255, 255, 255, 0.5);
|
|
|
|
+ opacity: 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.swiper-pagination-bullet-active {
|
|
|
|
+ background: #ff9800;
|
|
|
|
+ width: 24px;
|
|
|
|
+ border-radius: 6px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.image-actions {
|
|
|
|
+ position: absolute;
|
|
|
|
+ bottom: 20px;
|
|
|
|
+ right: 20px;
|
|
|
|
+ display: flex;
|
|
|
|
+ gap: 15px;
|
|
|
|
+ z-index: 10;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.action-btn {
|
|
|
|
+ width: 40px;
|
|
|
|
+ height: 40px;
|
|
|
|
+ border-radius: 50%;
|
|
|
|
+ background: rgba(255, 152, 0, 0.8);
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ color: white;
|
|
|
|
+ font-size: 18px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ transition: all 0.3s;
|
|
|
|
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ background: rgba(255, 87, 34, 0.9);
|
|
|
|
+ transform: translateY(-3px);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 图片信息区域 */
|
|
|
|
+.image-info {
|
|
|
|
+ padding: 25px;
|
|
|
|
+ background: white;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.image-title {
|
|
|
|
+ font-size: 24px;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ color: #ff5722;
|
|
|
|
+ margin-bottom: 15px;
|
|
|
|
+ position: relative;
|
|
|
|
+ display: inline-block;
|
|
|
|
+
|
|
|
|
+ &:after {
|
|
|
|
+ content: '';
|
|
|
|
+ position: absolute;
|
|
|
|
+ bottom: -5px;
|
|
|
|
+ left: 0;
|
|
|
|
+ width: 50px;
|
|
|
|
+ height: 3px;
|
|
|
|
+ background: #ff9800;
|
|
|
|
+ border-radius: 3px;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.image-meta {
|
|
|
|
+ display: flex;
|
|
|
|
+ gap: 20px;
|
|
|
|
+ margin-bottom: 25px;
|
|
|
|
+ font-size: 15px;
|
|
|
|
+ color: #7d5d54;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.meta-item {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ gap: 8px;
|
|
|
|
+
|
|
|
|
+ i {
|
|
|
|
+ color: #ff9800;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.image-stats {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ background: #fff8f0;
|
|
|
|
+ border-radius: 15px;
|
|
|
|
+ padding: 20px;
|
|
|
|
+ margin: 25px 0;
|
|
|
|
+ box-shadow: 0 4px 15px rgba(255, 152, 0, 0.1);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.stat-item {
|
|
|
|
+ text-align: center;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.stat-value {
|
|
|
|
+ font-size: 24px;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ color: #ff5722;
|
|
|
|
+ margin-bottom: 5px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.stat-label {
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ color: #7d5d54;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.purchase-section {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ margin-top: 20px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.price {
|
|
|
|
+ font-size: 28px;
|
|
|
|
+ font-weight: 800;
|
|
|
|
+ color: #ff5722;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.buy-btn {
|
|
|
|
+ background: linear-gradient(135deg, #ff9800, #ff5722);
|
|
|
|
+ color: white;
|
|
|
|
+ border: none;
|
|
|
|
+ padding: 15px 35px;
|
|
|
|
+ border-radius: 30px;
|
|
|
|
+ font-size: 18px;
|
|
|
|
+ font-weight: 600;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ gap: 10px;
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
+ box-shadow: 0 6px 20px rgba(255, 87, 34, 0.3);
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ transform: translateY(-3px);
|
|
|
|
+ box-shadow: 0 8px 25px rgba(255, 87, 34, 0.4);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ &.purchased {
|
|
|
|
+ background: linear-gradient(135deg, #4CAF50, #66BB6A);
|
|
|
|
+ box-shadow: 0 6px 20px rgba(76, 175, 80, 0.3);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 摄影师信息 */
|
|
|
|
+.photographer {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ gap: 15px;
|
|
|
|
+ padding: 20px;
|
|
|
|
+ background: #fffaf5;
|
|
|
|
+ border-top: 1px solid #ffedd8;
|
|
|
|
+ margin-top: 30px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.avatar {
|
|
|
|
+ width: 60px;
|
|
|
|
+ height: 60px;
|
|
|
|
+ border-radius: 50%;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ border: 3px solid #ff9800;
|
|
|
|
+
|
|
|
|
+ img {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ object-fit: cover;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.photographer-info h3 {
|
|
|
|
+ font-size: 18px;
|
|
|
|
+ color: #ff5722;
|
|
|
|
+ margin-bottom: 5px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.photographer-info p {
|
|
|
|
+ color: #7d5d54;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.follow-btn {
|
|
|
|
+ background: transparent;
|
|
|
|
+ border: 2px solid #ff9800;
|
|
|
|
+ color: #ff5722;
|
|
|
|
+ padding: 8px 15px;
|
|
|
|
+ border-radius: 20px;
|
|
|
|
+ font-weight: 600;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ transition: all 0.3s;
|
|
|
|
+ margin-left: auto;
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ background: #ff9800;
|
|
|
|
+ color: white;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 相关推荐 */
|
|
|
|
+.related-section {
|
|
|
|
+ padding: 0 20px 30px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.section-title {
|
|
|
|
+ font-size: 20px;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
+ color: #ff5722;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ gap: 10px;
|
|
|
|
+
|
|
|
|
+ &:before {
|
|
|
|
+ content: '';
|
|
|
|
+ width: 6px;
|
|
|
|
+ height: 24px;
|
|
|
|
+ background: #ff9800;
|
|
|
|
+ border-radius: 3px;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.related-items {
|
|
|
|
+ display: grid;
|
|
|
|
+ grid-template-columns: repeat(2, 1fr);
|
|
|
|
+ gap: 20px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.related-item {
|
|
|
|
+ border-radius: 15px;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ box-shadow: 0 8px 20px rgba(255, 152, 0, 0.15);
|
|
|
|
+ transition: all 0.3s;
|
|
|
|
+ background: white;
|
|
|
|
+
|
|
|
|
+ &:hover {
|
|
|
|
+ transform: translateY(-8px);
|
|
|
|
+ box-shadow: 0 12px 25px rgba(255, 152, 0, 0.25);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.related-img {
|
|
|
|
+ height: 140px;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+
|
|
|
|
+ img {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+ object-fit: cover;
|
|
|
|
+ transition: transform 0.5s;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.related-item:hover .related-img img {
|
|
|
|
+ transform: scale(1.1);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.related-info {
|
|
|
|
+ padding: 15px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.related-name {
|
|
|
|
+ font-weight: 600;
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
+ color: #5a3e36;
|
|
|
|
+ white-space: nowrap;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.related-price {
|
|
|
|
+ color: #ff5722;
|
|
|
|
+ font-weight: 700;
|
|
|
|
+ font-size: 18px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 动画效果 */
|
|
|
|
+@keyframes pulse {
|
|
|
|
+ 0% { transform: scale(1); }
|
|
|
|
+ 50% { transform: scale(1.05); }
|
|
|
|
+ 100% { transform: scale(1); }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.pulse {
|
|
|
|
+ animation: pulse 0.5s ease-in-out;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 响应式调整 */
|
|
|
|
+@media (max-width: 480px) {
|
|
|
|
+ .image-showcase {
|
|
|
|
+ height: 340px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .image-info {
|
|
|
|
+ padding: 20px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .related-items {
|
|
|
|
+ grid-template-columns: 1fr;
|
|
|
|
+ }
|
|
|
|
+}
|