返回 oh-my-ppt
preview.html
根目录 / resources / styles / swiss-grid / preview.html
1 <!DOCTYPE html>
2 <html lang="zh-CN">
3 <head>
4 <meta charset="UTF-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 <title>瑞士网格 · Swiss Grid</title>
7 <style>
8 * { box-sizing: border-box; margin: 0; padding: 0; }
9 html, body { width: 100%; height: 100%; overflow: hidden; background: #0f1117; display: grid; place-items: center; }
10 body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif; }
11
12 .slide {
13 position: relative;
14 width: min(100vw, calc(100vh * 16 / 9));
15 aspect-ratio: 16 / 9;
16 overflow: hidden;
17 background: #ffffff;
18 box-shadow: 0 0 0 1px rgba(255,255,255,.08);
19 }
20
21 /* Visible grid overlay */
22 .grid-overlay {
23 position: absolute;
24 inset: 0;
25 z-index: 1;
26 background:
27 repeating-linear-gradient(90deg,
28 transparent,
29 transparent calc(100%/12 - 0.5px),
30 #e2e8f0 calc(100%/12 - 0.5px),
31 #e2e8f0 calc(100%/12 + 0.5px),
32 transparent calc(100%/12 + 0.5px)
33 ),
34 repeating-linear-gradient(0deg,
35 transparent,
36 transparent calc(100%/8 - 0.5px),
37 #e2e8f0 calc(100%/8 - 0.5px),
38 #e2e8f0 calc(100%/8 + 0.5px),
39 transparent calc(100%/8 + 0.5px)
40 );
41 opacity: 0.35;
42 pointer-events: none;
43 }
44
45 /* Content strictly on grid */
46 .content {
47 position: absolute;
48 inset: 0;
49 z-index: 2;
50 padding: clamp(14px, 2.5vw, 36px);
51 display: grid;
52 grid-template-columns: repeat(12, 1fr);
53 grid-template-rows: repeat(8, 1fr);
54 gap: clamp(4px, 0.5vw, 8px);
55 }
56
57 /* Top-left: red square + eyebrow */
58 .red-square {
59 grid-column: 1 / 3;
60 grid-row: 1 / 3;
61 background: #ef4444;
62 display: flex;
63 align-items: center;
64 justify-content: center;
65 }
66 .red-square span {
67 font-size: clamp(5px, 0.6vw, 8px);
68 font-weight: 900;
69 letter-spacing: 0.15em;
70 text-transform: uppercase;
71 color: #ffffff;
72 }
73
74 /* Title area */
75 .title-area {
76 grid-column: 3 / 9;
77 grid-row: 1 / 4;
78 display: flex;
79 flex-direction: column;
80 justify-content: flex-end;
81 padding-bottom: clamp(4px, 0.6vw, 8px);
82 }
83 .eyebrow {
84 font-size: clamp(6px, 0.75vw, 10px);
85 font-weight: 800;
86 letter-spacing: 0.18em;
87 text-transform: uppercase;
88 color: #ef4444;
89 margin-bottom: clamp(3px, 0.4vw, 6px);
90 }
91 h1 {
92 font-size: clamp(24px, 4.2vw, 50px);
93 line-height: 0.95;
94 font-weight: 900;
95 color: #0f172a;
96 letter-spacing: -0.02em;
97 }
98
99 /* Right side info block */
100 .info-block {
101 grid-column: 9 / 13;
102 grid-row: 1 / 5;
103 background: #111827;
104 padding: clamp(8px, 1.2vw, 18px);
105 display: flex;
106 flex-direction: column;
107 justify-content: center;
108 }
109 .info-label {
110 font-size: clamp(6px, 0.7vw, 9px);
111 font-weight: 800;
112 letter-spacing: 0.15em;
113 text-transform: uppercase;
114 color: #ef4444;
115 margin-bottom: clamp(3px, 0.4vw, 6px);
116 }
117 .info-text {
118 font-size: clamp(7px, 0.85vw, 11px);
119 line-height: 1.55;
120 color: #ffffff;
121 opacity: 0.75;
122 }
123 .palette {
124 display: flex;
125 gap: clamp(3px, 0.4vw, 6px);
126 margin-top: clamp(6px, 1vw, 14px);
127 }
128 .palette i {
129 display: block;
130 width: clamp(10px, 1.4vw, 18px);
131 height: clamp(10px, 1.4vw, 18px);
132 background: var(--c);
133 }
134
135 /* Description */
136 .desc-area {
137 grid-column: 1 / 9;
138 grid-row: 4 / 6;
139 display: flex;
140 flex-direction: column;
141 justify-content: center;
142 padding-top: clamp(4px, 0.6vw, 8px);
143 }
144 .desc {
145 font-size: clamp(8px, 1.1vw, 14px);
146 line-height: 1.6;
147 color: #334155;
148 max-width: 85%;
149 }
150 .tags {
151 display: flex;
152 flex-wrap: wrap;
153 gap: clamp(3px, 0.4vw, 6px);
154 margin-top: clamp(4px, 0.6vw, 10px);
155 }
156 .tags span {
157 font-size: clamp(6px, 0.7vw, 9px);
158 font-weight: 700;
159 padding: clamp(2px, 0.25vw, 4px) clamp(4px, 0.5vw, 7px);
160 border: 1.5px solid #0f172a;
161 color: #0f172a;
162 }
163
164 /* Bottom horizontal red bar */
165 .red-bar {
166 grid-column: 1 / 13;
167 grid-row: 7 / 9;
168 background: #ef4444;
169 display: flex;
170 align-items: center;
171 justify-content: space-between;
172 padding: 0 clamp(8px, 1.2vw, 18px);
173 }
174 .red-bar span {
175 font-size: clamp(6px, 0.7vw, 9px);
176 font-weight: 800;
177 letter-spacing: 0.1em;
178 text-transform: uppercase;
179 color: #ffffff;
180 }
181
182 /* Thin red accent line */
183 .accent-line {
184 grid-column: 3 / 9;
185 grid-row: 3;
186 height: 3px;
187 background: #ef4444;
188 align-self: end;
189 margin-bottom: clamp(2px, 0.3vw, 4px);
190 }
191
192 /* Transition note */
193 .transition-area {
194 grid-column: 9 / 13;
195 grid-row: 6 / 7;
196 display: flex;
197 align-items: center;
198 }
199 .transition-note {
200 font-size: clamp(6px, 0.7vw, 9px);
201 color: #334155;
202 opacity: 0.55;
203 letter-spacing: 0.05em;
204 }
205
206 @media (max-aspect-ratio: 16/9) { .slide { width: min(100vw, calc(100vh * 16 / 9)); height: auto; } }
207 @media (min-aspect-ratio: 16/9) { .slide { height: min(100vh, calc(100vw * 9 / 16)); width: auto; } }
208 </style>
209 </head>
210 <body>
211 <main class="slide" aria-label="瑞士网格 style preview">
212 <div class="grid-overlay"></div>
213 <section class="content">
214 <div class="red-square"><span>Swiss</span></div>
215 <div class="title-area">
216 <div class="eyebrow">大胆 · 宣言 · swiss-grid</div>
217 <h1>瑞士网格</h1>
218 </div>
219 <div class="accent-line"></div>
220 <div class="info-block">
221 <div class="info-label">Style DNA</div>
222 <p class="info-text">瑞士国际主义风格是设计史上最优雅的理性主义。12栏网格是神圣不可侵犯的法则,Helvetica 或无衬线字体是唯一选择。</p>
223 <div class="palette">
224 <i style="--c:#0f172a"></i>
225 <i style="--c:#334155"></i>
226 <i style="--c:#111827"></i>
227 <i style="--c:#ef4444"></i>
228 <i style="--c:#ffffff"></i>
229 </div>
230 </div>
231 <div class="desc-area">
232 <p class="desc">严谨到像素的网格信仰,理性本身就是一种浪漫。红色是唯一的色彩出口,其余皆由黑白灰承担秩序的重任。</p>
233 <div class="tags"><span>设计行业分享</span><span>品牌规范发布</span><span>严肃的排版展示</span><span>建筑设计叙事</span></div>
234 </div>
235 <div class="transition-area">
236 <span class="transition-note">fade-up / stagger-list / path-draw</span>
237 </div>
238 <div class="red-bar">
239 <span>Layout: 12栏网格是神圣不可侵犯的法则</span>
240 <span>16:9 preview</span>
241 </div>
242 </section>
243 </main>
244 </body>
245 </html>
246
246 lines HTML