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

2022高频前端面试题——CSS篇

通常情况下,浏览器会将一个层内容先绘制进一个位图中,然后再作为纹理(texture)上传到 GPU,只要该层内容不发生改变,就没必要进行重绘(repaint),浏览器会通过重新复合(recomposite...屏幕部分内容需要更新,表现为某些元素外观被改变 单单改变元素外观,肯定不会引起网页重新生成布局,但当浏览器完成重排之后,将会重新绘制受到此次重排影响部分 重排和重绘代价是高昂,它们会破坏用户体验...对于移动端来说,屏幕宽度就那么点,完全没有必要去加载原图浪费带宽。一般图片都用 CDN 加载,可以计算出适配屏幕宽度,然后去请求相应裁剪好图片。...隐藏页面中某个元素方法有哪些? 参考回答: 隐藏类型 屏幕并不是唯一输出机制,比如说屏幕看不见元素(隐藏元素),其中一些依然能够被读屏软件阅读出来(因为读屏软件依赖于可访问性树来阐述)。...为了消除它们之间歧义,我们将其归为三大类: 完全隐藏:元素渲染树中消失,不占据空间。 视觉隐藏:屏幕中不可见,占据空间。 语义隐藏:读屏软件不可读,但正常占据空。

1.4K30

关于RecyclerView你知道不知道都在这了(下)目录正文

回收复用单位是 ViewHolder,至于 Item 移出屏幕是怎样回收,回收到哪里,Item 移进屏幕时是怎样复用,整个流程是先复用再回收,还是先回收再复用,还是两边同时进行等等一系列工作都是交由...这样能达到效果就是:当某个 Item 刚被移出屏幕外,下一步又立马移进屏幕时,此时并不会去触发到 Adapter onBindXXX 调用,也就是说,这一级缓存里 ViewHolder 可直接...这样好处是,当某一行被移出屏幕时,可以将这一行每个卡位都回收起来,供其他行使用,而不至于每一行每次都是重新创建。...对于外层 RecyclerView 来说,它 Item 是每一行 RecyclerView 控件,所以当某一行被移出屏幕时,它仅仅是将这一行 RecyclerView 控件它本身 remove...然后在 runPendingAnimations() 方法中,依次遍历这些集合,将记录动画取出来执行,动画实现方式是通过 View.animate() 方式实现,这种方式动画本质是借助了 ValueAnimator

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

浏览器事件

onmouseout: 鼠标移出窗口时触发。 onmouseover: 鼠标移动到窗口时触发。 onauxclick: 指示在输入设备按下非主按钮时触发,例如鼠标中键。...onmouseenter: 当鼠标指针移动到元素时触发。 onmouseleave: 当鼠标指针移出元素时触发 onmousemove: 鼠标被移动。...框架/图像相关 onabort: 图像加载被中断。 onbeforeunload: 该事件在即将离开页面(刷新或关闭)时触发 onerror: 在加载文档或图像时发生错误。...onhashchange: 该事件在当前URL锚部分发生修改时触发。 onload: 一张页面或一幅图像完成加载。...onratechange: 事件在视频/音频播放速度发送改变时触发。 onseeked: 事件在用户重新定位视频/音频播放位置后触发。

2.3K20

CSS Transitions

---- 子像素渲染 子像素渲染(Sub-pixel rendering)是一种图形渲染技术,通常用于改善文本和图像在计算机屏幕呈现质量。...「子像素定位」: 通常,屏幕每个像素都由红、绿和蓝三个子像素组成,它们颜色可以独立控制。子像素渲染充分利用了这一特性,通过微调文本和图像位置来实现更精确呈现。...子像素渲染在高分辨率显示设备更为明显,而在低分辨率设备可能不太明显或无法有效运用。它通常用于确保文本和图像屏幕最佳呈现。...它开始缓慢然后加速: 正如我们所看到,ease-out适用于屏幕外部进入视图情况。自然而然,ease-in适用于相反情况:将某物移出视口边界。...在这种情况下,当用户将鼠标移出.dropdown-wrapper时,在300毫秒内不会发生任何事情。如果他们在这300毫秒窗口内重新进入元素,过渡就不会发生。

24830

requestAnimationFrame,终结定时器动画时代!

之所以我们能看到动画,一些动画效果,完全时由我们显示器在短时间内不断播放一张张图片,当播放速率过快时,便形成了动画效果,而我们显示器在播放图片时,一般有一个播放频率标准,我们叫做屏幕刷新率,即图像屏幕更新速度...,也即屏幕图像每秒钟出现次数,它单位是赫兹(Hz)。...那是因为人眼睛有视觉停留效应,即前一副画面留在大脑印象还没消失,紧接着后一副画面就跟上来了,这中间只间隔了16.7ms(1000/60≈16.7), 所以会让你误以为屏幕图像是静止不动。...而屏幕给你这种感觉是对,试想一下,如果刷新频率变成1次/秒,屏幕图像就会出现严重闪烁,这样就很容易引起眼睛疲劳、酸痛和头晕目眩等症状。...JS调用栈采用是后进先出规则,当函数执行时候,会被添加到栈顶部,当执行栈执行完成后,就会栈顶移出,直到栈内被清空。

1.4K20

RecycleView三问—腾讯真题

自带了一些布局变化动画效果,也可以通过自定义ItemAnimator类实现自定义动画效果 Recycleview缓存机制更全面,增加两级缓存,还支持自定义缓存逻辑 Recycleview有几级缓存,缓存过程...) mAttachedScrap(屏幕内),用于屏幕内itemview快速重用,不需要重新createView和bindView mCacheViews(屏幕外),保存最近移出屏幕ViewHolder...mRecyclerPool(缓存池),当cacheView满了后或者adapter被更换,将cacheView中移出ViewHolder放到Pool中,放之前会把ViewHolder数据清除掉,所以复用时需要重新...所以完整缓存流程是: 保存缓存流程: 插入或是删除itemView时,先把屏幕ViewHolder保存至AttachedScrap中 滑动屏幕时候,先消失itemview会保存到CacheView...,mRecyclerPool中获取 ——>获取失败,重新创建viewholder——createViewHolder并bindview。

