昨天才把html节点中的图片转成base格式的,今天就发现一个用户体验的问题;那么是啥呢?就是我从左侧的树形菜单中拖拽节点的时候(鼠标按下也是同样问题),发现节点的图片区域那里会出现一个边框,持续时间不是很长,就几毫秒的时间,但是当你连续拖拽几个不同节点的时候就会发现这个边框竟然又消失不见了,如果此时重新进入页面,再开始拖动节点,图片的边框又出现了。

问题排查

  • 是否是官方节点自带的边框?如果是,配置项是什么?
  • 图片的默认边框是否被清除?还是外围元素的边框导致?
  • 图片的加载时机?
  • 是否是转base64的问题,毕竟在这之前没有这个情况发生……

带着这些问题,第一时间去翻阅了官方文档,发现没有和这个问题相关的配置项,即使有设置了也不管用;然后就把问题抛到了交流群里面,发现压根没人回答……,那就只能开始第二个方案了:把图片的默认边框都去除掉,比如border,box-shadow,outline这些属性都去除掉了,发现还是没用;好吧,开始第三套方案:使用new Image处理图片的加载时机问题,嗯!不出意外的话,这个方法还是不行

定位问题

经过上面四个方案的尝试后,我大概知道了问题的源头在哪边了,那就是我自定义html节点中图片地址赋值的地方,由于DataUri.imageToDataUri 这个方法是个异步执行的,所以才会导致在渲染的时候会出现短暂的视觉差

解决问题

  • 先给图片赋值个普通的地址(非base64的地址)
  • DataUri.imageToDataUri的回调中再把图片的src替换成base64的
    const container_img = document.createElement('img');
    container_img.setAttribute('class', 'cu-container-img');
    container_img.setAttribute('alt', '节点ico');
    container_img.style.cursor = 'pointer';
    // 先用远程图片地址给图片的src赋值,然后再重新赋值成base64的格式;这么做的目的就是解决节点拖拽到画布上会出现短暂的边框闪动问题,如果你要复现这个边框,可以把下面这一行代码注掉(不是必现)
    container_img.src = img;
    // 把图片转成base64方便存储到后端
    DataUri.imageToDataUri(img, function (nu, url) {
    // 第一个参数无效,用的只是第二个参数,但是第一个参数不写由不行
    container_img.src = url;
    });

antv x6 神奇的图片边框的更多相关文章

  1. html a标签 图片边框和点击后虚线框的有关问题

    html a标签 图片边框和点击后虚线框的问题 一直在在chrome上开发自己的项目,今天上ie和firefix一看,真丑,a标签在使用图片时,多加了蓝色的边框,并且点击后所有a标签都会出现一个虚线框 ...

  2. CSS3图片边框

    CSS3图片边框 顾名思义就是为边框应用背景图片,它和我们常用的background属性比较相似,语法规则:

  3. css3神奇的圆角边框、阴影框及其图片边框

    css3圆角,建议IE10以上 如果border-radius 单位是百分比,则参考为自身宽高,因此当宽高不一致时,圆角为不规则形状 如果border-radius 为50%,则为椭圆:当宽高一致时, ...

  4. 制作图片边框:《CSS3 Border-image》

    一个边框图片border-image

  5. css2图片边框

    用父元素的背景作为边框图片 父元素的背景既可以是不平铺的成品边框图片,也可以是平铺的图片,填充子元素和父元素之间的padding 然后给子元素设置背景色或背景图覆盖掉父元素的背景图.

  6. css边框样式、边框配色、边框阴影、边框圆角、图片边框

     边框样式 点线式边框 破折线式边框 直线式边框 双线式边框 槽线式边框 脊线式边框 内嵌效果的边框 突起效果的边框 <div style="width: 300px; height: ...

  7. css3鼠标悬停图片边框线条动画特效

    css3鼠标经过内容区时,边框线条特效效果制作.   html: <div class="strength grWidth hidden"> <div class ...

  8. jQuery/CSS3 图片边框线条变换动画

    在线演示 本地下载

  9. CSS魔法堂:重拾Border之——图片作边框

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  10. 从零开始学 Web 之 CSS3(四)边框图片,过渡

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

随机推荐

  1. Docker部署NextCloud

    docker run -d -p 80:80 nextcloud 数据库可以选Mysql或者Pg 下载客户端 https://nextcloud.com/

  2. C# Set集合

    包含不重复元素的集合称为"集(set)"..NET Framework包含两个集HashSet<T>和SortedSet<T>,它们都实现ISet<T ...

  3. 不使用setTimeout的延迟执行

    function sleep(ms){ var time = new Date(); time.setTime(time.getTime() + ms); while(new Date().getTi ...

  4. Python项目案例开发从入门到实战-1.4Python图形界面设计

    Python提供了多个图形开发界面的库,常用的Python GUI库如下. -Tkinter:Python内置模块 -wxPython -Jython 1.4.1创建Windows窗口 import ...

  5. SpringBoot之基于idea搭建ssm(maven)

    此次目标为搭建一个简单的基于springboot的ssm(spring + springmvc + mybatis)的maven项目,使用的数据库为mysql. 最终项目目录结构 创建过程 1.项目创 ...

  6. Win32窗口设置为透明

    可以使用以下方法将Win32窗口设置为透明: 定义窗口类时,在WNDCLASSEX结构体中设置hbrBackground成员为NULL. 在窗口创建时,使用WS_EX_LAYERED风格和SetLay ...

  7. Nacos 实现 AP+CP原理[Raft 算法 NO]

    来源于网络 一.什么是 Raft算法 Raft 适用于一个管理日志一致性的协议,相比于 Paxos 协议 Raft 更易于理解和去实现它.为了提高理解性,Raft 将一致性算法分为了几个部分,包括领导 ...

  8. 【牛客小白月赛69】题解与分析A-F【蛋挞】【玩具】【开题顺序】【旅游】【等腰三角形(easy)】【等腰三角形(hard)】

    比赛传送门:https://ac.nowcoder.com/acm/contest/52441 感觉整体难度有点偏大. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通 ...

  9. 8.XSS和CSRF漏洞

    XSS和CSRF漏洞 目录 XSS和CSRF漏洞 XSS漏洞介绍 XSS分类 利用XSS漏洞如何实行攻击 利用XSS盗取用户的Cookie 利用XSS实行钓鱼 利用XSS进行键盘监控 CSRF漏洞介绍 ...

  10. 我的合肥 .NET 俱乐部线下活动之旅

    一:背景 我是一个性格比较内向的人,天然抵触这种线下面对面的大型活动,我害怕上台之后紧张到语无伦次(有过类似经历),越语无伦次又会让我更紧张,刚好谋得程序员这种工作又特别适合我这种性格的人,所以没有刻 ...