首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

​探秘 Web 水印技术

这时候可以考虑使用 SVG,因为 SVG 具有文本和图像双重特性。看上去是文本,然而在很多场景可以当做图片使用。...可见水印大都是基于 DOM ,找到这个 DOM 节点,通过浏览器插件、抓包工具等页面上注入一段 JavaScript 或者 CSS 代码对其进行篡改或删除并不困难。...其中,MutationObserver 就可以用来监听 DOM 变动,DOM 任何变动,比如节点增减、属性变动、文本内容变动,通过该 API 都可以得到通知。...频域水印 将数字图像用一个矩阵来表示,是图像空间域表示方法,LSB 就是图像空间域隐藏信息,鲁棒性较差。而在图像信号频域(变换域)中隐藏信息要比空间域中隐藏信息具有更好鲁棒性。...频域中隐藏信息就是傅里叶变换在数字图像处理领域一个典型应用场景。

2K22
您找到你想要的搜索结果了吗?
是的
没有找到

做了七年前端开发,我最近才意识到可访问性必要......

我们中一些人仍然使用带 class div 作为这些特定布局元素为什么?因为我们不知道。...我们这样做不是任何人错,除了少数,这个领域大部分人都是被推到这个坑里谋生,多数又在坑里一遍又一遍地做着同样事情,到最后还在想我到底在做什么。 直到有必要改变。...—— 对于屏幕阅读器) 4 可访问图标按钮 首先,设计中有按钮时,应使用元素,不要使用等其他元素,再将样式设置为按钮样子,我知道我们这样做已经很久了,但是时候改变了。...这里也有一些注意事项: 不设置按钮样式以及设置按钮样式理想方法 针对于没有任何文本、只有图片按钮,可遵循以下三个步骤中任何一个: 使用隐藏来指明按钮标签 上使用...7 描述性信息图 当 SVG 用于图表等信息图或其它类型数据表示时,通常不会为可访问用户提供任何信息。为了方便他们,最好方式是提供屏幕阅读器能够读取到信息图文本描述。

1.7K30

dom-to-image库是如何将html转换成图片

