Apple官网复刻第二阶段day_3:(还原苹果官网iPhone顶部标准文案区块,一次编写全局复用)
CSS模块化实战还原苹果官网iPhone顶部标准文案区块一次编写全局复用一、前言为什么一定要学官网海报模块化开发效果展示很多前端新手复刻苹果官网最大的通病就是写一张海报复制一遍全套样式。写 iPhone 海报写一套 CSS写 iPad 再写一套写 Watch 又写一套。代码重复率极高、后期改一个间距要改几十行、维护直接崩盘。苹果官网所有产品海报90% 结构都是一模一样的海报大容器 居中文字块 标题 副标题 两个按钮唯一区别只有两个背景图不一样、文字位置不一样。所以今天我带大家做一套企业级标准模块化写法✅ 公共文案模块统一封装✅ 顶部定位单独调用类 → 专门给 iPhone 用✅ 底部定位单独调用类 → 专门给 Watch 用✅ 字体全局统一不用反复写 font-family✅ 后期新增海报只改图片 加类名不用写新 CSS全程用我已经写好的可直接上线代码手把手带你吃透模块化思维。二、先搭全局公共底层环境所有海报共用只写一次做模块化开发第一步绝对不是写海报而是先把全局地基打好。包括全局变量、导航栏基础、苹方全字体引入、全局样式重置。这一层写好后面所有海报直接无脑复用。:root { --footer-background: rgb(245, 245, 247); --footer-border-color: rgba(0, 0, 0, 0.16); --footer-text-color: rgba(0, 0, 0, 0.56); --footer-link-color: rgba(0, 0, 0, 0.72); --footer-directory-title-color: rgba(0, 0, 0, 0.88); --content-height: 490px; } #globalnav { --r-globalnav-flyout-close-delay: .12s; --r-globalnav-flyout-link-opacity-duration: .5s; --r-globalnav-flyout-spacing: 88px; --r-globalnav-next-flyout-height: 0px; --r-globalnav-previous-flyout-height: 0px; --r-globalnav-height: 44px; --r-globalnav-color: rgba(0, 0, 0, .8); --r-globalnav-color-secondary: #333336; --r-globalnav-color-hover: #000000; --r-globalnav-font-size: 17px; --globalnav-background: none; --globalnav-backdrop-filter: none; } .globalnav { position: sticky; top: 0; z-index: 999; height: 44px; background-color: rgba(255, 255, 255, 0.72); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); border-bottom: 1px solid rgba(0, 0, 0, 0.08); } .visuallyhidden { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; } /* 全局导入全套苹方字重全局所有海报直接用 */ font-face { font-family: PingFang SC; src: url(../PingFangSC-main/woff2/PingFangSC-Ultralight.woff2) format(woff2), url(../PingFangSC-main/ttf/PingFangSC-Ultralight.ttf) format(truetype); font-weight: 100; font-style: normal; } font-face { font-family: PingFang SC; src: url(../PingFangSC-main/woff2/PingFangSC-Thin.woff2) format(woff2), url(../PingFangSC-main/ttf/PingFangSC-Thin.ttf) format(truetype); font-weight: 200; font-style: normal; } font-face { font-family: PingFang SC; src: url(../PingFangSC-main/woff2/PingFangSC-Light.woff2) format(woff2), url(../PingFangSC-main/ttf/PingFangSC-Light.ttf) format(truetype); font-weight: 300; font-style: normal; } font-face { font-family: PingFang SC; src: url(../PingFangSC-main/woff2/PingFangSC-Regular.woff2) format(woff2), url(../PingFangSC-main/ttf/PingFangSC-Regular.ttf) format(truetype); font-weight: 400; font-style: normal; } font-face { font-family: PingFang SC; src: url(../PingFangSC-main/woff2/PingFangSC-Medium.woff2) format(woff2), url(../PingFangSC-main/ttf/PingFangSC-Medium.ttf) format(truetype); font-weight: 500; font-style: normal; } font-face { font-family: PingFang SC; src: url(../PingFangSC-main/woff2/PingFangSC-Semibold.woff2) format(woff2), url(../PingFangSC-main/ttf/PingFangSC-Semibold.ttf) format(truetype); font-weight: 600; font-style: normal; } * { margin: 0; padding: 0; box-sizing: border-box; } /* 导航栏复用模块 */ .globalnav-content { max-width: 980px; height: 100%; margin: 0 auto; display: flex; align-items: center; padding: 0 22px; } .globalnav-list { display: flex; list-style: none; align-items: center; gap: 48px; height: 100%; flex-wrap: nowrap; flex-shrink: 0; } .globalnav-item { display: flex; align-items: center; height: 100%; flex-shrink: 0; } .globalnav-link,.globalnav-icon { display: flex; align-items: center; justify-content: center; color: #1d1d1f; text-decoration: none; font-family: PingFang SC, sans-serif; font-weight: 600; font-size: 11px; opacity: 0.8; transition: opacity 0.3s; white-space: nowrap; } .globalnav-link:hover,.globalnav-icon:hover { opacity: 1; } .globalnav-logo svg,.globalnav-icon svg { width: 15px; height: auto; fill: currentColor; }**模块解析**这段代码是全站公共底座写一次永久不用改。CSS 变量统一管理颜色后期全站换主题一键搞定全套苹方字体提前全局挂载后面所有海报文字直接调用不用重复写字体路径导航栏、全局重置统一规范从根源避免海报之间样式互相打架是模块化开发的前置核心关键。三、核心重点封装海报【公共文案容器】全站所有海报通用真正的模块化精髓就在这里把所有海报一模一样的结构抽出来做成公共类.unit-copy-wrapper。所有海报居中、层级、弹性布局、文字对齐全部统一管控。后面只需要控制「位置」不用再管结构。/* 海报外层容器统一规范 */ .main { display: block; } .hero-unit { background-color: #f5f5f7; width: 100%; max-width: 1692px; height: 692px; margin: 0 0 12px; position: relative; overflow: hidden; box-sizing: border-box; } /* 核心模块化全站海报共用文案容器 */ .unit-copy-wrapper { position: absolute; left: 50%; transform: translateX(-50%); text-align: center; width: 100%; z-index: 2; display: flex; flex-direction: column; align-items: center; color: #1d1d1f; }模块解析.unit-copy-wrapper是海报文案的万能外壳。绝对定位50%偏移自动水平居中flex 纵向排列自动统一标题、按钮上下间距z-index 固定层级永远压在背景图上方。以后新增任何产品海报直接套这个容器不用重复写居中代码彻底消灭重复冗余样式。四、位置差异化写两个定位类一键切换顶部/底部布局公共结构不动只单独写两个「位置控制类」1、top-copy-wrapper→ 文案贴上方给 iPhone、iPad 标准版海报用2、bottom-copy-wrapper→ 文案贴下方专门给 Watch 特殊海报用这就叫结构复用样式差异化。/* 标准版iPhone 专用 → 文案在容器上方 */ .top-copy-wrapper { top: 60px; bottom: auto; } /* 特殊版Watch 专用 → 文案在容器最底部 */ .bottom-copy-wrapper { bottom: 0; top: auto; }**模块解析**不改动公共容器的任何代码只单独覆盖定位属性符合前端低耦合规范。开发时想用顶部就加 top 类想用底部就加 bottom 类一秒切换排版布局不用重写布局代码适配全品类海报开发需求。五、文案组件模块化拆分标题、按钮、字体全部标准化把海报内部所有小元素全部拆成独立小组件统一字重、统一间距、统一圆角苹果官网原汁原味。/* 苹果LOGO模块 */ .logo-image { display: flex; align-items: center; justify-content: center; gap: 0 !important; margin-bottom: 10px; transform: scale(1.1); transform-origin: center center; } .logo-image svg { width: 50px !important; height: 50px !important; fill: currentColor; margin-right: -6px; } /* 主标题 600 粗体 */ .logo-image h2, .hero-title { font-family: PingFang SC, sans-serif; font-size: 48px !important; font-weight: 600; margin: 0; } /* 副标题 400 常规体 */ .subhead, .hero-desc { font-family: PingFang SC, sans-serif; font-size: 25px; font-weight: 400; margin: 0 0 16px; color: #1d1d1f; } /* 按钮组布局模块 */ .cta-links { display: flex; gap: 12px; margin-bottom: 24px; } /* 按钮 300 细体苹果同款胶囊圆角 */ .promo-btn { font-family: PingFang SC, sans-serif; display: inline-block; padding: 8px 16px; font-size: 14px; font-weight: 300; background: #0071e3; color: #fff; text-decoration: none; border-radius: 980px; margin: 0 4px; } .promo-btn.outline { background: transparent; color: #0071e3; border: 1px solid #0071e3; } /* 底部空白过渡块用于遮瑕疵、衔接下一张海报 */ .promo-bank { margin: 0; background-color: #f5f5f7; width: 100%; height: 50px; }**模块解析**严格对标苹果官网字体层级主标题加粗抓眼球、副标题轻量化弱化层级、按钮细体贴合极简质感。胶囊圆角、蓝色主题色、按钮间距全部一比一复刻拆分成独立组件后任意海报直接调用不用反复调试样式模块化复用效率拉满。六、HTML结构极简调用iPhone 顶部海报直接上线CSS 模块化写完之后HTML 极度干净只需要海报容器 公共文案块 加上顶部定位类。结构极简、可读性极强、后期维护一秒看懂。div classhero-unit hero-iphonegt; !-- 核心调用公共文案模块 顶部定位类 -- div classunit-copy-wrapper top-copy-wrapper h2 classhero-titleiPhone/h2 p classsubhead来看看 iPhone 最新阵容/p div classcta-links a href# classpromo-btn进一步了解/a a href# classpromo-btn outline选购 iPhone/a /divgt; lt;/divgt; !-- 这里空余位置直接放你的背景图即可 -- /div**模块解析**HTML 零冗余代码完全靠 CSS 模块化赋能。想要换 iPad 海报只换图片和文字想要换 Watch 底部排版只把 top-copy-wrapper 改成 bottom-copy-wrapper。不用动任何布局样式真正实现一次开发、全站复用完美契合企业前端工程化开发标准。七、模块化开发总结这样写代码效率提升一倍今天这套 iPhone 顶部海报模块化开发核心优势就三点1、低耦合高复用公共结构统一封装定位单独控制互不干扰改一处全站同步生效。2、彻底消灭重复代码不用每张海报重写居中、重写字体、重写按钮节省一半开发时间。3、后期维护无敌产品要改字体大小、改按钮颜色、改文案位置直接改公共模块不用逐个页面排查修改。新手写页面堆代码老手写页面做模块化这就是进阶前端的核心差距。本篇手把手带你从零封装了苹果官网标准 iPhone 顶部文案模块代码全部可直接复制上线结构规范、复用性拉满。下一期我就带大家实战联动用同一套模块化代码无缝切换 Watch 底部特殊海报顺便教大家用纯 CSS 无痕遮罩搞定图片底部瑕疵完全不用改结构。想要系统学好前端页面模块化、高质量复刻大厂官网页面赶紧点赞收藏关注跟着我一步步从小白进阶成工程化前端