如何有条件地使用javascript,如CSS3媒体查询、定向?
如何有条件地使用javascript,如CSS3媒体查询、定向 例如,我可以为特定的应用程序编写css如何有条件地使用javascript,如CSS3媒体查询、定向?,javascript,jquery,css,jquery-mobile,Javascript,Jquery,Css,Jquery Mobile,如何有条件地使用javascript,如CSS3媒体查询、定向 例如,我可以为特定的应用程序编写css @media only screen and (width : 1024px) and (orientation : landscape) { .selector1 { width:960px} } 现在,我只想在符合相同条件的情况下运行一些javascript 像 我有一个外部javascript,例如http://ajax.aspnetcdn.com/ajax/jQuery/jque
@media only screen and (width : 1024px) and (orientation : landscape) {
.selector1 { width:960px}
}
现在,我只想在符合相同条件的情况下运行一些javascript
像
我有一个外部javascript,例如http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.min.js
并且它只能在特定的屏幕大小和方向上运行
if (matchMedia('all and (orientation:landscape)').matches) {
// probably tablet in widescreen view
}
…我只想在浏览器的最大宽度为1900px时运行javascript
最小宽度为768
编辑:事实上,这完全错了。如果您正在使用移动设备,请使用:
function doStuff(){
landscape = window.orientation? window.orientation=='landscape' : true;
if(landscape && window.innerWidth<1900 && window.innerWidth > 768){
//code here
}
}
window.onload=window.onresize=doStuff;
if(window.onorientationchange){
window.onorientationchange=doStuff;
}
函数doStuff(){
横向=窗口.方向?窗口.方向='横向]:真;
if(横向和窗内宽度768){
//代码在这里
}
}
window.onload=window.onresize=doStuff;
if(window.onorientationchange){
window.onorientationchange=doStuff;
}
我可以想出一个快速的解决方案:有条件地将一些样式应用于不可见的div,并检查它们是否与javascript一起应用:
div#test { display: none }
@media only screen and (width : 1024px) and (orientation : landscape) {
div#test { background-color: white; }
}
可能值得一提的是,有一个DirectionChange事件,您可能希望像这样挂钩:
$('body').bind('orientationchange', function(){
// check orientation, update styles accordingly
});
我知道这个事件是由mobile Safari引发的,你必须检查一下其他浏览器 您可以将媒体查询重写为javascript表达式:
function sizehandler(evt) {
...
}
function orientationhandler(evt){
// For FF3.6+
if (!evt.gamma && !evt.beta) {
evt.gamma = -(evt.x * (180 / Math.PI));
evt.beta = -(evt.y * (180 / Math.PI));
}
// use evt.gamma, evt.beta, and evt.alpha
// according to dev.w3.org/geo/api/spec-source-orientation
...
}
window.addEventListener('deviceorientation', orientationhandler, false);
window.addEventListener('MozOrientation', orientationhandler, false);
window.addEventListener('load', orientationhandler, false);
window.addEventListener('resize', sizehandler, false);
window.addEventListener('load', sizehandler, false);
您可以使用:
测试移动设备媒体查询
if (matchMedia('only screen and (max-width: 480px)').matches) {
// smartphone/iphone... maybe run some small-screen related dom scripting?
}
测试横向方向
if (matchMedia('all and (orientation:landscape)').matches) {
// probably tablet in widescreen view
}
当前所有现代浏览器都支持()
旧浏览器的Polyfill:
我找到的最简单的方法是获取页面的宽度;然后有条件地使用它
var x=document.documentElement.clientWidth;
如果(x<992){
document.body.style.backgroundColor=“黄色”;
}
+1刚刚输入了一个类似的答案,但是你更快了。这就是我所说的,但我认为问题是CSS会根据这个示例立即执行:这意味着它不会立即执行,你必须不断检查。我想我的答案是看不见的?@Walkereo:CSS立即执行很好!这将使它在javascript之前发生!至于你的答案,它太模糊了。@Walkereno-你是对的。我只想在浏览器的最大宽度为1900px,最小宽度为768的情况下运行javascript。为什么希望jQuery只在一个大小和方向上运行?如果加载后方向或大小发生变化,您希望发生什么?(设备旋转、窗口大小调整等)我只想在最大宽度:1025px和最大宽度:2048px的情况下使用图像大小调整jquery插件。不管怎样,您都应该包括库。除非屏幕显示正确,否则不要使用这些功能size@Eric-这是一个插件,我只想在最大宽度:1025px和最大宽度:2048px的情况下使用它来重新调整图像大小。为什么我要使用这个插件,因为我不知道google chrome新标签使用的技术+1可能是一种比我更干净的方法。我可以在里面放一个外部javascript吗?这不考虑方向的变化。@Jitendra:你不必!不管怎样,只要让插件运行,并将$('img').imagefit()
放入其中。@Walkereo:最初的问题是方向:横向,所以我假设所讨论的js应该只在该方向上运行。方向处理程序代码来自Google的一个视频,其中解释了:我认为是javascript本机函数。
if (matchMedia('all and (orientation:landscape)').matches) {
// probably tablet in widescreen view
}