记录一次难忘的云南之旅,探索当地美食、人文风情和自然风光

云南之旅:寻觅彩云之南的味道
4 mins

这是一次充满惊喜的云南之旅,我们走访了大理、丽江和香格里拉,品尝了各种当地特色美食,感受了独特的人文风情。

大理古城:洱海边的慢生活h2

NOTE

大理古城,一个让时光放慢脚步的地方。在这里,每一条街巷都诉说着白族的历史文化。

美食寻味h3

大理特色美食

必尝美食清单:

  1. 大理乳扇
  2. 白族八大碗
  3. 洱海弓鱼
  4. 蝶豆花米线

丽江古城:艳遇之都的另一面h2

丽江不仅有浪漫的艳遇文化,更有深厚的纳西族传统文化底蕴。

IMPORTANT

在丽江,一定要去看纳西古乐表演,感受这座千年古城的文化魅力。

特色体验h3

  • 纳西古乐欣赏
  • 束河古镇漫步
  • 玉龙雪山观光
  • 大研古镇夜景

香格里拉:离天堂最近的地方h2

TIP

记得准备红景天,适应高原环境。香格里拉的美需要一个健康的身体去感受。

行程安排h3

香格里拉行程建议
  1. 松赞林寺朝拜
  2. 独克宗古城探索
  3. 纳帕海观景
  4. 普达措国家公园徒步

实用建议h2

CAUTION

高原地区紫外线强,记得防晒!同时补充足够的水分。

旅行路线图

装备准备h2

  1. 防晒用品
    • 防晒霜 SPF50+
    • 太阳镜
    • 遮阳帽
  2. 高原适应
    • 红景天
    • 葡萄糖
    • 氧气瓶(备用)
  3. 摄影器材
    • 广角镜头
    • 三脚架
    • 备用电池

这次云南之旅,不仅让我们领略了绝美的自然风光,更深入体验了当地的民族文化。希望这篇游记能为准备去云南的朋友提供一些参考。

The following files are compatible with this document:

  • src/pages/photos/index.astro - photos page.
  • src/components/photos - timeline and polaroid gallery components.
  • src/config.ts - page config (PHOTOS_CONFIG) and PhotosList data.
  • src/types.ts - Type definitions for PhotosConfig, PhotoData, and Photo.

Photos Page Configh3

Configure page texts in src/config.ts:

config.ts
export const PHOTOS_CONFIG: PhotosConfig = {
title: 'Photos',
description: 'Here I will record some photos taken in daily life.',
introduce: 'Here I will record some photos taken in daily life.',
}
PropertyDescription
titleTitle shown on the page and browser tab.
descriptionThe metadata description in the head.
introduceIntro text displayed under the title.

Data Source: PhotosListh3

The page reads data from PhotosList in src/config.ts. Each item in the array represents one timeline entry (a day, a trip, an album, etc.).

config.ts
export const PhotosList: PhotoData[] = [
{
title: "Friend's Adorable Cat",
icon: { type: 'emoji', value: '🌠' },
description: 'So kawaii (*^ω^*)',
date: '2025-06-21',
travel: '',
photos: [
{ src: '/photos/cat1.webp', alt: "Friend's Adorable Cat", width: 1080, height: 810, variant: '4x3' },
{ src: '/photos/cat2.webp', alt: "Friend's Adorable Cat", width: 1080, height: 810, variant: '4x3' },
{ src: '/photos/cat3.webp', alt: "Friend's Adorable Cat", width: 1080, height: 810, variant: '4x3' },
],
},
]

PhotoData fieldsh4

PropertyDescription
titleTitle of the timeline item.
iconIcon displayed on the left timeline axis. See the table below for supported formats.
descriptionOptional text shown below the title.
dateDisplay date string (free format).
travelOptional additional label for travel/route info.
photosArray of Photo objects rendered as a polaroid stack and openable in a modal gallery.
Icon objecth5

TimelineIconType supports: emoji | icon | color | number | image

PropertyDescription
typeOne of the supported types above.
valueEmoji (e.g. ’🌅’), icon name, color class, number text, or image URL/path.
fallbackOptional fallback text when icon cannot be shown.

Photo fieldsh4

PropertyDescription
srcImage path (recommend using files under /public/photos).
altImage alt text.
widthImage intrinsic width.
heightImage intrinsic height.
variantPolaroid layout variant: 1x14x54x3``9x16.
locationOptional. Shooting location.
dateOptional. Photo shooting date.
cameraOptional. Shooting device.
descriptionOptional. Additional caption for the single image (used in modal).
TIP

Variants control the polaroid aspect: 1x1 (square), 4x5 (classic polaroid), 4x3 (landscape), 9x16 (portrait).

How it rendersh3

  • Timeline and icons are rendered by src/components/photos/PhotoTimeline.astro.
  • Polaroid stack and modal gallery are handled by PolaroidStack / PhotoGalleryModal.
  • Clicking any photo opens a modal gallery. Hovering reveals a subtle spread animation.
  • Optimize images (WebP/AVIF) and provide correct width/height to avoid layout shift.
  • Keep 3–6 photos per timeline item for a balanced stack effect.
  • Prefer consistent variants within one item for a neat layout.