小编mhu*_*lse的帖子

HTML5 Boilerplate:Meta视口和宽度=设备宽度

我正在构建一个自适应/响应式网站.

关于最近对HTML5BP的更改:

" 移动/ iOS css修订版 "

我开始使用:

<meta name="viewport" content="width=device-width">
Run Code Online (Sandbox Code Playgroud)

...我在我的CSS中有这个:

html {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
}
Run Code Online (Sandbox Code Playgroud)

initial-scale=1被包括在内,从垂直旋转到水平(在iPad/iPhone)引起的布局从2列(例如)更改为3列(由于美达查询,initial-scale=1JS修复为视口比例错误).

总而言之,在横向模式下,这会缩放页面:

<meta name="viewport" content="width=device-width">
Run Code Online (Sandbox Code Playgroud)

......而这不是:

<meta name="viewport" content="width=device-width, initial-scale=1">
Run Code Online (Sandbox Code Playgroud)

注意:在iPad/iPhone上查看HTML5BP网站时,您可以看到此缩放效果.

我的问题:

  1. 这是否成为新标准(即在横向模式下变焦)?
  2. 我有点时间向同事和老板解释这个变化......他们习惯于在水平模式下看到不同的布局; 现在页面缩放,布局保持不变(除了它更大).关于如何向无知群众解释这一点的任何提示(其中,我可能包括在内)?

@robertc:谢谢!这非常有帮助.

其实我喜欢具有initial-scale=1; 我的同事习惯于看到布局变化而不是缩放.我敢肯定,我将被迫增加initial-scale=1只是为了取悦所有人(因为没有放大,看到布局的变化,是他们已经习惯了看到的).

我刚刚注意到github上的HTML5BP index.html网站正在使用<meta name="viewport" content="width=device-width">; 对我来说,这是放弃的理由initial-scale=1,但当我试图向"非极客" 解释这些事情时,我会引起一阵兴奋.:d

html5 viewport html5boilerplate

41
推荐指数
3
解决办法
10万
查看次数

确定并绑定点击或"触摸"事件

我正在使用以下代码绑定"click"或"touchstart"事件(使用jQuery on(eventType, function() { ... })).

var what = (navigator.userAgent.match(/iPad/i)) ? 'touchstart' : 'click';
Run Code Online (Sandbox Code Playgroud)

稍后的:

$foo.on(what, function() { ... });
Run Code Online (Sandbox Code Playgroud)

...这对iPad和"其他一切"都很有用,但我担心上面的代码有"iPad隧道视觉"......

我的问题:

是否所有其他设备(例如Android平板电脑)都具有类似名称的"touchstart"事件?如果是这样,我如何改进上面的代码,以便我可以考虑这些事件类型?

换句话说,我如何在上述代码(不仅仅是iPad)中考虑更广泛的触控设备?


编辑#1

你们有什么想法:

var foo = ('ontouchstart' in window) ? 'touchstart' : ((window.DocumentTouch && document instanceof DocumentTouch) ? 'tap' : 'click');
Run Code Online (Sandbox Code Playgroud)

注意:上述大部分逻辑来自Modernizr.

以上似乎适用于Firefox/iPad ......此时我没有太多可以测试的内容.

我喜欢上面的内容是我不是UA嗅闻.:)

tap所有其他触摸设备都是一个很好的默认设置?


编辑#2

这里有一些有趣的信息,链接到这个:

为移动Web应用程序创建快速按钮

这不是一个直接的答案,但是在面对多个平台和设备的点击相关事件时,提供了很多关于开发人员面临的情况的细节.


编辑#3

这里有一些很好的信息:

Android和iPhone触控事件

Android和iPhone版本的WebKit有一些共同的触摸事件:

touchstart - triggered when a touch is initiated. Mouse equivalent - mouseDown
touchmove …
Run Code Online (Sandbox Code Playgroud)

javascript iphone mobile jquery android

29
推荐指数
3
解决办法
5万
查看次数

jQuery和"这个"管理?如何避免变量碰撞?

当您编写复杂的jQuery/javascript时,如何在this不重新定义this先前定义的变量的情况下管理使用?您是否有经验法则或个人偏好来命名this变量(随着嵌套变深)?

有时我希望更高范围的变量可用于嵌套函数/回调,但有时候我想要一个干净的平板/范围; 是否有一种很好的方法来调用函数/回调而不必担心变量冲突?如果是这样,你使用什么技术?


一些超级愚蠢的测试代码:

$(document).ready(function() {

    console.warn('start');

    var $this = $(this),

    $dog = $('#dog'),

    billy = function() {

        console.log('BILLY!', 'THIS:', $this, ' | ', 'DOG:', $dog);

        var $this = $(this);

        console.log('BILLY!', 'THIS:', $this, ' | ', 'DOG:', $dog);

    };

             // (#1)
    billy(); // BILLY! THIS: undefined | DOG: jQuery(p#dog)
             // BILLY! THIS: jQuery(Window /demos/this/) | DOG: jQuery(p#dog)

    console.log('THIS:', $this, ' | ', 'DOG:', $dog); // THIS: jQuery(Document /demos/this/) | DOG: jQuery(p#dog)

             // (#2)
    billy(); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

16
推荐指数
2
解决办法
915
查看次数

JavaScript中的"x = x || {}"技术是什么 - 它如何影响这个IIFE?

首先,一个伪代码示例:

;(function(foo){

    foo.init = function(baz) { ... }

    foo.other = function() { ... }

    return foo;

}(window.FOO = window.FOO || {}));
Run Code Online (Sandbox Code Playgroud)

这样称呼:

FOO.init();
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 什么是技术名称/描述:window.FOO = window.FOO || {}

我理解代码的作用...请参阅下面的我的原因.


询问理由:

我这样称呼全球传递:

;(function(foo){
    ... foo vs. FOO, anyone else potentially confused? ...
}(window.FOO = window.FOO || {}));
Run Code Online (Sandbox Code Playgroud)

...但我只是不喜欢称小写" foo",考虑到全局被称为大写FOO......它只是看起来令人困惑.

如果我知道这种技术的技术名称,我可以说:

;(function(technicalname){
    ... do something with technicalname, not to be confused with FOO ...
}(window.FOO = window.FOO || {}));
Run Code Online (Sandbox Code Playgroud)

我见过一个最近(很棒)的例子,他们称之为" exports":

;(function(exports){
    ...
}(window.Lib = …
Run Code Online (Sandbox Code Playgroud)

javascript syntax iife

3
推荐指数
1
解决办法
351
查看次数