本文探讨使用js和css创建翻书效果时可能遇到的图片消失和背面错位问题,并提供优化后的代码解决这些问题。

问题描述:
在实现点击翻页的翻书效果时,常常遇到以下两个问题:
none。解决方案:
立即学习“前端免费学习笔记(深入)”;
为了解决上述问题,我们需要对代码进行以下优化:
保持图片可见性: 不要直接将图片元素的display属性设置为none,而是使用opacity: 0;来实现图片的淡出效果,这样图片仍然在页面中,只是视觉上不可见。
正确设置图片顺序和CSS样式: 确保背面图片在HTML结构中位于正确的位置,并且CSS样式能够正确地将背面图片显示在翻页后的位置。 这可能需要调整z-index属性,以确保图片不被其他元素遮挡。
优化后的代码:
<code class="html"><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS3翻书效果</title>
<style>
* {
padding: 0;
margin: 0;
}
body,html {
height: 100%;
}
li{
list-style: none;
}
body {
-webkit-perspective: 2000px;
-moz-perspective: 2000px;
-ms-perspective: 2000px;
perspective: 2000px;
background-color: #212121;
}
.book {
position: absolute;
top: 30%;
left: 40%;
width: 500px;
height: 500px;
background-color: #fff;
-webkit-transform: rotateX(30deg);
-ms-transform: rotateX(30deg);
-o-transform: rotateX(30deg);
transform: rotateX(30deg);
}
/*开3D效果*/
.pre-3d {
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.page {
position: absolute;
top: 0;
left: 0;
width: 500px;
height: 500px;
border: 1px solid #1976D2;
text-align: center;
-webkit-transform-origin: 0 50%;
-moz-transform-origin: 0 50%;
-ms-transform-origin: 0 50%;
-o-transform-origin: 0 50%;
transform-origin: 0 50%;
}
.front1 {
background-color: paleturquoise;
}
.front2 {
background-color: goldenrod;
}
img{
width: 100%;
height: 100%;
position: absolute; /* Added for better z-index control */
z-index: -1;
}
</style>
</head>
<body>
<div class="book pre-3d" id="book">
<ul>
<li id="Rcover">封面@@##@@</li> <!-- 封面 -->
<li class="pre-3d page front2">页1@@##@@</li> <!-- 页1 -->
<li class="pre-3d page front2">页2@@##@@</li> <!-- 页2 -->
<li class="pre-3d page front2">页3@@##@@</li> <!-- 页3 -->
<li class="pre-3d page front2">页4@@##@@</li> <!-- 页4 -->
<li class="pre-3d page front1">背面@@##@@</li> <!-- 背面 -->
</ul>
</div>
<script>
var book = document.getElementById('book');
var pages = document.getElementsByTagName('li');
var cover = document.getElementById('Rcover');
var currentPage = 5; // Start from the last page
book.onclick = function() {
if (currentPage > 0) {
pages[currentPage].style.transform = 'rotateY(-150deg)';
pages[currentPage].style.transition = '3s';
pages[currentPage].querySelector('img').style.opacity = 0;
currentPage--;
}
};
cover.onclick = function() {
for (var j = 1; j < 6; j++) {
pages[j].style.transform = 'rotateY(0deg)';
pages[j].style.transition = '3s';
pages[j].querySelector('img').style.opacity = 1;
}
currentPage = 5; // Reset to the last page
};
</script>
</body>
</html></code>注意: 确保你的img文件夹存在并且包含名为22.jpg, 33.jpg, 44.jpg的图片文件。 这段代码假设你的图片是预先准备好的,并且数量与页面数量一致。 你需要根据你的实际图片和页面数量调整代码。 添加了position: absolute;到img样式中,并调整了页面索引,以确保图片在正确的页面上显示。
通过这些改进,你的翻书效果应该能够正常工作,图片不会消失,并且背面也会正确显示。 如果问题仍然存在,请检查你的图片路径和HTML结构是否正确。






以上就是JS和CSS实现翻书效果时,图片消失或背面错位如何解决?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号