- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在使用此处提供的代码:S/O 2-face Animated Cube
我想让这种效果填满网页的整个屏幕,以提供从一个 div/iframe 到下一个 div/iframe 的全屏过渡。
我尝试使用百分比:
<style>
#experiment {
-webkit-perspective: 1000;
}
html,body{
margin: 0;
height: 100%;
width: 100%;
overflow: hidden;
}
.cube {
position: relative;
height: 100%; //<----
width: 100%; //<----
-webkit-transition: -webkit-transform .5s linear;
-webkit-transform-style: preserve-3d;
}
.face {
position: absolute;
height: 100%; //<----
width: 100%; //<----
color: #fff;
}
.cube .front {
-webkit-transform: translateZ(50%); //50% should make sense, but doesn't work so I went to Javascript instead
background-color:gray;
}
.cube .side {
-webkit-transform: rotateX(-90deg) translateZ(50%);
background-color:lightgray;
}
.cube:hover{
-webkit-transform:rotateX(90deg);
}
</style>
<div id="experiment">
<div id="cube" class="cube" align="center">
<div id="front" class="face front">
front face
</div>
<div id="side" class="face side">
side face
</div>
</div>
</div>
我还尝试使用 Javascript 设置尺寸:
<script>
var w = window.innerWidth*.7, h = window.innerHeight*.7;
function Id(obj) { return document.getElementById(obj); }
Id('cube').style.width = w+'px';
Id('cube').style.height = h+'px';
Id('front').style.width = w+'px';
Id('front').style.height = h+'px';
Id('side').style.width = w+'px';
Id('side').style.height = h+'px';
Id('front').style.webkitTransform = 'translateZ('+(w/2)+'px)';
Id('side').style.webkitTransform = 'rotateX(-90deg) translateZ('+(h/2)+'px)';
</script>
但是 -webkit-perspective
将内容“放大”并像素化,并将部分内容推离屏幕。我找不到任何可以在不同窗口大小的页面上正确偏移/居中立方体的边距。
如何将这个立方体完美地居中放置在页面上?一旦我能够以编程方式使其居中,我应该能够轻松地将其填充到整个屏幕上。
我找不到任何关于 perspective
的文章来解释如何将它与任何窗口边界对齐。
这正是我正在寻找的可扩展方式:
谢谢,
最佳答案
好吧,你问的微积分很难。
好消息是您真的不需要这样做。
在 z 方向上放置在 0 处的任何对象都不会被透视缩放。因此,诀窍是将立方体的正面放置在 z = 0px 处。
另一方面,为了使其具有响应性,我们需要使用视口(viewport)单位。像这样:
html,body{
margin: 0;
height: 100%;
width: 100%;
}
#experiment {
perspective: 200vw;
height: 100%;
width: 100vw;
border: solid 1px blue;
}
.cube {
position: relative;
height: 100%;
width: 100vw;
transform-style: preserve-3d;
}
.face {
position: absolute;
height: 100%;
width: 100%;
color: #fff;
transition: transform 4s linear;
}
.cube .front {
transform: translateZ(-50vw) rotateY(0deg) translateZ(50vw);
transform-origin: center center;
background-color:gray;
}
.cube .side {
transform: translateZ(-50vw) rotateY(-90deg) translateZ(50vw);
background-color:lightgray;
}
.cube:hover .front {
transform: translateZ(-50vw) rotateY(90deg) translateZ(50vw);
}
.cube:hover .side {
transform: translateZ(-50vw) rotateY(0deg) translateZ(50vw);
}
<div id="experiment">
<div id="cube" class="cube" align="center">
<div id="front" class="face front">
front face
</div>
<div id="side" class="face side">
side face
</div>
</div>
</div>
关于链式旋转的想法来自Lea Verou here
上面的代码片段使用了视口(viewport)单位,因为这是对 z 移动的唯一响应方法。但是 vW 在 iOS 中是有问题的。下面是一个更复杂的解决方案,不使用 vW(使用百分比维度,只能在 translateX 中设置。因此需要 2 个额外的旋转。
html,body{
margin: 0;
height: 100%;
width: 100%;
}
#experiment {
perspective: 2000px;
height: 100%;
width: 100%;
overflow: hidden;
}
.cube {
position: relative;
height: 100%;
width: 100%;
transform-style: preserve-3d;
}
.face {
position: absolute;
height: 100%;
width: 100%;
color: #fff;
transition: transform 4s linear;
}
.cube .front {
transform: rotateY(-90deg) translateX(-50%) rotateY(0deg) translateX(50%) rotateY(90deg);
transform-origin: center center;
background-color:gray;
}
.cube .side {
transform: rotateY(-90deg) translateX(-50%) rotateY(-90deg) translateX(50%) rotateY(90deg);
background-color:lightgray;
}
.cube:hover .front {
transform: rotateY(-90deg) translateX(-50%) rotateY(90deg) translateX(50%) rotateY(90deg);
}
.cube:hover .side {
transform: rotateY(-90deg) translateX(-50%) rotateY(0deg) translateX(50%) rotateY(90deg);
}
<div id="experiment">
<div id="cube" class="cube" align="center">
<div id="front" class="face front">
front face
</div>
<div id="side" class="face side">
side face
</div>
</div>
</div>
这里有一个小演示,试图展示转换的工作原理。只是看着它。
.demo {
height: 20px;
width: 400px;
background-color: lightblue;
position: absolute;
top: 200px;
}
.demo:after {
content: "";
position: absolute;
background-color: red;
width: 10px;
height: 10px;
left: 50%;
top: 200px;
border-radius: 50%;
}
#demo {
-webkit-animation: demo 25s infinite;
z-index: 2;
}
@-webkit-keyframes demo {
0% {transform: rotate( 0deg) translateX( 0%) rotate( 0deg) translateX( 0%) rotate( 0deg); }
20% {transform: rotate( 0deg) translateX( 0%) rotate( 0deg) translateX( 0%) rotate(90deg); }
40% {transform: rotate( 0deg) translateX( 0%) rotate( 0deg) translateX(50%) rotate(90deg); }
60% {transform: rotate( 0deg) translateX( 0%) rotate(30deg) translateX(50%) rotate(90deg); }
80% {transform: rotate( 0deg) translateX(-50%) rotate(30deg) translateX(50%) rotate(90deg); }
100% {transform: rotate(-90deg) translateX(-50%) rotate(30deg) translateX(50%) rotate(90deg); }
}
#text {
width: 400px;
}
#text:after {
content: "";
background-color: rgba(200, 0, 0, 0.2);
width: 300px;
height: 1em;
position: absolute;
top: 15px;
-webkit-animation: text 25s infinite;
}
@-webkit-keyframes text {
10% {transform: translateY( 0px)}
30% {transform: translateY( 20px)}
50% {transform: translateY( 40px)}
70% {transform: translateY( 58px)}
90% {transform: translateY( 76px)}
100% {transform: translateY( 92px)}
}
span {
margin-left: 400px;
top: 20px;
width: 200px;
border: solid 1px blue;
position: absolute;
}
<div class="demo" id="demo"></div>
<div class="demo" id="demo2"></div>
<div id="text">
<ul id="phases">
<li >ROTATE to get the x axis </li>
<li >MOVE in the X axis (but really in Z)</li>
<li >ROTATE the wanted rotation </li>
<li >MOVE back in the X axis </li>
<li >ROTATE back the x axis trick </li>
<li >DONE </li>
</ul>
</div>
<span>Do a rotation of 30deg around a point that is at a distance equal to 50% width in the z axis - Showed as a red point</span>
关于css - 全屏 CSS3 "Cube"过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30388647/
由于内容高度不同,我正在使用过渡最大高度而不是高度的技术,但我遇到了问题。 在增长或收缩的元素内,我有一个溢出的绝对定位元素,我想在父元素展开时显示该元素。 问题是如果我只在元素没有展开的时候设置ov
我正在用 CSS 制作一个表格,上面会有一些有趣的动画。单击文本字段时,它应该展开,但除此之外,它还应该使它旁边的按钮移动。谁能看到一个简单的方法来做到这一点?我在这里包含了代码: .inpu
我想在将鼠标悬停在按钮/div 标记上时仅使用 CSS3 过渡更改页面的背景颜色。我希望颜色逐渐出现,因此想使用过渡效果,但我不知道如何将页面的背景颜色与 div 上的悬停事件相关联。有人可以帮我处理
我这里有这个页面(进行中)http://kimwilddesigns.com/index_new.htm 在本节中,我希望能够将鼠标悬停在 li 上,使背景图像淡出并使 h2 淡入。这是否可以通过过渡
我的 CSS 有点问题。我正在看一本书学习 CSS3,我刚刚发现了 Transition 函数。所以我决定尝试一下,我想不出我错在哪里,希望你能帮助我。 这是我的 Index.html 文件
我正在尝试使使用 background-image 设置的背景图像随着页面变窄而淡出。我很确定它可以使用 CSS 转换来完成,但我对它们相当不熟悉。我想我想问的是,你能根据媒体查询将背景图片转换出来吗
有没有办法在 PyQt 中将过渡颜色作为背景?我尝试使用 CSS 的线性渐变,但不起作用 stylesheet = ("QWidget { background-color : linear-grad
我有这段代码,可以在一定的延迟后切换图像的不透明度: $(".pattern-overlay").css("background","black").delay(2000).queue(functio
我还在学习 jQuery,我现在想做的就是结合 html()带有过渡的方法(例如 hide() 和 show() ),以便更改具有过渡效果的 div 的 html。这是我尝试过的: $('div.co
我有一个链接列表和一些内容部分 ORANGE BLUE PINK GREEN gfgfgfgf gfgfgfgf gfgfgfgf gfgfgfgf 每个链接对应
我不想从 JS 触发 CSS 动画,而是相反。 如果我通过 -webkit-transition 或 transition: all 1000ms 类型的样式表做 CSS 动画,有没有办法在转换后触发
我想用节点的“宽度”制作动画。 在本例中,我的节点是“AnchorPane”。 我尝试在javafx中制作一个抽屉导航。 没有属性“width Property()”? new Key Value (
这是一个简单的设置,其中使用 left 属性将盒子向右移动。通过单击按钮更新该属性。为什么我第一次点击按钮时没有应用过渡动画? document.addEventListener('DOMConten
我是安卓开发的新手。我想创建一个带有两个 TextView 的启动画面。在此初始屏幕中,我想要两个转换 1) Text View 1 从顶部到中心的过渡2) text View 2 从底部到中心的过渡
我有三个 fragment ,F1、F2 和 F3。 在 F1 到 F2 转换并返回到 F1 的情况下,不会调用 F1 的 onCreateView()。 但在 F1 到 F3 转换并返回到 F1 的
我正在为我的应用程序使用扩展导航栏,将其高度增加 30 点。为此,我对 UINavigationBar 进行了子类化,这是我的 CustomNavigationBar.m: CGFloat Custo
我在下面创建了 jQuery 脚本,但是在将它转换为最好仅使用过渡的 CSS 时遇到了一些问题。如果有人可以帮助我,我会很高兴。 下面示例的解释: - 当你点击文本框时,一个空的 div 容器会掉下来
我有一个盒子,点击它会翻转。里面还有一张悬停时放大的图片,如图 fiddle 所示。 . 问题是当我将鼠标移出或放回时,隐藏的图像上的缩放过渡会短暂显示。 My attempt修复它: #box.fl
div 自己移动,我什至不想要也没有编写代码的移动。 这是我的问题: 我正在使用这样的 CSS 转换(想要移动背景图片): .mobile{ background: url(../img/galaxy
我知道如何进行淡入淡出的 CSS 过渡,但是否有解决方案可以从上到下淡出? 这是我的代码 .navbar-default{ -webkit-transition: all 0.5s ease;
我是一名优秀的程序员,十分优秀!