第 8 卷
1/DPR倍,此时1px CSS逻辑像素 = 1px 物理像素,直接设置 1px 边框就是真实的1px物理线条,无缩放、无模糊,是最精准的解决方案,适合纯移动端rem布局项目。
- 代码实现(JS+CSS)
Code block
1// 第一步:动态设置viewport,适配DPR 2(function() {
| 3 | const dpr = window.devicePixelRatio || 1;//获取设备DPR |
|---|---|
| 4 | const meta = document.createElement('meta'); |
| 5 | meta.name = 'viewport'; |
| 6 | //核心:initial-scale=1/DPR,禁止用户缩放 |
| 7 | meta.content = `width=device-width, initial-scale=${1/dpr}, maximum- |
scale=${1/dpr}, minimum-scale=${1/dpr}, user-scalable=no`;
8document.head.appendChild(meta);
9})();
Code block
| 1 | /*第二步:直接设置1px边框,即为真实1px物理线条*/ |
|---|---|
| 2 | .box { |
| 3 | width: 10rem; |
| 4 | height: 5rem; |
| 5 | border: 1px solid #e5e5e5;/*真实1px,无模糊*/ |
| 6 | } |
- 优势:物理级精准1px,无缩放副作用,代码极简
- 注意:需配合rem布局使用,否则页面元素尺寸错乱,仅适用于移动端,PC端不可用
- 方案3:box-shadow 阴影实现(✅ 极简方案,适合简单线条,无嵌套)
- 核心原理
利用 box-shadow 的扩散半径特性,设置 box-shadow: 0 0 0 1px #e5e5e5,扩散半径为 1px时,阴影的视觉粗细等同于真实1px边框,且阴影不占布局空间,无缩放、无偏移,代码一行搞
定,适合简单单边框/全边框场景。
- 代码实现
| 5 | box-shadow: 0 0 0 1px #e5e5e5;/*关键:扩散半径1px */ |
|---|---|
| 6 | border-radius: 8px;/*支持圆角,无毛刺*/ |
| 7 | } |
| 8 | /*底部1px线条*/ |
| 9 | .border-bottom-shadow { |
| 10 | box-shadow: 0 -1px 0 0 #e5e5e5 inset;/*内阴影实现下边框*/ |
| 11 | } |
- 优势:代码极简,无需伪元素,支持圆角,无兼容性问题
- 注意:阴影颜色与背景色对比弱时,视觉上略有模糊,不影响使用
- 方案4:background-image 线性渐变实现(✅ 精准无缩放,适合特殊场景)
- 核心原理
通过 linear-gradient 线性渐变,创建1px高度/宽度的渐变背景,仅填充1px物理像素的区域,实现真实1px线条,适合需要渐变边框、半透明边框的特殊场景,无缩放、无偏移,精准控制。
- 代码实现(底部1px线条)
Code block
1.border-bottom-gradient { 2width: 100%;
3height: 1px;
| 4 | /*渐变:仅显示1px物理像素的颜色,其余透明*/ |
|---|---|
| 5 | background-image: linear-gradient(to right, #e5e5e5 100%, transparent 0); |
| 6 | background-size: 100% 1px; |
| 7 | background-repeat: no-repeat; |
| 8 | background-position: bottom; |
| 9 | } |
- 方案5:使用border-image 图片实现(✅ 兼容旧版浏览器,适合复杂边框)
- 核心原理
制作1px宽的透明背景+1px颜色的图片(PNG格式),
(注:文档部分内容可能由 AI 生成)
全站分卷索引 · 8 卷
- 1第 1 卷
- HTML-CSS 前端面试八股文(核心高频题+标准
- 答案)
- ✅ 核心语义化标签(按页面结构分类)
- • <header>:页面/区块头部,包含标题、导航、搜索框等
- • <nav>:导航栏区域,主导航/侧边导航专用
- • <main>:页面核心内容,唯一存在,包裹主要业务内容
- • <section>:内容区块,用于文章章节、产品模块、功能分区
- • <article>:独立内容单元,如文章、评论、商品卡片、新闻条目
- • <aside>:侧边栏,包含相关推荐、作者信息、广告、附属内容
- • <footer>:页面/区块底部,包含版权、联系方式、备案信息
- • <h1>-<h6>:标题层级,h1唯一(页面主标题,权重最高),h2-h6依次降级
- • <p>:纯文本段落,区分普通文本块
- 2第 2 卷
- ✅ 先明确:默认script标签的缺陷(无defer/async)
- ✅ defer 属性的核心作用(按序加载,DOM解析后执行)
- • 依赖DOM元素的JS文件(如操作页面节点、渲染页面内容)
- • 需要按顺序执行的JS文件(如jQuery库 → 依赖jQuery的业务JS)
- • 普通业务逻辑JS、页面初始化JS
- ✅ async 属性的核心作用(并行加载,下载完立即执行)
- • 不依赖DOM、不依赖其他JS的独立脚本
- • 统计埋点JS、广告脚本、第三方工具库(如百度统计、友盟统计)
- • 无需按顺序执行的独立功能JS
- ✅ defer vs async 核心区别总结(面试必背)
- ✅ 面试补充考点
- • defer / async 仅对**外部脚本(src引入)**生效,内联脚本( <script>代码
- 3第 3 卷
- • ::selection:自定义用户选中文字的样式(背景色/文字色)
- • ::first-line / ::first-letter:选中文本首行/首字⺟,做特殊样式
- ✅ 二、布局方式革新(解决传统浮动布局痛点)
- • 核心:给父元素设置 display: flex,子元素自动成为弹性项,支持居中、均分、自适应、换
- • 核心属性: justify-content(主轴对齐)、 align-items(侧轴对齐)、 flex-
- • 优势:移动端布局首选,代码极简,适配性极强,无需计算宽度,解决垂直居中难题
- • 场景:导航栏、列表布局、卡片均分、表单对齐、页面居中
- • 核心:给父元素设置 display: grid,将容器划分为行和列的网格,精准控制子元素的行/列占
- • 核心属性: grid-template-columns(列宽)、 grid-template-rows(行高)、
- • 优势:复杂布局首选,支持跨行/跨列,精准定位,替代传统表格布局+浮动布局
- • 场景:后台管理系统、大屏可视化、商品详情页、不规则布局
- • 核心属性: column-count(列数)、 column-gap(列间距)、 column-rule(列分隔
- 4第 4 卷
- ✅ 什么是CSS Sprites(精灵图/雪碧图)
- ✅ 核心实现原理(简单示例)
- ✅ CSS Sprites 核心优势(性能优化层面,面试必背)
- • 浏览器排队等待请求,页面加载缓慢
- • 增加服务器连接开销和压力
- • 多次TCP握手/断开,浪费网络资源
- • 多张小图合并时,会自动去除每张小图的冗余空白区域,减少无效像素
- • 图片压缩算法对单张大图的压缩效率远高于多张小图,合并后的精灵图体积 < 所有小图体积之和
- • 示例:20张1KB小图总大小20KB,合并后精灵图仅12KB,节省40%体积
- • 减少HTTP请求的同时,也减少了浏览器对图片的解析、解码、渲染次数
- • 避免浏览器频繁切换渲染上下文,降低CPU/GPU占用,页面渲染更流畅,尤其适配移动端低性能设
- • 所有小图标集中管理在一张图中,无需单独维护几十个小图文件
- 5第 5 卷
- • 给div设置 width: 375px,表示div的逻辑宽度为375CSS像素
- • 无论在手机/平板/PC上, 1px 逻辑像素的视觉大小基本一致
- • 像素密度越高,屏幕显示越清晰细腻,无颗粒感
- • 像素密度与设备尺寸、物理像素相关:同尺寸屏幕,物理像素越多,PPI越高
- • 普通电脑屏幕:72PPI / 96PPI(低密屏)
- • 手机高清屏:326PPI+(Retina屏,如iPhone 15:460PPI)
- • 4K显示器:210PPI+(高密屏)
- ✅ 二、三者的核心关联(关键:设备像素比DPR)
- • iPhone 15:逻辑像素393×172,物理像素2556×1179 → DPR=6.5(≈3倍,@3x)
- • 普通安卓机:逻辑像素375×667,物理像素750×1334 → DPR=2(@2x)
- • 电脑屏幕:逻辑像素1920×1080,物理像素1920×1080 → DPR=1(@1x)
- ✅ 三、移动端开发为何需要@2x/@3x图片?(核心问题,面试必讲)
- 6第 6 卷
- 7第 7 卷
- 8第 8 卷