CSS3动画-定位元素层级覆盖问题

       在之前写过一篇博客js-使用js生成10*10个带标号的div,关于如何使用js生成10*10的100个div。最近尝试着在这使用定位+循环生成的100个div上加上span并配合css3里的transform,相当于每一个div都是一个四个面的立方体,每一个面都是一整张背景图的一部分。但是出现了定位元素层级覆盖问题,如下图所示:
立体图片诡异现象
       从这张图片上,可以看到在这图片中心点的左侧,可以看到每个div内包含的立方体的左侧面和中心点下每个div所形成的立方体的上侧面
       原因有两个:1.因为是用定位排列的10*10个div,有定位就会有层级问题;2.默认情况下,perspective-origin的值为center center。
       从persective-originj角度入手解决,将persective-origin设置成了right bottom。理论上是一举解决了这个问题,但是在转动的时候,能够很清楚的看到左上角转动的角度不是90deg,立方体已经变形。所以不提倡修改persective-origin。
        从z-index角度入手解决,我们想要的是从最左侧到中心点,z-index递增。从中心点到最右侧,z-index递减。根据规律,可人为设置z-index。
       以下是以5个div作为找规律的示意图:
z-index规律图
       为了方便找到规律,便将每一行递增10,此时,我们可以将z-index拆分为x-index和y-index。z-index处理js代码如下所示:

for(var i = 0; i < 100; i++) {
                var x = i % 10;
                var y = parseInt(i/10);
                var xIndex = 0;
                var yIndex = 0;
                var zIndex = 0;
                xIndex=5-Math.abs(x - 5);
                yIndex=5-Math.abs(y - 5);
                zIndex = yIndex * 10 + xIndex;
                ......//样式和结构生成代码
                }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 CSS 遮罩动画,可以使用 CSS 中的 `transition` 属性和 `transform` 属性。 `transition` 属性可以设置元素过渡效果,包括过渡的属性、过渡时间、过渡方式等。 `transform` 属性可以设置元素的变换效果,包括平移、旋转、缩放等。 示例代码如下: HTML: ```html <div class="mask"></div> ``` CSS: ```css .mask { /* 定位 */ position: fixed; top: 0; left: 0; /* 大小 */ width: 100%; height: 100%; /* 背景颜色 */ background-color: black; /* 透明度 */ opacity: 0; /* 过渡效果 */ transition: opacity 0.5s ease; /* 层级 */ z-index: 9999; } .show { /* 透明度 */ opacity: 0.5; /* 变换效果 */ transform: scale(1); } ``` 以上示例中,`.mask` 元素设置了 `position: fixed` 属性使其覆盖整个页面,设置了 `background-color` 属性为黑色,同时使用 `opacity` 属性设置其透明度为 0,并设置了 `transition` 属性使其透明度变化时有过渡效果。`.show` 类用来控制元素的显示状态,当添加 `.show` 类时,`.mask` 元素的透明度会从 0 变为 0.5,同时使用 `transform` 属性实现缩放效果,从而实现了遮罩动画效果。 JavaScript 代码如下: ```js const mask = document.querySelector('.mask'); function showMask() { mask.classList.add('show'); } function hideMask() { mask.classList.remove('show'); } ``` 以上 JavaScript 代码中,`showMask` 函数用来显示遮罩层,`hideMask` 函数用来隐藏遮罩层,通过操作 `.mask` 元素的类名来实现遮罩动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值