解决Safari浏览器使用SVG foreignObject 不生效,错位的问题

文章探讨了Safari浏览器在处理SVGforeignObject时可能出现的渲染异常,其中元素可能会出现在坐标0,0。问题与特定CSS属性如position、webkit-transform-style等有关。解决方案是检测浏览器是否为Safari并移除这些可能导致问题的样式。提供了一个JavaScript函数IS_SAFARI来检测Safari浏览器。
摘要由CSDN通过智能技术生成

解决Safari浏览器使用SVG foreignObject 不生效,错位的问题

foreignObject 在safari下渲染,有可能会遇到以下问题: 节点内的元素被渲染到父 SVG 的坐标 0,0(左上角),这是由于 Safari 中的一个错误,该错误会影响 foreignObject 根据顶部 SVG 而不是外部对象本身来计算渲染位置。某些样式会导致这个问题:

  • position(可以使用 position:fixed 但这会引入溢出问题,比如缩放与移动时出界)
  • webkit-transform-style
  • webkit-backface-visibility
  • transition
  • transform
  • calc 可能无法按预期工作
  • opacity

检查浏览器是否是 Safari,然后删除这些样式,注意 foreignObject 内部所有的样式都不能包含这些样式.

PS: 如何判断浏览器为Safari:

export const IS_SAFARI = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值