1.2K40

《Motion Design for iOS》(八)

地图面板从一个比1.0倍稍微大一点比例(可能是1.1倍之类)以及0.0透明度开始。然后动画减小到1.0倍以及1.0透明度。它还有一个轻微位置动画来上移一些像素。...记得这个手表界面和它光滑动作么?真的没有什么秘诀,这个动画设计唯一属性就是元素位置。没有比例或者透明度调节,元素仅仅是在屏幕通过改变他们位置来移入移出。...这个旋转数量也是像2D平面旋转一样用弧度来表示,但3D动画另一个关键因素是你想使用多少透视程度。通过改变透视值,你可以有限地描述元素会被放置在视觉屏幕前端多远地方。...这取决于3D变化过程中变形数值。 一个精细3D效果例子是Clear中捏动画。这个视觉效果是任务条目行视觉折了一半,其中每一半都向屏幕里面旋转(在3D空间)。...这类似于Paper中弹起动画:新闻在打开时候使用了一个3D变化来旋转向用户。

52030

AngularDart Material Design 弹出框 顶

注意事项: 弹出窗口关闭和打开会自动延迟以添加动画 利用PopupInterface中定义enforceSpaceConstraints。 如果内容大小太多添加滚动到页面,这将非常有用。...如果内容发生变化并需要重新调整位置,请使用在PopupInterface中也定义trackLayoutChanges。 材质弹出窗口还支持延迟/延迟加载内容。...如果这是true,那么弹出窗口位置将被限制为始终位于视口内而不是移出屏幕外。...与Angular提供程序类似,它支持首选位置嵌套列表。 弹出窗口将展平位置列表并选择第一个适合屏幕位置。 slide String  弹出缩放方向。...visibleChange Stream  弹出窗口visible属性发生更改时触发同步事件(例如,false变为true或true变为false)。

2.4K30

Android卡顿分析

点击 CPU 时间轴任意位置以打开 CPU 性能分析器。 CPU 性能分析器配置菜单中选择 System Trace,然后点击 Record。完成与应用交互后,点击 Stop。...Application:此轨迹显示从缓冲区被应用移出队列到重新回到队列时间。这通常对应于 RenderThread 中轨迹事件。...Frames on display:此轨迹显示相应帧在屏幕时长。 Frame Lifecycle 部分说明了帧缓冲区在呈现流水线不同阶段之间切换方式。...在动画播放期间,它会导致屏幕出现可见闪烁,并且在动画或滚动完成之前,会持续带来额外输入延迟。...image.png 在上图中,Choreographer#doFrame 显示了界面线程何时调用 Choreographer 来协调动画、视图布局、图像绘制和相关进程。

