@media max-width 与jquery宽度取值的差异

本文探讨了在响应式设计中,如何使JavaScript与CSS媒体查询保持一致的问题。作者指出,使用$(window).width()与@media查询之间的差异会导致布局不一致,并推荐使用window.innerWidth来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写了个响应式网站,有些效果通过用jq的$(window).width()来判断屏幕宽度,当屏幕宽度小于1366时一些参数发生变化。@media中也有小于1366的判断条件,但是用起来的时候发现一个小BUG,当屏幕缩小到1367~1382的时候JS已经触发,但是@media却没到触发条件,所以页面在这个尺寸有一点变形。后来发现是因为$(window).width()获取屏幕宽度时并没有获取滚动条宽度,@media是滚动条一起计算的。

所以当需要js判断屏幕宽度并且配合@media时应使用window.innerWidth来获取宽度,这样才能与@media同步。

 

 

知识扩展

Javascript、Jquery获取浏览器和屏幕各种高度宽度

Javascript:

 

document.body.clientWidth;        //网页可见区域宽(body)

document.body.clientHeight;       //网页可见区域高(body)

document.body.offsetWidth;       //网页可见区域宽(body),包括border、margin等

document.body.offsetHeight;      //网页可见区域宽(body),包括border、margin等

document.body.scrollWidth;        //网页正文全文宽,包括有滚动条时的未见区域

document.body.scrollHeight;       //网页正文全文高,包括有滚动条时的未见区域

document.body.scrollTop;           //网页被卷去的Top(滚动条)

document.body.scrollLeft;           //网页被卷去的Left(滚动条)

window.screenTop;                     //浏览器距离Top

window.screenLeft;                     //浏览器距离Left

window.screen.height;                //屏幕分辨率的高

window.screen.width;                 //屏幕分辨率的宽

window.screen.availHeight;          //屏幕可用工作区的高

window.screen.availWidth;           //屏幕可用工作区的宽

 

  

 

Jquery:

 

$(window).height();                           //浏览器当前窗口可视区域高度

$(document).height();                        //浏览器当前窗口文档的高度

$(document.body).height();                //浏览器当前窗口文档body的高度

$(document.body).outerHeight(true);  //浏览器当前窗口文档body的总高度 包括border padding margin

$(window).width();                            //浏览器当前窗口可视区域宽度

$(document).width();                        //浏览器当前窗口文档对象宽度

$(document.body).width();                //浏览器当前窗口文档body的宽度

$(document.body).outerWidth(true);  //浏览器当前窗口文档body的总宽度 包括border padding margin

 

  

 

转载于:https://www.cnblogs.com/gxsyj/p/6025541.html

<think>嗯,用户问的是@media (max-width: 768px),这是一个CSS媒体查询,用来根据设备屏幕宽度应用不同的样式。首先,我得解释清楚它的基本作用和常见应用场景。 用户可能是前端开发者,或者是刚开始学习响应式设计的人。需要确认他们是否了解媒体查询的基本概念,但根据问题本身,可能已经有一定基础,想深入了解这个特定查询的使用。 接下来,要说明max-width:768px的含义,即当视口宽度小于等于768px时生效。常见的应用场景比如调整布局、字体大小、隐藏元素等。需要举例说明,比如将导航栏从横向排列改为垂直排列,这样在手机上显示更友好。 还要提到常见的设备适配,比如平板和手机的分界点通常在768px左右,所以这个媒体查询常用于针对移动设备的样式调整。可能还需要解释视口的概念,以及如何结合meta viewport标签使用,确保移动端正确缩放。 另外,用户可能会混淆max-width和min-width,需要简单对比,比如@media (min-width:769px)用于大于768px的情况,帮助用户理解两者的区别。 最后,确保内容结构清晰,分点说明,使用代码示例来展示具体用法,比如修改容器宽度、调整字体大小、隐藏元素等。同时提醒注意兼容性和测试的重要性,尽管现代浏览器支持良好,但旧版本可能需要考虑。 检查是否有遗漏的部分,比如断点选择的原因,或者是否推荐使用其他辅助工具,比如Bootstrap的断点标准,但可能超出当前问题范围,可以简要提及。保持回答简洁,重点突出@media (max-width:768px)的核心用途和实际例子。</think>我来为您逐步解释 `@media (max-width: 768px)` 的用途和实现原理: 1. **基础定义** - 这是 CSS3 的**媒体查询(Media Query)**语法 - 当浏览器视口宽度 ≤ 768px 时,应用其包裹的 CSS 样式 - 主要用于实现**响应式网页设计**(RWD) 2. **典型应用场景**(代码示例): ```css /* 默认样式(桌面端) */ .container { width: 1200px; padding: 20px; } /* 移动端适配 */ @media (max-width: 768px) { .container { width: 100%; /* 容器宽度撑满屏幕 */ padding: 10px; /* 减少内边距 */ } .navigation { display: block; /* 垂直排列导航项 */ } .sidebar { display: none; /* 隐藏侧边栏 */ } } ``` 3. **核心实现原理** - 浏览器持续**监控视口宽度** - 当检测到宽度变化跨越 768px 阈值时 - 自动**切换应用对应的 CSS 规则** - 通过 `window.matchMedia()` API 实现底层监听 4. **断点选择依据** - 768px 是主流移动设备平板的分界尺寸 - 对应 iPad 竖屏模式的分辨率(768x1024) - Bootstrap 等框架也采用此标准断点 5. **注意事项** - 需配合 `<meta name="viewport">` 标签使用 - 避免 `min-width` 条件冲突 - 建议使用**移动优先**原则(先写移动端样式) 6. **扩展应用**(常见组合): ```css /* 同时适配横竖屏 */ @media (max-width: 768px) and (orientation: portrait) { /* 竖屏特定样式 */ } /* 多断点适配 */ @media (max-width: 768px) { /* 平板 */ } @media (max-width: 480px) { /* 手机 */ } ``` 实际开发中,这个媒体查询常用于处理: - 导航栏折叠 - 图片尺寸优化 - 字体大小调整 - 布局模式切换(Flexbox/Grid 重组) - 触控交互优化 建议通过浏览器开发者工具的「设备模式」进行实时调试,确保不同设备的显示效果符合预期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值