首页
学习
活动
专区
圈层
工具
发布

高性能Web动画和渲染原理系列(5)合成层的生成条件和陷阱

: 具有CSS3D属性或CSS透视效果 包含的RenderObject节点表示的是使用硬件加速的视频解码技术的HTML5video元素 包含的RenderObject节点包含使用了硬件加速的Canvas2D...或WebGL技术 使用了CSS透明效果或CSS变形动画 使用了硬件加速的CSS Filters技术(有的文献中表示filters属性并没有提升为合成层的效果,推测只有一部分filters滤镜效果需要使用硬件加速...;">div> 三个div盒子堆叠在一起,可以看到它们都绘制在同一个层上(这里的层并不与RenderLayer对应,毕竟它只是一个中间态的树结构): ?...此时如果为最底下的红色矩形添加transform:translateZ(0)属性将其提升为合成层后,为了保证正确的堆叠关系,蓝色和绿色的矩形就会被提升为合成层,代码如下: div style="transform...从上图中的细节信息中可以看到,提升的原因是layerFotSquashingContent,也就是为了保证堆叠顺序的正确,用一个单独的合成层来将受到影响的元素收集在一起,既保证堆叠顺序,也避免在期望之外生成过多的合成层

1.4K10

30 个案例教你用纯 CSS 实现常见的几何图形

overflow 实现 假设要绘制这个三角形: 先试着把他的另一半补齐: 可以想象成这其实是由两个盒子上下堆叠而成的,下面的是绿色盒子,上面的是蓝色盒子,这个蓝色盒子倾斜摆放,并且超出绿色盒子的部分被隐藏了...、高度极小的矩形自上而下堆叠在一起。...我们改用两个半圆实现。 两个半圆实现: 一开始两个半圆是叠放在一起的,通过让上面的半圆绕着圆心旋转,就可以形成圆心角大于 180 度的扇形。...现在这个图形已经包含梯形了,那么我们接下来的事情就很简单了,只需要把没用到的分块设置成透明色即可,因此最终代码如下: HTML: div class="shape">div> CSS: .delta...八角星 用两个矩形来做即可,其中一个矩形绕中心旋转 45 度就可以形成八角星。

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

    关于CSS3中transform变换的小坑

    > div> 如上代码块,在一个div盒子中有两个组成部分,一个是span,一个是div。...Google了一下,在http://www.html-js.com/article/2518 《transform你不知道的那些事》中,我看到下面的一些文字: 任何非none的transform值都会导致一个堆叠上下文...这个CSS3中transform导致了一个堆叠上下文的创建,导致.icon所在的上下文环境在.buttion的上面,遮挡了.button的区域,因此出现了上面的问题。...解决方法2,是通过position:relative产生一个新的堆叠上下文,让.button在.icon经过transform后的区域的上面。...产生一个新的堆叠上下文的方法,也是同一个博主的文章http://www.html-js.com/article/2523 《W3C奇技淫巧之堆叠上下文》。 到现在,我基本解决了这个小坑。

    80020

    【CSS3进阶】酷炫的3D旋转透视

    当我们指定一个容器的 transform-style 的属性值为 preserve-3d 时,容器的后代元素便会具有 3D 效果,这样说有点抽象,也就是当前父容器设置了 preserve-3d 值后,它的子元素就可以相对于父元素所在的平面...上面的图是示意有 6 个面,当然我们要把 6 个正方形 div 设置为绝对定位,重叠叠在一起,那么应该是这样的,只能看到一个面: ?...算好旋转角度和偏移距离,最后上面的 6 个面就可以完美拼成一个立方体咯!为了效果更好,我给每个面增加一些透明度,最后得到一个完整的立方体: ?...CSS3 制作一个三角形 div),注意 4 个三角形应该是重叠在一起的,然后将其中三个分别沿着三条边的中心点旋转 70.5 度(正四面体临面夹角),就可以得到一个正四面体。...,也就是让每张图片绕 Y 轴旋转固定角度依次散开:(下面的图为示意效果,我调整了一下角度和透明度) ?

    2.6K40

    谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少

    ) 所以我们的两个 div 的比较是基于上面所列出来的 4 和 5 。...5 的 stacking level 更高,所以叠得更高。 不过!不过!不过!重点来了,请注意,上面的比较是基于两个 div 都没有形成 堆叠上下文 这个为基础的。...会看到,inline-block 的 div 不再一定叠在 float 的 div 之上,而是和 HTML 代码中 DOM 的堆放顺序有关,后添加的 div 会 叠在先添加的 div 之上。...这里的关键点在于,添加的 opacity:0.9 这个让两个 div 都生成了 stacking context(堆叠上下文) 的概念。..."isolate"的元素, position: fixed 在 will-change 中指定了任意 CSS 属性,即便你没有直接指定这些属性的值 -webkit-overflow-scrolling

    91950

    fixed失效,css堆叠上下文问题

    参考张鑫旭老师的一篇博文深入理解CSS中的层叠上下文和层叠顺序[2],参照张鑫旭老师的一张图,大概就是这样 就是我们看到网页上显示是二维的,实际上还有三维,就是一个类似控制transform:translateZ...就显示出来了 所以你现在明白了层叠上下文了哈,简单的说,网页的所有元素可以像盖棉被一样,一层一层的往上盖,最新的叠在最上面 我们思考下,从浏览器默认的BFC结构到我们想要看到的堆叠上下文的效果,这中间我们主要做了哪些事情...1、设置了浮动【破坏了文档流】 2、设置.leavel-2的外边距margin-left:-100px【改变了元素的默认排列位置】 所以产生堆叠上下文,必须满足两个条件,一个是元素文档流被破坏,二是元素位置发生变化...因为外层父元素设置了transfrom产生了堆叠上下文,而它子元素又想逃脱出去,儿子想造反给自己设置fixed产生一个堆叠上下文,对不起,你必须听老子的,所以子元素设置的fixed就失效了,你还是得跟着老子走...div class="inner-content">div> div> div> 没错,你看到的就是,子级元素已经挣脱束缚了,所以我不受被包裹元素tranform的影响了。

    1K20

    三分钟学会用 js + css3 打造酷炫3D相册

    为此,我也特别准备了一个案例 中秋主题的3D旋转相册 Paste_Image.png 如图,这是通过Javascript和css3来实现的。...整个案例只有不到80行代码,我希望通过这个案例,让正处于迷茫期的js初学者感受到学习的乐趣。我会尽可能讲得详细,不需要你对css和js有多么高深的理解,你也可以跟着一步步做出来。...如果你还是觉得有难度,没关系,我们拿其中一张图片来举例,让它沿着它自己的Z轴向外移动。然后你就明白了。...[](img/8.jpg) div>div> div> 其实,它就是一个放在photos里面的div。我们通过定位布局和css3特性就可以实现了。...从效果来看,相册在旋转的过程中,会有一定的偏移,虽然我个人觉得这样的效果也挺有趣的,不过,如果你不希望它的位置发生偏移的话,只需要在photos外边在逃一层div,然后把景深移到外层div就ok啦。

    5.1K60

    移动换H5 の 纯CSS3实现大转盘抽奖布局 by FungLeo

    我们需要两个素材,一个是下面的转盘背景图片,一个是指针图片.图片素材如下: 转盘背景 转盘指针 上面的两张素材被微博图床自动转换为了JPG图片.我们在做的时候,可以管设计要两个类似的设计...结构没什么复杂的.下面我们来写css. sass代码 注意: 1. 本文CSS部分使用SASS撰写.如果你对SASS不了解,请参考我的博文《CSS预编译技术之SASS学习经验小结》, 2....本文默认引用我之前写的resert.scss和mixin.scss两个文件.一个是浏览器重置代码,一个是常用代码片混入代码.请在此获取《移动端系列博文基础reset.scss和mixin.scss》...为了便于大家理解,我将布局和表现,拆开来写.实际项目中,应该是整合在一起的.....它的情况,如下图所示: 布局示例图 如上图所示,我们的8个.prize就都是那个黑色半透明的区域.全部定位到这里了.重叠显示.

    3.1K20

    ❤️创意网页:超简单好看的HTML5七夕情人节表白网页(表白直接拿去用) HTML+CSS+JS

    本篇博客将介绍如何使用HTML、CSS和JavaScript创建一个令人惊喜的爱心表白网页。...,小白看到这里就可以结束了哈,不用再往下看了哈) 这里必须说一下,代码不难,会使用HTML,CSS,JS就行,小白看也看不明白,所以以下内容选看哈,写在最后就是为了不影响小白们的观看体验哈(●'◡'●...这段代码实现了一个带有下雪背景效果和爱心的网页,同时显示了两个倒计时效果,一个是从指定日期开始计算的时间流逝,另一个是每秒钟刷新的下雪效果。...通过CSS和JavaScript的配合,实现了页面的布局、样式和动态效果。...✨结语 能看到这里的就说明,你一定是一个十分有耐心且浪漫的人,最后的最后祝愿你开开心心,快快乐乐,早日脱单,就不用再为如何表白发愁啦(●'◡'●)

    5.4K20

    高度不固定的图片、多行文字的水平垂直居中

    一、大小不固定,多行文字的垂直居中 ① 单行文字 可能很多人都知道如何让单行文字垂直居中显示,就是使用line-height,将line-height值与外部标签盒子的高度值设置成一致就可以了。...128像素图片设置的*/ img标签: img{vertical-align:middle;} 需要说明的: 1.原版的代码中有两个hack,一个是针对文字大小的,另外一个是针对block属性的;后经过我测试推敲后证实这两个...另外,其实这里不一定是透明的图片,使用任意的图片都可以,所以您其实说不定可以减少一次http请求,使用任意的图片将其拉伸至高度为容器高,宽度1像素宽度0就可以了。...补充于2009-11-03 15:32 正如我经常挂在嘴边的,css博大精深,你需要花费精力去观察它,研究它。...css代码简洁明了,关键是HTML代码非常清晰,一层外标签,里面就是img标签,我想很难再找出比这个方法更出色的让图片水平垂直居中的方法了。

    3.7K20

    div内图片和文字水平垂直居中「建议收藏」

    128像素图片设置的*/ img标签: img{vertical-align:middle;} 需要说明的: 1.原版的代码中有两个hack,一个是针对文字大小的,另外一个是针对block属性的;后经过我测试推敲后证实这两个...另外,其实这里不一定是透明的图片,使用任意的图片都可以,所以您其实说不定可以减少一次http请求,使用任意的图片将其拉伸至高度为容器高,宽度1像素宽度0就可以了。...甚至,使用span标签,div标签也可以实现同样的效果。只要将span标签或div标签转换成inline-block属性或类似于inline-block属性就可以了。...补充于2009-11-03 15:32 正如我经常挂在嘴边的,css博大精深,你需要花费精力去观察它,研究它。...css代码简洁明了,关键是HTML代码非常清晰,一层外标签,里面就是img标签,我想很难再找出比这个方法更出色的让图片水平垂直居中的方法了。

    4.8K21

    less快速入门

    这需要很多的努力和规则来保持你的 CSS 可维护,但它本不应该这样的。...安装 less 用以下语句 : npm install -g less 安装完成后,你将可以在任何打开的窗口中使用 lessc 命令,这个命令允许你将 .less 文件编译成纯 CSS 文件,像下面这样...接下来你就可以将样式表引入到 HTML 中了,如果在编译过程中出现了错误,将会在终端的命令行中提示你。 ---- 2....变量 Less 的一个主要功能就是可以让你像在其它高级语言中一样声明变量,这样你就可以存储你经常使用的任何类型的值 : 颜色,尺寸,选择器,字体名称和 URL 等。...函数 Less 中也有函数,这让它看起来像一门编程语言了,不是吗? 让我们来看一下  fadeout, 一个降低颜色透明度的函数。

    84730

    CSS中的混合模式,制作高级特效的必备技巧 进入mix-Blend-Mode

    应用混合效果使他们比原来的颜色深一点。 ? 问题已解决! 当然,我不建议使用此功能。 但是,如果我被迫这么做,我将使用它来节省时间,当原始徽标到达时,我可以替换它并消除混合效果。...该属性的主要作用是当和background-blend-mode属性一起使用时,可以只混合一个指定元素栈的背景:它允许使一组元素从它们后面的背景中独立出来,只混合这组元素的背景。...html div> CSS is Awesome div> css div { isolation: isolate; /* Creates a new stacking...如你所见,文本“ CSS很棒”仅在其父代的边界内融合。 外面的东西不会混在一起。 换句话说,它是孤立的。...已经收录,整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,另外关注公众号,后台回复福利,即可看到福利,你懂的。

    5.2K40

    --分享个人习惯的命名方式

    把一件平凡的事情做好,很平凡。把一件平凡的事情坚持的做好,很不平凡。 1.前言 如果说计算机科学只存在两个难题:缓存失效和命名。那么我就觉得命名的难点只有两个:词汇量和坚持贯彻执行制定的规范。...最近在知乎上看到这个:作为程序员,有没有让你感到既无语又崩溃的程序命名?。...但是两个函数的命名,一个是downloadOrderData,另一个是downloadOrder。这样也产生了一点懵逼感。...上面的案例,show 和 close ,一个是显示,一个是关闭,显然不是正反义词。...也是困扰着很多的开发者,包括我。该文章的命名方式,也是我在用的一种个人命名方式,希望能让大家有所收获。当然其中还有很多的瑕疵,希望大家多多指点,或者推荐下自己建议的命名方式。

    1.3K40

    CSS

    CSS介绍   CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素,给HTML设置样式,让它更加美观。   ...再看下面的例子:我在style里面写了两个#p1并且设置了不同的css样式,还有一个10.css文件,文件里面也写了一个#p1,对应一个其他的css样式,最后页面渲染的时候是选择的最后一个link那个文件中的...先看这个问题昂:在给c2的div标签加上浮动之前是下面这样的效果:     我并没有给c1那个div标签设置高度,但是你发现c1这个div标签是有高度的,这是因为里面两个c2div我设置了高度了,这两个...,直接写自己的样式就可以了,不然你每次加其他的标签都要去看看上面的标签有没有浮动的啊,对不对。     ...,是因为浏览器有可能还在使用你之前的样式,教大家一个方法,让你写的新的css生效的方法:     f12打开浏览器调试窗口,找到下面这个设置:     然后刷新页面就可以了。

    2.3K10

    CSS 奇思妙想 | 全兼容的毛玻璃效果

    ,巧妙的同样实现毛玻璃效果,让这个效果真正能运用在业务当中 什么是 backdrop-filter backdrop-filter CSS 属性可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)...因为它适用于元素背后的所有元素,为了看到效果,必须使元素或其背景至少部分透明。...backdrop-filter 与 filter 非常类似,可以取的值都是一样的,但是一个是作用于整个元素,一个是只作用于元素后面的区域。...MDN-element 的解释是,CSS 函数 element() 定义了一个从任意的 HTML 元素中生成的图像 值。...CodePen Demo -- -moz-element Demo(Firefox Only) 在 firefox 中使用 element 复制 UI,用作毛玻璃元素背景 这样,有了上面的铺垫,下面的内容就比较好理解了

    5.1K20

    【CSS】CSS特效集锦,视觉魔法的碰撞与融合(一)

    前言 在本文中我讲述了7种CSS的特效,它们也许看起来并不惊艳,但是我认为却足够传达本文的理念:编写一些特殊的CSS样式的时候需要不拘于常理,要用特殊的认识角度看待标签和样式属性,从而用「绕个弯」的方式达到效果...看一下下面的例子你就明白了,我们把颜色调成蓝色和红色,以对比 ?...而且两个div分别设置overflow:hidden实现溢出隐藏,这样的结果是,左边的圆的右半边被隐藏了,右边的圆的左半边被隐藏了。 ?...而且更重要的是,两个因为溢出被隐藏的半圆分别被涂上了蓝色和红色,而没有溢出的两个半圆的圆框则是透明的。所以我们看到的初始的空进度条其实是下面这样的 ?...然后我们需要哪一块三角形,就把剩余的部分border都设为transparent(透明)就可以了 代码很简单,这里就不加赘述了。

    2.5K21

    【CSS】343- CSS Grid 网格布局入门

    它还能使我们在不改变任何HTML的情况下,使用 CSS 来定位和调整网格内的每个元素。它允许 HTML 纯粹作为内容的容器。...你会看到 fr 单位是将 总的尺寸 减去 单元格明确尺寸后,在等分剩余空间。 grid-gap 是间隔。 repeat() 函数 在某些情况下,我们可能有很多的列和行。...这是它的语法: CSS 代码: grid-template: ro ws / co lu mns; 我们上面的例子使用这个简写语法后,看起来非常整齐。...我们在加一些背景和间隔后,上面的例子看起来像这样: 和 footer 横跨 3 列的宽度。你可以把它全部写在一行中,但是把每一行写在一个单独的行上很好,很干净。你可以看到我在这里使用了一个新的属性 grid-gap。

    2.6K10

    如何使用纯 CSS 制作四子连珠游戏

    “纯 CSS”演示很早就有了,但是随着浏览器和CSS的发展,新的挑战又出现了。CSS 和 HTML 预处理器也促进了纯 CSS 演示的发展。...在同一列中掉落的圆盘会堆叠在一起。 首先我为每个圆孔放置了两个 checkbox 。当它们都没有被选中时,圆孔就被认为是空的,当其中一个被选中时,相应的玩家就会把他的圆盘放进去。...为了获得更好的用户体验,我希望交互区域可以更大一些,所以合理的做法是让玩家点击一个列来移动圆盘。通过在合适的元素上添加绝对和相对位置,我将同一列的控件相互叠加。这样,在每一列中只能选择最下面的圆孔。...其次,你不能基于计数器的值在元素上应用 CSS 规则。 我使用二进制解决了第一个问题。计数器的初始值设为 0 。当红色玩家选中 radio 按钮时,计数器加 1。...一个黄色的 radio 按钮、一个红色的 radio 按钮和一个代表圆盘并与圆孔重叠的 div 。这样的圆孔重复了42 次,并排列成多列。

    2.8K20
    领券