2.3K20

一步步教你用CSS添加SVG过滤器

在本教程中,重点将放在 SVG 过滤器 —— 但不只是将它们应用于 SVG 图像,我将向你展示如何将它们应用于任何常规页面的内容。...之后将项目文件夹 **start ** 拖到代码 IDE 然后打开 index.html 页面。你将会看到一些已经写好页面内容。接下来创建标题部分,这里将包含受 SVG 过滤器影响标题。...创建动画 回到 page.css 文件并添加关键帧,如下所示。这将会把字体大小零垂直宽度扩展到 5.5 垂直宽度。把它应用于标题后,文本会在屏幕放大并被放置到位。...这里过滤器会被用于菜单,这是一个固定菜单,会始终显示在屏幕。...以不同速度移动菜单元素以获得更加流畅效果 剩余菜单元素以不同速度移出来。这使得菜单元素能够在动画早期阶段粘在一起,在这里用了 SVG 滤镜提供斑点液体外观。

2.8K20

用 Python 实现打飞机,让子弹飞吧!

下载好使用素材。 技术实现 初始化 pygame 首先要初始化 pygame ,之后设定一些基本要点,比如窗口大小(尽量避免魔法数字),窗口标题以及背景图像。...这样我们就能对飞机进行判断 这里 move 是我们对飞机移动位移定义常量。 让子弹飞 子弹要沿着发射方向射出去。可以在屏幕一直移动,直到移出屏幕。...我们只要有定义一个子弹对象,让这个对象显示在屏幕就可以。...先定义飞机子弹类,基本和定义 player 一样,获得图片,裁剪图片,设置图片初始位置,在屏幕显示图片 运行结果 下一步就是让飞机子弹跟随飞机。我们需要在 Player 类里面添加方法。...这样我们子弹就会跟随飞机出现。 下一步就是让子弹在屏幕移动。 创建移动方法。 player 飞机就算基本绘制好了 绘制敌机 下一步就是绘制敌机。敌机是屏幕上方移动到屏幕下方。

1.8K31

【译】Activity分割动画如何使用我动画##

在切换不同Activity时,系统级过渡动画是作用于整个Activity,而我想要实现动画效果是将Activity A分割成两部分,然后将他们向外推开,最后呈现Activity B。...这两个Imageview将直接添加到activity所在Window。这样做不仅可以保证Imageview能够处在即将被填充布局之上,而且还可以灵活控制每一个Imageview在屏幕位置。...Y轴移动动画,将每个Imageview移出屏幕,不同只是方向而已。...我使用硬件加速(了解更多有关硬件加速动画,请阅读我最新发布blog)并且在动画结束或者取消后,做了一些清理操作(如,移除硬件图层,把ImageviewWindow窗口移除等等) 如何使用我动画##...下一步## 你可以将它扩展更丰富,比如: 垂直分割 - 让Activity两侧移出。 把Activity分割成更多部分。 做所有你能想到事情。

1.4K20

recycleview优化_recyclerview原理

ArrayList mChangedScrap : 主要用到刷新屏幕itemView数据,它不需要重新layout,notifyItemChanged()或者notifyItemRangeChanged...,它假设所有都改变了,会将每一个ViewHolder设置成无效并且放到缓存池Pool中,如果我们仅是把屏幕第四条itemView移到第六条位置,屏幕所有itemView都会重新layout一遍,...什么时候LayoutManager会RecyclerView分离呢,有两种情况:1)重新setLayoutManager()时,比如淘宝页面查看商品列表,可以线性查看,也可以表格形式查看,2)还有一种是...onViewAttachedFromWindow(): RecyclerViewitem进入屏幕时回调 onViewDetachedFromWindow():RecyclerViewitem移出屏幕时回调...2)每次打开界面都是定位在RecyclerView在屏幕顶端,列表上面的布局都被顶上去了 RecyclerView抢占了焦点,自动滚动导致.

