小编Bro*_*ell的帖子

我如何解决Safari错误,即使隐藏溢出,也允许过滤器逃脱界限?

我正在尝试使用CSS过滤器来模糊图像.在所有浏览器中,模糊滤镜会导致模糊超出图像范围,无论您将模糊设置为(预期)的值.但是我想要定义边缘(并且图像有一个框阴影),所以我用另一个overflow设置为的div包装图像hidden.这适用于所有浏览器.

但是,由于某些特定于应用程序的约束,我需要在加载时使用JavaScript更新包装器的大小并调整大小.这适用于除Safari之外的所有浏览器.随机更改包装元素的大小会触发绘制错误,其中过滤器开始越过包装器的边界.它并不总是如此,但似乎在MobileSafari上和/或基于DOM的大小增加了可能性.

这是一个小演示的小提琴.使用Safari,重复调整窗口大小,您将触发错误.有时它会重新粉碎并自我修复,有时它不会.(使用Chrome或Firefox,它会正常工作.)

(转义包装器的模糊的屏幕截图.)

应该注意的是,与这个小提琴不同,在应用程序中我只是在它们改变时设置新的宽度和高度,并且即使在调整大小事件期间没有设置宽度和高度,Safari仍然在模糊转义和不转义之间波动. .

我尝试过的事情(没有奏效):

  • 延迟包装器宽度的计算和设置,直到使用clearTimeout/ 完成resize事件setTimeout
  • overflow: hidden更改大小后,使用JavaScript 取消设置包装器和图像
  • 调用window.getComputedStyle(wrapper)(和图像上,以及父元素)
  • 各种各样的恶作剧将包装推广到复合元素(例如translateZ(0)变换),这确实会阻止一些模糊溢出,但还不够.(屏幕截图.)设置计时器以禁用转换只会将页面返回到完全模糊转义.
  • white-space: nowrap在包装器上设置
  • 通过设置宽度和高度document.styleSheets[x].cssRules[x].style.setProperty()而不是object.style.width/height
  • 将像素值舍入为2/5/10的倍数(是的,我很绝望)

我现在很困惑,非常感谢你提供的任何帮助.谢谢!

html javascript css safari webkit

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

SwiftUI NavigationLink 选定的值重置为零

我有一个 SwiftUI watchOS 应用程序,它使用NavigationLinks 在几个视图之间进行路由。我正在使用NavigationLink'stagselection参数来控制哪个视图可见。在我的真实应用程序中,当用户从复杂功能启动应用程序时,我希望能够导航回索引 0 处的视图。但是,每当$selection值不是 nil 或 0 并且$selection从我的视图模型设置为 0 时,索引 0 处的视图会短暂显示,然后由 SwiftUI$selection重置nil(两次),而不会导致任何用户交互。

我创建了一个示例应用程序来演示此行为,并带有一个近似于用户从复杂功能启动的计时器。我将选择值以外的所有内容都设为常量,以尝试消除差异作为可能的来源。

这是一个演示发生了什么的 gif:

演示此错误的屏幕录制

import SwiftUI

struct Item: Identifiable {
    let id: Int
    let text: String
}

class ContentViewModel: ObservableObject {
    @Published public var selectedIndex: Int? {
        didSet {
            print("ContentViewModel selectedIndex = \(String(describing: selectedIndex))")
        }
    }
    public let items: [Item] = [
        Item(id: 0, text: "Zero"),
        Item(id: 1, text: …
Run Code Online (Sandbox Code Playgroud)

ios swift watchos swiftui

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

标签 统计

css ×1

html ×1

ios ×1

javascript ×1

safari ×1

swift ×1

swiftui ×1

watchos ×1

webkit ×1