javascript - 背景附件:固定;不在 Firefox 中工作,但在 chrommw 和 edge 中工作
问题描述
我想在一个容器内创建多个立方体并在悬停时旋转它们,所有正面都将有一个共同的背景图像(它们的正面整体代表一个背景)。这在 chrome 和 edge 中实现得很好,但在 Firefox 中不起作用。唯一的问题制造者是 background-attachment: fixed;
https://codepen.io/lax-man7274/pen/xxgNqpz
请在 Firefox 上查看此代码。
function createSlab() {
for (let i = 0; i < noOfSlide; i++) {
//create slab
const slab = document.createElement("div");
slab.classList.add("slab");
slab.style.height = interval + "%";
slab.style.width = "100%";
slab.style.transition =
"transform " +
transitionDelay +
"s " +
transitionType +
" " +
delay * i +
"s";
//insert slab inside card div
card.appendChild(slab);
//create background class
const background = document.createElement("div");
background.classList.add("background");
slab.appendChild(background);
//create info
const info = document.createElement("div");
info.classList.add("info");
slab.appendChild(info);
}
}
const allSlabs = card.children;
function positionSlab() {
for (let i = 0; i < noOfSlide; i++) {
allSlabs[i].style.top = position + "%";
position += interval;
}
}
createSlab();
positionSlab();
.card {
-webkit-perspective: 400px;
perspective: 400px;
height: 100%;
width: 100%;
-webkit-transform: translateZ(-150px) rotate(0deg);
transform: translateZ(-150px) rotate(0deg);
}
/* .card:hover .slab {
transform: translateZ(-150px) rotateY(45deg);
}
*/
.slab {
position: absolute;
left: 0;
-webkit-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform: translateZ(-150px) rotate(0deg);
transform: translateZ(-150px) rotate(0deg);
}
.slab > div {
background-attachment: fixed;
-webkit-background-attachment:fixed;
background-position: center;
background-size: cover;
background-repeat: no-repeat;
}
.background {
position: absolute;
width: 100%;
height: 100%;
top: 0%;
background: url(./bg2.jpg);
-webkit-transform: rotateY(0deg) translateZ(150px);
transform: rotateY(0deg) translateZ(150px);
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
.info {
position: absolute;
width: 100%;
height: 100%;
-webkit-transform: rotateY(-90deg) translateZ(150px);
transform: rotateY(-90deg) translateZ(150px);
background: -webkit-gradient(linear, left top, left bottom, from(rgba(24, 34, 175, 0.973)), to(rgba(29, 2, 2, 0.993)));
background: linear-gradient(rgba(24, 34, 175, 0.973), rgba(29, 2, 2, 0.993));
color: white;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
<div class="cover">
<div class="card">
<!-- Below Commented HTML code is dynamically generated using javascript -->
<!-- <div class="slab">
<div class="background"></div>
<div class="info">
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam,
repudiandae.
</div>
</div>
-->
</div>
</div>
解决方案
推荐阅读
- c++ - C ++中的线程安全ExpiringDeque数据结构
- ios - Xamarin.iOS 构建归档错误“找不到路径 '.../Frameworks' 的一部分”
- r - R 回顾几天并在旧值存在时分配新值
- asp.net-core - 在 Blazor 中使用 @typeparam 作为组件
- sparql - 如何使用 SPARQL 获取 Wikidata 实体的*所有*超类?
- c# - 即使在导入 Win32 命名空间后,SaveFileDialog 在 UWP 中也不起作用
- javascript - Ionic 5 - 断言错误:期待标志
- arrays - 用于合并多个二维数组的一致行的高效算法
- javascript - 答应我在使用回调时返回待处理状态
- python - 在文本文件中查找字符串并在其附近打印字符串