小编Ole*_*yra的帖子

过渡期间CSS转换的变化导致当前状态迷失并跳到开始(Chrome错误)

已在Google Chrome 73(正式版)(64位)中经过测试。

还在最新的稳定版Mozilla,Opera和Safari中进行了测试。

看来这只是Chrome的错误。希望有解决方法,直到Chrome小组修复该错误为止。

演示版

我创建了Codepen来显示问题。

const div = document.querySelector('div');

const cssTransition = 2500;
const states = [
  ['INITIAL', 'translate(0)', cssTransition / 2],
  ['A', 'translate(0, 100px)', cssTransition + 500],
  ['B', 'translate(100px, 100px)', cssTransition / 2],
];

let cursor = 0;

const animate = () => {
  cursor = (cursor + 1) % states.length;
  const [name, value, delay] = states[cursor];
  setTimeout(() => {
    div.innerText = name;
    div.style.transform = value;
    animate();
  }, delay);
};

animate();
Run Code Online (Sandbox Code Playgroud)
div {
  width: 100px; …
Run Code Online (Sandbox Code Playgroud)

javascript css animation css3 css-transforms

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

如何防止在重新渲染时自动滚动页面?

我在 React 中遇到了一个奇怪而烦人的问题 - React 在重新渲染时自动滚动页面。

CodeSandbox 上的演示应用程序 - https://codesandbox.io/s/react-scroll-bug-demo-y7u50j?file=/src/App.js

重现步骤:

  • 将页面滚动到列表的中间,因此它的第一个元素不再可见。
  • 等待重新渲染发生。
  • 查看页面自动滚动,以便第一个元素再次可见。

问题 - 当满足这些条件时,React 会自动滚动页面:

  1. 我有一个垂直的项目列表。
  2. 列表重新呈现(项目更改顺序)。
  3. 列表在屏幕上可见,但第一个元素不可见(它位于屏幕上方)。

因此,当项目列表在屏幕上不可见时 - 没有自动滚动问题。另外,当列表顶部低于屏幕顶部时 - 也不会发生自动滚动。

我创建了一个Vanilla JavaScript应用程序来测试它是否是Chrome 特定的行为-没有错误,一切都很好- 使用 Vanilla JS,当屏幕上重新呈现项目列表时不会发生滚动。它只发生在 React 应用程序中,而且非常烦人。

正如您从我的 CodeSandbox 演示中看到的:

  • 任何地方都没有滚动调用,但它仍然会发生。
  • 我没有单击任何内容 - 只需将页面滚动到列表中间,然后就会看到页面自动滚动到顶部。
  • 列表的高度不变。这里不应该发生布局跳转。

预期行为- 重新呈现列表时不会发生滚动。

知道如何防止这种自动滚动吗?

scroll reactjs

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

在移动设备上无法检测到输入(textarea)

为了检测输入按我使用简单的解决方案:

if (e.keyCode == 13) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

在桌面上它适用于任何地方.在平板电脑上,智能手机 - 但是,如果涉及textarea,这不起作用.

由于很少有最新的Chrome更新,这成了一个问题.

因此,当您从移动设备按Enter键时,您只看到新行"\n",但没有执行任何功能.

那么,如何在最新的chrome版本上检测移动设备上的textarea输入?

javascript google-chrome

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

Android Flyme OS 自定义通知图标(非系统应用)

我的魅族 M2 笔记上有 Flyme 5.1.6.0 G 操作系统(未植根)。

当我尝试在我的 android 应用程序中创建新通知时,new NotificationCompat.Builder我会这样做:

.setSmallIcon(icon_small)
.setLargeIcon(largeIcon)
Run Code Online (Sandbox Code Playgroud)

和其他方法一样,但状态栏中的图标不是我设置的。

大多数通知(包括其他应用程序)只会获得“语音气泡”图标。

但!至少有两个例外:

  1. 谷歌浏览器应用
  2. VK(社交网络)应用

他们两个,只是普通应用程序(不是系统应用程序),仍然可以设置他们的自定义图标,如下图所示:

flyme os 自定义通知图标

1)语音气泡图标(大多数应用程序)

2)自定义VK图标(新消息)

3)自定义Chrome图标(关闭所有隐身标签)

所以,这就是为什么我认为可以为 Flyme OS 设置自定义图标通知。我错了吗?

如果没有,我怎么能做同样的事情?VK 和 Chrome 如何设置自定义图标?

notifications icons android android-notifications

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

Swift - 使字符串符合 RandomAccessCollection

根据 Swift 5 文档,String 具有randomElement()复杂性O(1)O(*n*)取决于RandomAccessCollection协议一致性的方法。

randomElement 方法说明

因此,我想知道如何使 String 复杂度的 randomElement() 成为 O(1) 的情况。

我的字符串只是:

let letters = "abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 如何检查我的特定字符串是否符合 RandomAccessCollection?
  2. 如何从字符串创建/删除对 RandomAccessCollection 协议的一致性?

swift

3
推荐指数
2
解决办法
3409
查看次数

为什么在 Go 中对类型使用“冗余”关键字“struct”?

我是 Golang 的忠实粉丝,对 Go 的语法设计非常满意。作为语法哲学的一部分,我们有一个规则如下:如果实际上不需要的话,省略一些东西(关键字、字符等)。

出于这个原因,而不是写多余的冒号:

for ; sum < 1000; {
    sum += sum
}
Run Code Online (Sandbox Code Playgroud)

你允许简单地说:

for sum < 1000 {
    sum += sum
}
Run Code Online (Sandbox Code Playgroud)

注意我们如何省略多余的分号

还有很多其他情况下,语法得到了极大的简化。

但是struct当我们定义类型时呢?

type Person struct {
    name string
}
Run Code Online (Sandbox Code Playgroud)

为什么我们需要把 struct关键字这里?关键字是确定意图,阐明可用选项的确切选择,以便编译器知道如何正确地完成他的工作。

如果我们简单地说:是否会不清楚和模棱两可:

type Person {
    name string
}
Run Code Online (Sandbox Code Playgroud)

??

我相信struct在上面的例子中有一个含义,因为在没有struct关键字的类型定义时编译器会失败。

请向我解释(并提供链接)我们还可以使用什么来代替struct定义某种类型时。

请列出我们想要向编译器澄清的可用选项,即类型名称后大括号中的内容完全是结构的一部分,而不是其他内容(还有什么?)。

谢谢。

syntax struct go

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