roylawxi
#page1的"-webkit-transition: -w-transform 1s linear;"应该写成“-webkit-transition: -webkit-transform 1s linear;”
来到地球的第一天
CSS部分: .#pagegroup添加overflow:hidden; .page添加opacity:0; #page1添加 opacity: 1。
JS部分:next()函数添加 curPage.style.opacity = "0",nextPage.style.opacity = "1" prev()函数同理。
这样就可以把翻转挡住按钮部分的隐藏起来,但是会有数字,所以要把除开当前的展示页透明度设置为0.
完整代码
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>CSS-3D特效</title><link rel="stylesheet" href="./css/index.css"></head><body><div id="my3dexpace"><div id="pagegroup"><div class="page" id="page1">1</div><div class="page" id="page2">2</div><div class="page" id="page3">3</div><div class="page" id="page4">4</div><div class="page" id="page5">5</div><div class="page" id="page6">6</div></div></div><div id="ap"><button id="prev">prev</button><button id="next">next</button></div></body><script src="./js/index.js"></script></html>
*{margin: 0;padding: 0;}#my3dexpace{perspective: 1000;-moz-perspective: 1000;-ms-perspective: 1000;-webkit-perspective: 1000;perspective-origin: 50% 50%;-moz-perspective-origin: 50% 50%;-ms-perspective-origin: 50% 50%;-webkit-perspective-origin: 50% 50%;}#pagegroup{width: 400px;height: 400px;margin: 0 auto;position: relative;transform-style: preserve-3d;-webkit-transform-style: preserve-3d;overflow: hidden;}.page{width: 360px;height: 360px;padding: 20px;background-color: #000000;color: #ffffff;font-weight: bold;font-size: 360px;line-height: 360px;text-align: center;position: absolute;opacity: 0;}#page1{opacity: 1;}#page1,#page2,#page3,#page4,#page5,#page6{transform-origin: bottom;-moz-transform-origin: bottom;-o-transform-origin: bottom;-webkit-transform-origin: bottom;-moz-transform-origin: bottom;-ms-transform-origin: bottom;transition: all 1s linear;-moz-transition: all 1s linear;-o-transition: all 1s linear;-webkit-transition: all 1s linear;}#page2,#page3,#page4,#page5,#page6{transform: rotateX(90deg);-moz-transform: rotateX(90deg);-webkit-transform: rotateX(90deg);-o-transform: rotateX(90deg);-ms-transform: rotateX(90deg);}#ap{width: 200px;height: 100px;margin: 0 auto;display: flex;display: -webkit-flex;justify-content: space-around;align-items: center;}#prev,#next{width: 50px;height: 30px;border-radius: 5px;overflow: hidden;outline: none;border: none;background-color: #000000;color: #ffffff;cursor: pointer;text-align: center;line-height: 30px;font-size: 18px;font-weight: bold;}var pageIndex = 1; // 当前是第几页function next() {if(pageIndex == 6) {return;}var curPage = document.getElementById("page"+pageIndex);curPage.style.webkitTransform = "rotateX(-90deg)";curPage.style.transform = "rotateX(-90deg)";curPage.style.opacity = "0";pageIndex ++;var nextPage = document.getElementById("page"+pageIndex);nextPage.style.webkitTransform = "rotateX(0deg)";nextPage.style.transform = "rotateX(0deg)";nextPage.style.opacity = "1";}function prev() {if(pageIndex == 1) {return;}var curPage = document.getElementById("page"+pageIndex);curPage.style.webkitTransform = "rotateX(90deg)";curPage.style.transform = "rotateX(90deg)";curPage.style.opacity = "0";pageIndex --;var prevPage = document.getElementById("page"+pageIndex);prevPage.style.webkitTransform = "rotateX(0deg)";prevPage.style.transform = "rotateX(0deg)";prevPage.style.opacity = "1";}document.getElementById("next").onclick = function() {next();return;}document.getElementById("prev").onclick = function() {prev();return;}
weixin_慕娘0158064
next函数的判断是==6,不是==1,另外六个元素的position是absolute不是relative
qq_慕丝4153574
1、准确的说是放在next函数内部其他代码的后面或中间;
2、因为js函数语句是逐行执行的,只有放最前面才会有边界判定的效果;中间不知道你放哪里,放后面就相当于先执行了3d变换操作,再去判断return,事实上你什么都不写函数默认也会return;
慕娘2196853
应该是你的JS代码的问题
Bullyyyyy
JS代码开头没有声明定义变量curIndex。
眨巴眨巴看谁
你的问题在于 两个链接点不到,被page0挡住了
qq_醉卧_1
demo地址-> http://hilij.com/demo/page3D.html
緣来
<a> 标签的 href 属性用于指定超链接目标的 URL,href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段.这里的href="javascript:;",其中javascript:是伪协议,它可以让我们通过一个链接来调用javascript函数.而采用这个方式 javascript:;可以实现A标签的点击事件运行时,如果页面内容很多,有滚动条时,页面不会乱跳,用户体验更好
慕粉4088941
慕移动2408492
设置这个就是为了取消原来旋转90°的状态
暖阳_
设置定时器
qq_琪琪_8
你css写错了
#page2,#page3,#page4,#page5,#page6{
-webkit-transform-origin:bottom;
-webkit-transition:-webkit-transform is linear;
-webkit-transform:rotateX(90deg);
}
仔细看你的过度时间写成了i了
qq_碎影流年_0
慕丝8306798
你肯定赋值粘贴了 发代码看看
慕粉3988711
rotate多少度并不是旋转了多少度,而是停留在多少度的位置,这样理解就容易多了
慕少5527016
首先你的页面显示就有问题,style中num的样式是写给谁的呢,显然你是要给每一个页面的,那么就要写给每个页面的class
铭天更精彩
var curIndex = 1 ;
function prev() {
if(curIndex == 1) return;
var curPage = document.getElementById("page" + curIndex);
curPage.style.webkitTransform = "rotateX(90deg)";
curIndex--;
var prevPage = document.getElementById("page" + curIndex);
prevPage.style.webkitTransform = "rotateX(0deg)";
}
function next() {
if(curIndex == 6) return;
var curPage = document.getElementById("page" + curIndex);
curPage.style.webkitTransform = "rotateX(-90deg)";
curIndex++;
var nextPage = document.getElementById("page" + curIndex);
nextPage.style.webkitTransform = "rotateX(0deg)";
}
qq_美丽的曲线_03762593
当然,你也可以使用我的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS3 创建翻页效果</title>
<style type="text/css">
.wrap {
-webkit-perspective: 800;
-webkit-perspective-origin: center;
overflow: hidden;
}
.wrapContent {
width: 400px;
height: 400px;
margin: 0 auto;
position: relative;
-webkit-transform-style: preserve-3d;
}
.pages {
width: 400px;
height: 400px;
position: absolute;
top: 0;
left: 0;
font-size: 400px;
font-weight: bold;
line-height: 400px;
text-align: center;
color: #fff;
background-color: #69e;
-webkit-transform-origin: bottom;
-webkit-transform: rotateX(90deg);
-webkit-transition: -webkit-transform 1s linear;
}
.page1 {
-webkit-transform: rotateX(0deg);
}
.controller {
margin: 10px auto;
text-align: center;
}
.controller span {
width: 80px;
height: 30px;
line-height: 30px;
border: 1px solid #ccc;
margin-right: 10px;
display: inline-block;
cursor: pointer;
}
</style>
</head>
<body>
<div>
<div>
<div class="pages page1">1</div>
<div class="pages page2">2</div>
<div class="pages page3">3</div>
<div class="pages page4">4</div>
<div class="pages page5">5</div>
<div class="pages page6">6</div>
</div>
</div>
<div>
<span id="next" onclick="next();">next</span>
<span id="previous" onclick="previous();">previous</span>
</div>
<script type="text/javascript">
var curIndex =1;
function next() {
if(curIndex == 6) {
return;
}else {
var curPage = document.getElementsByClassName("page" + curIndex);
curPage[0].style.webkitTransform = 'rotateX(-90deg)';
curIndex ++;
var nextPage = document.getElementsByClassName("page" + curIndex);
nextPage[0].style.webkitTransform = 'rotateX(0deg)';
}
}
function previous() {
if(curIndex == 1) {
return;
}else {
var curPage = document.getElementsByClassName("page" + curIndex);
curPage[0].style.webkitTransform = 'rotateX(90deg)';
curIndex --;
var nextPage = document.getElementsByClassName('page' + curIndex);
nextPage[0].style.webkitTransform = 'rotateX(0deg)';
}
}
</script>
</body>
</html>
慕粉3116392
运行了你的代码,没有报错啊?我习惯将js代码放到body下面,可以保证dom全部加载完在执行js代码
我不是昵称
cjm07
重置了curPage2的属性,原来沿X轴旋转的角度属性被改为不旋转了,也就是0deg,rotate是相对元素初始位置而言的
qq_独坐一隅_0
如果不加定位的话会,一行显示一个块元素, 固定后会层叠在同一个位置;
zxjiao
var index=document.getElementById("p"+index);
变量定义重复了,换个名字,比如 var p =
刘洪光
这是重置了curPage2的属性,原来沿X轴旋转的角度属性被改为不旋转了,也就是0deg
关耳木南
对的,就是下面这一段代码没有写。
-webkit-transform-origin:bottom;
这段代码要写在具有变换效果的元素的CSS中。
爱从零开始0
你看一下你有没有设置padding,让padding值加上数字font-size的大小刚好等于pagegroup的width
qq_希望天空总是蓝色_03467485
这是我自己的,你可以看看
var curIndex=1;
function next(){
if(curIndex==6)
{
return;
}
else
{
var nextPage=document.getElementById("page"+curIndex).style.webkitTransform="rotateX(-90deg)";
curIndex++;
var curPage=document.getElementById("page"+curIndex).style.webkitTransform="rotateX(0deg)";
}
}
function prev(){
if(curIndex==1)
{
return;
}
var prevPage=document.getElementById("page"+curIndex).style.webkitTransform="rotateX(90deg)";
curIndex--;
var curPage=document.getElementById("page"+curIndex).style.webkitTransform="rotateX(0deg)";
}
qq_希望天空总是蓝色_03467485
定义curIndex时,初始化curIndex=1没有?
小花先森
视频上-webkit-transform-style:preserve-3d;改成这个-webkit-transform-style:preserve-3d;就可以了