Sim*_*aWB 480
要获取视口的宽度和高度,请执行以下操作:
var viewportWidth = $(window).width();
var viewportHeight = $(window).height();
Run Code Online (Sandbox Code Playgroud)
调整页面的大小:
$(window).resize(function() {
});
Run Code Online (Sandbox Code Playgroud)
Vit*_*nko 39
您可以尝试视口单元(CSS3):
div {
height: 95vh;
width: 95vw;
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*d L 25
1.对主要问题的回应
该脚本运行$(window).height()
良好(显示视口的高度,而不是滚动高度的文档),但它需要您在文档中正确放置doctype标记,例如这些doctypes:
对于HTML 5:
<!DOCTYPE html>
对于过渡HTML4:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
某些浏览器假定的默认doctype可能是这样的,它$(window).height()
取得了文档的高度而不是浏览器的高度.有了doctype规范,它已经圆满解决了,我很确定你会避免"将滚动溢出更改为隐藏然后返回",也就是说,对不起,有点肮脏的伎俩,特别是如果你不要将其记录在代码上以供将来程序员使用.
2.另外一个提示,请注意: 此外,如果您正在编写脚本,您可以创建测试以帮助程序员使用您的库,让我发明一些:
$(document).ready(function(){
if(typeof $=='undefined') {
alert("PROGRAMMER'S Error: you haven't called JQuery library");
} else if (typeof $.ui=='undefined') {
alert("PROGRAMMER'S Error: you haven't installed the UI Jquery library");
}
if(document.doctype==null || screen.height < parseInt($(window).height()) ) {
alert("ERROR, check your doctype, the calculated heights are not what you might expect");
}
Run Code Online (Sandbox Code Playgroud)
});
编辑:关于第2部分,"附加提示,请注意":@Machiel,在昨天的评论(2014-09-04)中,是完全正确的:$的检查不能在Jquery的准备事件中,因为正如他所指出的,我们正在假设已定义$.感谢指出这一点,如果您在脚本中使用它,那么请其他读者更正.我的建议是:在你的库中放入一个"install_script()"函数来初始化库(在这样的init函数中放入任何对$的引用,包括ready()的声明)和这样的"install_script()"函数的开始,检查是否定义了$,但是使所有内容都独立于JQuery,因此当JQuery尚未定义时,您的库可以"自我诊断".我更喜欢这种方法而不是强制自动创建一个从CDN引入它的JQuery.除了帮助其他程序员外,这些都是微小的笔记.我认为制作图书馆的人必须更富有反馈给潜在程序员的错误.例如,Google Apis需要另外的手册才能理解错误消息.这是荒谬的,需要外部文档来解决一些不需要你去搜索手册或规范的小错误.该库必须是自我文档的.我编写代码甚至可以处理我可能会在六个月后犯下的错误,它仍然试图成为一个干净且不重复的代码,已经编写为防止未来的开发人员错误.
您可以使用$(window).resize()来检测视口是否已调整大小.
当存在滚动条时,jQuery没有任何功能可以始终如一地检测视口[1]的正确宽度和高度.
我发现了一个使用Modernizr库的解决方案,特别是用于打开javascript媒体查询的mq函数.
这是我的解决方案:
// A function for detecting the viewport minimum width.
// You could use a similar function for minimum height if you wish.
var min_width;
if (Modernizr.mq('(min-width: 0px)')) {
// Browsers that support media queries
min_width = function (width) {
return Modernizr.mq('(min-width: ' + width + ')');
};
}
else {
// Fallback for browsers that does not support media queries
min_width = function (width) {
return $(window).width() >= width;
};
}
var resize = function() {
if (min_width('768px')) {
// Do some magic
}
};
$(window).resize(resize);
resize();
Run Code Online (Sandbox Code Playgroud)
我的答案可能无法帮助调整iframe到100%视口宽度,每边都有一个边距,但我希望它能为web开发者提供安慰,因为javascript视口宽度和高度计算的浏览器不连贯感到沮丧.
也许这可以帮助关于iframe:
$('iframe').css('width', '100%').wrap('<div style="margin:2em"></div>');
Run Code Online (Sandbox Code Playgroud)
[1]您可以使用$(window).width()和$(window).height()来获取在某些浏览器中正确的数字,但在其他浏览器中则不正确.在这些浏览器中,您可以尝试使用window.innerWidth和window.innerHeight来获取正确的宽度和高度,但我建议不要使用此方法,因为它依赖于用户代理嗅探.
通常,不同的浏览器不确定它们是否包含滚动条作为窗口宽度和高度的一部分.
注意:$(window).width()和window.innerWidth在使用相同浏览器的操作系统之间有所不同.请参阅:https://github.com/eddiemachado/bones/issues/468#issuecomment-23626238
归档时间: |
|
查看次数: |
279324 次 |
最近记录: |