3.7K20

Mac电脑必备屏幕截图软件,Snagit

Snagit是创建高质量屏幕截图,自定义图形或屏幕录制最佳方式。展示您产品,提高参与度并吸引观众注意力。 3.捕获屏幕任何内容 Snagit使您可以更轻松,更直观地捕获屏幕或录制视频。...Snagit屏幕捕获工具可以轻松抓取垂直和水平卷轴,无限滚动网页,长聊天消息以及介于两者之间所有内容。 抓住文字屏幕截图或文件中提取文本,然后快速将其粘贴到另一个文档中进行编辑。...无需重新输入所有文本即可轻松复制信息。 7.屏幕录制 屏幕录像机软件 Snagit屏幕录像机可让您快速录制自己步骤。或者录制视频中抓取单个帧。将您视频文件另存为MPEG-4或动画GIF。...更改屏幕截图中文本字词,字体,颜色和大小,而无需重新设计整个图像。 魔棒工具 使用魔棒工具根据颜色选择图像区域。在整个屏幕截图中快速删除背景或替换对象(如文本或徽标)中颜色。...Snagit邮票 使用专为截图设计贴纸,个性化您图像。直接Snagit获取最新邮票,或在此处下载以前邮票。 图书馆 查找所有过去捕获而不浪费时间挖掘它们。您屏幕截图会自动保存到您库中。

1.8K40

了解 Android 矢量图片格式:`VectorDrawable`

因此,对于固定分辨率位图,我们只了解每个像素颜色,却不理解其中包含内容。然而,矢量图像是通过在抽象大小画布定义一系列形状来描绘图像。 为什么使用矢量图?...矢量资源有三大好处,分别是: 好用 占用资源少 动态 好用 矢量图可以优雅调整大小;这是因为它们将图像绘制在抽象大小画布,你可以放大或缩小画布,然后重新绘制对应尺寸图像。...动态 由于矢量图像描述它们内容并不是将自己”扁平化“为像素,这为动画、交互或动态主题等有趣新可能打开了新大门。将来会写更多关于这方面的文章。 ?...矢量会保持图像结构,所以里面的单个元素属性可以发生改变而被用来制作主题或动画。...对于动画矢量,就无法进行此优化,因为它们属性必然会发生变化,需要重新绘制。 将其与像 PNG 这样只需要解码文件内容位图资源进行比较,这些资源随着时间推移已经经过高度优化。

2.4K30

在React Native中构建启动屏

此外,由于Expo很受欢迎,许多人常常选择使用它,我们也将探讨如何在Expo中构建启动屏幕。 什么是启动画面? 启动画面是用户访问应用程序其余功能之前出现第一个屏幕。...完成后应用将如下图所示 为什么启动画面的图片大小很重要 为移动应用创建启动画面可能会有些棘手,你肯定不希望由于启动画面分辨率不一致在某些设备出现显示问题。例如,安卓设备需求与iOS完全不同。...构建一个React Native启动屏幕 首先,前往Appicon。将你图片拖到提供框中,然后选择4x作为你基础尺寸。...取消选中 Safe Area Layout Guide 选项,点击加号图标 +,在对象搜索输入框中输入“image view”,然后将“image view”拖到 View 画布: 现在我们已经设置好了图像视图...然后打开Android Studio中Android文件夹,打开AVD,并按照下面的方式运行你应用程序。

31410

IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

只要这三张表有变化,都会重新遍历“消息”列表,进行数据更新,然后通知页面刷新。...mCachedViews 默认大小为 2,当 item 刚刚被移出屏幕可视范围时,item 就会被放入 mCachedViews 中,因为用户很可能再重新将 item 移回到屏幕可视范围,所以放入 mCachedViews...图中我们可以看到群聊 1 和群聊 2 已经被移出屏幕,这时候会被放入 mCachedViews 缓存中。...由于之前移出屏幕都是群聊,所以单聊 item 进入时一直没用办法单聊缓存池中拿到可以复用 item,所以一直需要 CreateView 和 BindView。...基本 Android 中透明度动画都会造成过度绘制,所以可以尽量减少使用透明度动画,在 View 上面也尽量不要使用 alpha 属性。具体原理可以参考谷歌官方视频。

1.5K20
领券