,否则会创建一个span标签替换掉原节点,并把原节点添加到该span标签里,可以猜测这个主要是处理文本节点,毕竟应该没有人会传其他类型节点进行转换了。...shadow DOM是一种封装技术,可以将标记结构、样式和行为隐藏起来,比如我们熟悉video标签,我们看到只是一个video标签,但实际上它里面有很多我们看不到元素这个特性一般会和Web components...并且会给最后一个节点添加一个零宽字符文本,并返回这个节点。 ​...到这里,节点克隆部分就结束了,不得不说,还是有点复杂,很多操作其实我们也没有看懂为什么要这么做,开发一个库就是这样,要处理很多边界和异常情况,这个只有遇到了才知道为什么。...恢复包装元素 最开始【检查和包装元素】步骤会替换掉节点类型不为1节点,这一步就是用来恢复这个操作: function restoreWrappers(result) { while (restorations.length

64510

Web思维导图实现技术点分析(附完整源码)

技术选型 这种图形类绘制一般有两种选择:svg和canvas,因为思维导图主要是节点与线连接,使用与html比较接近svg比较容易操作,svg类库试用了svgjs和snap后,有些需求snap...g元素来作为节点容器,文本就创建一个text节点,需要边框的话就再创建一个rect节点节点最终大小就是文本节点大小再加上内边距,比如我们要渲染一个带边框只有文本节点: import {...,为什么不在计算完一个节点childrenAreaHeight后立即就计算其子节点top呢?...创建节点每个信息元素时都会给它应用相关样式,比如之前提到文本元素和边框元素: class Node { // 创建文本节点 createTextNode() { let node...g元素来包裹,相关变换效果也是应用在这个元素上,我们思路是先去除它放大缩小效果,这样能获取到它原本宽高,然后把画布也就是svg元素调整成这个宽高,然后再想办法把g元素移动到svg位置上和它重合

2.9K61

ChatGPT协助我完成博客代码块添加复制代码和显示代码语言功能

灵魂拷问 为什么要创建textarea,可以不创建吗 JavaScript中,要实现复制操作,需要将文本内容放入剪贴板中,而HTML中没有提供直接将文本放入剪贴板API,因此我们需要使用一个中间元素来完成复制操作...元素可以作为中间元素,因为它具有可编辑文本区域特性,可以将文本放入其中,然后通过选中文本并执行复制操作,将其放入剪贴板中。...PS:能问出这个问题很明显我就不是搞前端,但是这也就是为什么我觉得作为一个对前端一知半解的人也能做出一个完整项目的原因,那就是多发问,多思考。...那这个创建元素会显示出来吗 实现复制操作时,创建元素并不需要显示页面上,因此需要通过CSS样式将其隐藏起来。...由于.codehilite是有多个,所以按照这个逻辑,每次复制到都是最后一个,请解决问题 如果你页面中有多个 .codehilite 元素,并且你希望每个代码块都有自己复制按钮,那么可以对每个

1.4K10

初窥 SVG Path 动画

本文讨论主题是 SVG Path 动画(路径动画)。之所以要讨论这个话题,是因为项目中有要求用到它。所谓 SVG Path 动画,就是让图形有像人实时绘制一样动画效果,就比如下面这种: 1.... CSS 中,你如果设置一个块级元素 margin-left: -100%,很可能你屏幕中就看不到它了。其实 stroke-dashoffset 表现也和这个差不多,用于定义“偏移”。...通过控制 stroke-dashoffset 属性值,我们就控制了这个路径展示和隐藏,再配合 CSS3 animation 动画,就能够完美的实现绘制动画。 3....这是补充内容。一开始我看到 path 元素 d 值,我是崩溃,这玩意是啥啊。我怎么才能得到这个值呢? 首先,你得有一个 SVG 文件,怎么制作 SVG 文件,这个自己 Google 吧。...获得 SVG 文件之后,使用文本编辑器打开它,你会看到里面有你所需要 svg 标签,也有你需要 path 元素了,你所需要做,可能就是拷贝,然后适当修改一下,最后再加上动画即可。

2.7K60

初窥 SVG Path 动画

之所以要讨论这个话题,是因为项目中有要求用到它。所谓 SVG Path 动画,就是让图形有像人实时绘制一样动画效果,就比如下面这种: ? 1.... CSS 中,你如果设置一个块级元素 margin-left: -100%,很可能你屏幕中就看不到它了。其实 stroke-dashoffset 表现也和这个差不多,用于定义“偏移”。...通过控制 stroke-dashoffset 属性值,我们就控制了这个路径展示和隐藏,再配合 CSS3 animation 动画,就能够完美的实现绘制动画。 3....这是补充内容。一开始我看到 path 元素 d 值,我是崩溃,这玩意是啥啊。我怎么才能得到这个值呢? 首先,你得有一个 SVG 文件,怎么制作 SVG 文件,这个自己 Google 吧。...获得 SVG 文件之后,使用文本编辑器打开它,你会看到里面有你所需要 svg 标签,也有你需要 path 元素了,你所需要做,可能就是拷贝,然后适当修改一下,最后再加上动画即可。 ?

1.7K20

SVG之旅:SVG图层和渲染顺序

操作步骤很简单,如下所示: 这个时候,你可以通过文本编辑软件打开导出来文件。...同样先用制图软件来操作一下: 制图软件中有两个层和,事实下每个图层中又有三个层: 用同样方法,将上面的图导出SVG文件,来看对应SVG代码: 从代码中可以看出,如果一层里有多个元素时,SVG中会用元素来表示图形...SVG渲染顺序 从上面的代码中可以看出,文本编辑器里编写SVG代码就可以绘制出所需要图形。那么SVG中绘制过程有自己基本原则: 解析顺序和绘制顺序一致,都要遵守XML中元素位置排列。...SVG元素XML中有固定排列顺序,浏览器渲染时会遵守这个顺序,绘制时也同样会遵守这个顺序。...也就是说先出现元素会出现在绘制底层,而后出现元素会绘制顶层,如果元素位置有重叠,则会现后绘制元素会盖住先出现元素节点会继承父节点一些属性(这个和CSS属性有点类似),比如和等 整个

6.5K60

Web 隐藏技术:几中隐藏 Web 中元素方法及优缺点

例如,一个按钮应该在移动中可见,而在桌面视口中隐藏。 或者,移动设备上隐藏但要在桌面上显示导航元素隐藏元素时有三种不同状态: 元素完全隐藏并从文档流中删除。...那么,你可能会问为什么不使用display: none呢?这是个好问题。当通过其hidden属性调用图像选择器时,我们可以确定即使CSS因为某种原因没有加载,元素也会被隐藏。...考虑下面的示例,其中有一个具有以下结构按钮: Like 我们目标是以可访问方式隐藏文本。...菜单动画-好例子 为了修正这个错误,我们需要使用visibility: hidden作为导航菜单。这将确保菜单是隐藏视觉和屏幕阅读器。

5K30

重新认识下网页水印

做水印 通过svg样式来控制水印样式,再将svg转换成base64背景图 const svgStr = `<svg xmlns="http://www.w3.org/2000/svg" width...水印 使用customElements自定义个一个标签(可以使用其他任意标签,不过注意shadow DOM会使起同级元素不显示。)...可以像shadow DOM写入style样式和水印节点(可以使用背景或者div形式) shadow DOM内部实现样式隔离不用担心写入style影响页面其他元素样式,这个特性微前端实现中也被广泛使用...ArrayBuffer对比,存在水印像素位置(水印画布透明度不为0)修改图片画布奇偶,这样通过上面指定色值和奇偶去解码时,修改文本像素就会被显示出来; const encode = (ctx,...(变换域)中隐藏信息要比空间域(上面得到像素颜色ArrayBuffer)中隐藏信息具有更好防攻击性。

21140

干货 | 学习XSS从入门到熟悉

4.外部元素(Foreign elements),例如MathML命名空间或者SVG命名空间元素。外部元素可以容纳文本、字符引用、CDATA段、其他元素和注释。...另外还有一点要注意:我们从上面HTML五类元素中还发现有一个原始文本元素这个标签内容纳文本,所以浏览器解析到这个标签后,里面内容中HTML编码并不会被认为是HTML实体引用...:XSS一个黑魔法 我们在上文HTML编码那里最后留了一个坑,即HTML五类元素中,像 、 这样原始文本元素这个标签内容纳文本,所以浏览器解析到这个标签后,里面内容中.../script>alert(1)alert(1) image-20210202200455541 这是为什么呢?...是因为 标签属于HTML五大元素外部元素,可以容纳文本、字符引用、CDATA段、其他元素和注释,也就是说解析到 标签时,浏览器就开始使用一套新标准开始解析后面的内容,直到碰到闭合标签

3.6K11

我让虚拟DOMdiff算法过程动起来了

children, // 子元素 text, // 文本节点文本 el, // 真实dom key, data } } 我们输入VNode列表数据会使用...但是这样还是不够,因为每个旧VNode是有对应真实DOM元素,但是我们输入只是一个普通json数据,所以模板还需要新增一个列表,作为旧VNode列表关联节点这个列表只要提供节点引用即可...VNode列表是作为一个节点节点,这是因为只有当比较两个节点都存在非文本节点节点时才需要使用diff算法来高效更新他们节点,当patch函数运行完后你可以打开控制台查看隐藏DOM列表...,会发现是和新VNode列表保持一致,那么你可能要问,为什么不直接用这个列表来作为真实DOM列表呢,还要自己额外创建一个actNodeList列表,其实是可以,但是diff算法过程中是使用insertBefore...到这里效果如下: 图片 接下来我们先把指针搞出来,我们创建一个处理函数对象,这个对象上会挂载一些方法,用于diff算法过程中调用,函数中更新相应变量。

88820

大厂前端面试考什么?5

Canvas和SVG区别(1)SVGSVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言XML描述2D图形语言,SVG基于XML就意味着SVG DOM中每个元素都是可用... SVG 中,每个被绘制图形均被视为对象。如果 SVG 对象属性发生变化,那么浏览器能够自动重现图形。...单行、多行文本溢出隐藏单行文本溢出overflow: hidden; // 溢出隐藏text-overflow: ellipsis; // 溢出用省略号显示white-space...、capitalize这三个)color:文本颜色元素可见性visibility:控制元素显示隐藏列表布局属性list-style:列表风格,包括list-style-type、list-style-image...什么是物理像素,逻辑像素和像素密度,为什么移动端开发时需要用到@3x, @2x这种图片?

94220

面试官:CSS 面试题集锦

有选择器:div.ready #wrapper > .bg-red 先把所有元素 class 中有 bg-red 元素拿出来组成一个集合, 然后上一层,对每一个集合中元素, 如果元素 parent...再向上,从这个元素元素开始向上找,没有找到一个 tagName 为 div 且 class 中有 ready 元素,就把原来元素从集合中删去。...至此这个选择器匹配结束,所有还在集合中元素满足。 大体就是这样,不过浏览器还会有一些奇怪优化。 注意: 1、为什么从后往前匹配因为效率和文档流解析方向。...关于文档流解析方向,是因为现在 CSS,一个元素只要确定了这个元素文档流之前出现过所有元素,就能确定他匹配情况; 应用在即使 html 没有载入完成,浏览器也能根据已经载入这一部分信息完全确定出现过元素属性...自适应暴露一个问题,如果屏幕太小,即使网页能够根据屏幕大小进行适配,但是会感觉小屏幕上查看内容太过拥挤。响应式正是针对这个问题衍生出概念。

3.3K30

前端面试题-每日练习(3)

SVG 严格遵从 XML 语法,并用文本格式描述性语言来描述图像内容,因此是一种和图像分辨率无关矢量图形格式。SVG 于 2003 年 1 月 14 日成为 W3C 推荐标准。...i内容展示为斜体, em 表示强调文本; 6.实现不使用 border 画出1px高线,不同浏览器标准模式与怪异模式下都能保持一致效果?...b、表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框、和文件上传框等。...(7)浏览器兼容问题七:透明度兼容CSS设置 一般ie中用是filter:alpha(opacity=0);这个属性来设置div或者是块级元素透明度,而在firefox中,一般就是直接使用opacity...作用:利用rem可以实现简单响应式布局,可以利用html元素中字体大小与屏幕间比值设置font-size值实现当屏幕分辨率变化时让元素也变化,以前天猫tmall就使用这种办法 em 文本相对长度单位

13420

104道 CSS 面试题,助你查漏补缺(下)

“幽灵空白节点”是内联盒模型中非常重要一个概念,具体指的是:HTML5文档声明中,内联元素所有解析和渲染表现就如同 每个行框盒子前面有一个“空白节点”一样。...这个“空白节点”永远透明,不占据任何宽度,看不见也无法通过脚本获取,就好像幽灵 一样,但又确确实实地存在,表现如同文本节点一样,因此,我称之为“幽灵空白节点”。 73.什么是替换元素?...(2)HTML中有两个标签是默认可以产生滚动条,一个是根元素,另一个是文本域。 (3)滚动条会占用容器可用宽度或高度。...》[73]《CSS 多行文本溢出省略显示》[74] 98.常见元素隐藏方式?...: #97如何实现单行多行文本溢出省略 [47] 98.常见元素隐藏方式?: #98常见元素隐藏方式 [48] 99.css 实现上下固定中间自适应布局?

2.3K30

《使用D3设计交互式图表》简读笔记|可视化系列31

像面粉可以做出各种糕点而不是直接提供面条;•擅长矢量图形,缩放不损失图形精度,不擅长位图和瓦片,不擅长探索型可视化;•作为HTML文档,不隐藏原始数据,如果不想共享数据,为什么还要将它们可视化呢?...这段d3脚本代码作用是htmlbody元素里加入一个文本段落(),并把文本内容hello world!添加给这个段落。...SVG(Scalable Vector Graphics,可伸缩矢量图形)是一种基于XML标签来表示图形文本SVG 元素可以理解为能在上面绘制各种形状画布。...)、circle(圆形)、ellipse(椭圆)、line(线段)、polyline(折线)、polygon(多边形)和功能强大path(路径),SVG里也可以添加text(文本)元素。...我们选择了需要操作svg元素后,需要添加rect(矩形)等图形,用append()方法添加元素,insert()方法在所选元素前添加一个元素。用remove()方法DOM中删除元素

3.7K20

【面试题】104道 CSS 面试题,助你查漏补缺(下)

“幽灵空白节点”是内联盒模型中非常重要一个概念,具体指的是:HTML5文档声明中,内联元素所有解析和渲染表现就如同 每个行框盒子前面有一个“空白节点”一样。...这个“空白节点”永远透明,不占据任何宽度,看不见也无法通过脚本获取,就好像幽灵 一样,但又确确实实地存在,表现如同文本节点一样,因此,我称之为“幽灵空白节点”。 73.什么是替换元素?...(2)HTML中有两个标签是默认可以产生滚动条,一个是根元素,另一个是文本域。 (3)滚动条会占用容器可用宽度或高度。...》[73]《CSS 多行文本溢出省略显示》[74] 98.常见元素隐藏方式?...: #97如何实现单行多行文本溢出省略 [47] 98.常见元素隐藏方式?: #98常见元素隐藏方式 [48] 99.css 实现上下固定中间自适应布局?

2.4K40
领券