小编Aid*_*des的帖子

iOS不使用-webkit-overflow-scrolling来尊重z-index

问题:

在iOS上z-index,使用时会忽略可滚动区域-webkit-overflow-scrolling.如果两个-webkit-overflow-scrolling重叠的对象滚动,则滚动而不是上面显示的对象.

如何重现:

创建两个彼此重叠的元素(position: absolute例如),其中一个元素具有更高的元素z-index并添加

.selector
{
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}
Run Code Online (Sandbox Code Playgroud)

对他们两个.两个元素都应该具有足够的内容以便可滚动.

另外添加

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes"> 
<meta name="apple-mobile-web-app-status-bar-style" content="black">
Run Code Online (Sandbox Code Playgroud)

到你的<head>.然后将页面添加到主屏幕并从那里启动它.

如果您然后尝试滚动上部元素,则会滚动下面的元素.

MCVE:

或者只是看看这支笔.从iOS设备启动完整版,将其添加到主屏幕并从那里启动.

环境:

使用iOS 9.1iOS 9.3.2iPhone 5iPhone 6上进行测试

观察:

  • 只有从主屏幕(固定应用程序)或Xamarin Webview内部启动页面/应用程序时才会出现此问题(可能与UIWebView和WKWebView有关)
  • 在页面加载后更改设备方向(纵向/横向)后问题是固定的,直到重新加载页面(可能重新触发布局固定它?)
  • 将较低元素更改overflow-yhidden通过JS确实可以解决问题,但是切换overflow会导致重新绘制导致性能问题
  • 删除height: 100%; width: 100%html, body解决问题为好,但这些都必须设置百分比值正常工作

需要一个适当的解决方案/解决方法来解决这个问题,而不会造成任何麻烦的副作用.还要理解为什么会发生这种情况.

html css scroll z-index ios

22
推荐指数
1
解决办法
1万
查看次数

防止在iOS上溢出/橡皮圈滚动

关于SO上的溢出/橡皮带滚动主题已经存在多个问题但是

  1. 它们都没有为iOS 9.3.2上的所有案例提供解决方案
  2. 他们都没有提供有关问题本身的广泛而完整的信息

这就是我将这篇文章创建为知识体系的原因.


问题:

在任何其他帖子中从未提及的事情是iOS溢出滚动实际上是两部分行为.

1.溢出滚动内容 overflow: auto/scroll

这是元素的通常已知且最常想要的行为,-webkit-overflow-scrolling: touch其中连续/动量滚动行为经过元素容器以平滑地减慢滚动内容.

当您以足够高的动量滚动元素的内容以使动量滚动超过滚动内容的长度时,就会发生这种情况.

通过此行为,element.scrollTop属性相应地更改为元素滚动位置并且小于0或大于最大scroll(element.scrollHeight - element.offsetHeight).

2.溢出滚动 <body>

如果您尝试滚动任何元素已经在其最小/最大滚动位置甚至更远(顶部向上的元素或底部向下的元素),则会发生此行为.然后滚动似乎"冒泡"到<body>标签,并滚动整个视口.

与上述相反,该element.scrollTop属性不会改变,而是document.body.scrollTop改变.

聚焦锁定和行为之间切换(1.5秒延迟)

在这种情况下最令人恼火的事情是上述两种类型之间的切换不会立即切换.

输入其中一个之后,您无法将焦点切换到任何其他元素(可滚动元素,按钮,链接......),因此滚动行为也不会改变.

例如:如果您向上滚动已经位于其顶部位置的元素,则输入overflow scrolling type 2并且用户最自然的反应是尝试向下滚动.因为焦点被锁定在身体滚动而不是overflow scrolling type 1它停留在type 2身体上并且整个身体向下滚动.然后,典型的用户开始任意地开始频繁地向上和向下滚动而不会突破type 2.

焦点的切换以及滚动行为的改变只能在溢出动画结束并且元素静止(甚至比[大约0.5s]更长)之后才会发生.

因此回到前面的例子,用户的正确反应是停止触摸屏幕大约1s - 1.5s然后再尝试向下滚动.

html css scroll overflow ios

16
推荐指数
1
解决办法
1万
查看次数

Typescript使用严格的编译器选项抛出node_modules中的错误

node_modules尽管该文件夹被排除在外,但仍存在几个关于为什么抛出错误的github问题tsconfig.json.如果importlib上有任何内容,则忽略该exclude属性.

但是,当使用更严格的编译器选项(即strictNullChecks,noUnusedLocals...)并引用任何未设计用于这些选项的lib时,会引发错误.

因此,每当使用这样的lib时,总是决定不使用lib或不使用编译器选项.但是有大型库/框架不支持这些选项(即Angular),所以似乎没有办法使用这些选项来确保在自己的项目中进行严格的检查.

我是否错过了避免抛出node_modules错误的可能性?如果没有,是否有任何技术要求将这些规则应用于所有导入的库或这种行为背后的原因是什么?

node-modules typescript

11
推荐指数
1
解决办法
486
查看次数

在TypeScript中定义js-data资源

是否可以使用TypeScript类创建js-data资源定义?

我一般想要的是对计算属性和实例方法定义进行完全打字支持.

什么是令人敬畏的是这样的:

class SomeModel
{
    public someBusinessModelValue = 'foo';
    public someMoreValues = 'bar';

    public get someComputedProperty()
    {
        return this.someBusinessModelValue + someMoreValues;
    }

