有任何js版本的css媒体查询?-用例场景
Is there any js version for css media queries? - a use case scenario
当屏幕处于一定宽度时,我们希望隐藏按钮,而允许包装器div可点击。
然而,这只应该发生在:
@media only screen and (min-width:320px) {
虽然我们可以很容易地display:none;
和display:block;
按钮,问题来了,当我们想要删除周围的包装div(在更高的屏幕尺寸),因为,如果我们display: none;
周围的div,他们所有的内部内容也将被删除!
上面的媒体查询是否有javascript版本,可以跨浏览器和跨操作系统可靠,以便在某些屏幕条件下动态添加和删除元素?
检查一下:
https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia语法
mql = window.matchMedia(mediaQueryString)
其中mediaQueryString是一个表示媒体查询的字符串,为其返回一个新的MediaQueryList对象。
if (window.matchMedia("(min-width: 400px)").matches) {
/* the view port is at least 400 pixels wide */
} else {
/* the view port is less than 400 pixels wide */
}
和这样的填充:
https://github.com/paulirish/matchMedia.js/老即:
https://github.com/benschwarz/matchMedia.js/tree/IE7-8如果你只关心一个简单的检查,这里有你可以用jQuery来做,虽然它是相当琐碎的在纯Javascript中做,这只是更容易,因为你的旧的IE要求:
var timeout;
function onWindowResize() {
var width = $(window).width();
if (width <= 480) {
console.log('small');
} else if (width <= 767) {
console.log('medium');
} else if (width <= 1024) {
console.log('large');
} else {
console.log('xlarge');
}
}
$(window).resize(function() {
clearTimeout(timeout);
timeout = setTimeout(function() {
onWindowResize();
}, 50); // Only resize every 50ms - number up to you.
});
不要使用JS直接改变元素的display属性。修改与元素相关的类名。
然后可以在外部样式表中使用类选择器和媒体查询来定义display: none
或其他方式。
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 触发媒体查询断点时刷新页面
- 媒体查询/matchMedia上的脚本
- 使用按钮和媒体查询切换显示状态
- 加载dom后禁用媒体查询
- 将语句与jquery相结合,并使用媒体查询来实现返回页首按钮
- 媒体查询与Javascript相结合
- 访问CSS媒体查询中的屏幕宽度和高度
- 使用媒体查询和angular更改移动设备中ng href的值
- 媒体查询和调整现成的网站
- 有没有一种方法可以修改在使用javascript的媒体功能的媒体查询下创建的样式
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- @媒体查询在桌面浏览器中有效,而在移动浏览器中无效
- css媒体查询请求后刷新jQuery插件
- jQuery.thoggle()和媒体查询
- 使用媒体查询设置背景图像的不透明度
- 媒体查询:如何仅定位平板电脑
- 自定义 CSS 媒体打印查询中的模式高度和宽度
- 如何将垂直选项卡式内容面板更改为具有媒体查询和 jquery 的响应式可折叠面板
- 根据浏览器屏幕大小和媒体查询执行 php 代码