    public instanceMethod(param: string)
    {
        return this.someMoveValues.search(param);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后

DS.defineResource(fromClass('name', '/endpoint', 'idAttr', SomeModel));
Run Code Online (Sandbox Code Playgroud)

或者更进一步,并将其定义为

class SomeModelStore extends SomeModel
{
    name = 'name';
    endpoint = 'endpoint';
    idAttribute = 'idAttr';
    relations = 
    {
        //[...]
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用它

DS.defineResource(SomeModelStore);
Run Code Online (Sandbox Code Playgroud)

请注意,这些只是对我希望它看起来像什么的一些想法,我知道它可能不会完全像那样.

javascript typescript jsdata

6
推荐指数
1
解决办法
439
查看次数

-webkit-overflow-scrolling:touch在没有z-index的元素上创建新的堆叠上下文

问题

iOS 6中,似乎创造与每一个后代一个新的堆叠内容position以外static,如果不考虑z-index设置与否。

有谁知道这是正常的预期行为,还是这会-webkit-overflow-scrolling干扰堆叠顺序?

参见下面的代码,或JSFiddle

这两个row元素都有位置relative,但没有位置z-index。我笔记本电脑上的Google Chrome和Safari都在第二个顶部显示了蓝色的“子菜单” row

当示例在iOS模拟器上进行测试时,“子菜单”呈现在第二个菜单之后row。删除-webkit-overflow-scrolling: touch它后,渲染效果与我预期的一样。

在我看来,添加-webkit-overflow-scrolling: touch后将为每个后代创建一个新的堆叠上下文,并设置其他位置(static无论是否z-index设置)。

<style>
    div.content {
        -webkit-overflow-scrolling: touch;
    }

    div.row {
        width: 100%;
        position: relative;
        background: red;
        margin-bottom: 10px;
    }

    div.sub {
        position: absolute;
        top: 100%;
        z-index: 2;
        background: blue;
    }
</style>
<div class="content">
    <div class="row">
        A
        <div class="sub">
            Sub menu of A<br>
            Sub …
Run Code Online (Sandbox Code Playgroud)

css scroll z-index ios6 ios8

5
推荐指数
0
解决办法
733
查看次数

在'@ angular / core'中找不到导出'?cmf'

启动webpack-dev-server时,会引发以下警告:

WARNING in ./~/@angular/compiler/@angular/compiler.es5.js
11051:13-17 "export '?cmf' was not found in '@angular/core'

WARNING in ./~/@angular/compiler/@angular/compiler.es5.js
11056:13-17 "export '?mod' was not found in '@angular/core'

WARNING in ./~/@angular/compiler/@angular/compiler.es5.js
11061:13-17 "export '?mpd' was not found in '@angular/core'
Run Code Online (Sandbox Code Playgroud)

由于仅是警告,因此在尝试访问应用程序时仍会生成并提供输出

Uncaught TypeError: jit_val0 is not a function
    at eval (module.ngfactory.js? [sm]:1)
    at evalExpression (compiler.es5.js:26423)
    at jitStatements (compiler.es5.js:26435)
    at JitCompiler._compileModule (compiler.es5.js:26716)
    at compiler.es5.js:26655
    at Object.then (compiler.es5.js:1679)
    at JitCompiler._compileModuleAndComponents (compiler.es5.js:26653)
    at JitCompiler.compileModuleAsync (compiler.es5.js:26582)
    at PlatformRef_._bootstrapModuleWithZone (core.es5.js:4811)
    at PlatformRef_.bootstrapModule (core.es5.js:4797)
(anonymous) @ module.ngfactory.js? [sm]:1
evalExpression @ compiler.es5.js:26423
jitStatements …
Run Code Online (Sandbox Code Playgroud)

webpack webpack-dev-server angular

4
推荐指数
1
解决办法
1万
查看次数

Angularjs - 在回调函数中赋值变量

我正在使用controller as-syntax并遇到了一个荒谬的情况

this.showAddressDetail = false;
this.searchPlace = function() {
    GoogleService.searchPlace($('#address')[0], function(place) {
        this.showAddressDetail = true;
    });
};
Run Code Online (Sandbox Code Playgroud)

每当触发GoogleService.searchPlace的回调时.我想为this.showAddressDetail 指定true.但在这种情况下this是回调函数.
那么如何为this.showAddressDetail赋值?

javascript angularjs

2
推荐指数
1
解决办法
417
查看次数

导出变量"router"已从外部模块使用或正在使用名称"Router"但无法命名

在使用Typescript 2直接导出路由器并且@types/express@4.0.35代码抛出后的定义时,在多个文件中定义嵌套路由器的通用构造

error TS4023: Exported variable 'router' has or is using name 'Router' from external module 
         "[...]/node_modules/@types/express-serve-static-core/index" but cannot be named.
Run Code Online (Sandbox Code Playgroud)

basarat的答案为例

import * as express from "express";

// import sub-routers
import * as adminRouter from "./admin/admin";
import * as productRouter from "./products/products";

let router = express.Router();

// mount express paths, any addition middleware can be added as well.
// ex. router.use('/pathway', middleware_function, sub-router);

router.use('/products', productRouter);
router.use('/admin', adminRouter);

// Export the router
export = router;
Run Code Online (Sandbox Code Playgroud)

module node.js express typescript

2
推荐指数
1
解决办法
1707
查看次数

在RESTful API中更改密码(PATCH上的服务器验证)

在RESTful API中,我拥有用户资源/users,/users/:id包括用户名,电子邮件地址和密码.

当我想更新用户信息时,我可以轻松地PATCH:/users/:id使用一些JSONPatch数据.

现在的问题是,我无法弄清楚如何处理更改密码的情况有currentPassword,newPasswordnewPasswordConfirm形成.

应该使用什么方法(PATCH似乎合适但有问题)以及数据应以何种方式传输(正文/标题/ ......).

在更广泛的范围内 - 如何处理具有更多验证字段的补丁.

这篇文章似乎有关,但没有涵盖这个确切的主题.

authentication rest http web http-patch

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