gpt4 book ai didi

在 Safari 中具有不透明度和可见性的 javascript 触发的转换

转载 作者:行者123 更新时间:2023-11-29 10:22:41 25 4
gpt4 key购买 nike

我正在使用以下代码。通过单击 div id="popUpPane"div 及其子元素应该出现并慢慢淡入。

再次点击 div,它应该会慢慢淡出然后消失。

Firefox 和 Chrome(也是 webkit)的行为方式是这样的,我知道 Safari 在早期版本中也是如此。但是当我点击“popUpPane”时,在 Safari 和 Safari Mobile 上没有任何反应。

这是 Safari 中的错误,还是我可以更改某些内容以恢复预期的行为?

一个补充:如果我将 -webkit-transition 设置为 -webkit-transition: opacity .5s ease-in-out; 它工作正常但仅出现过渡第一次点击。在第一个之后没有过渡...如果我删除 java 脚本中的 opacity 部分,opo-up 可以工作,但没有过渡。

我网站上的所有其他转换都有效。但它们都只使用opacity,没有visibility

这是我的代码:

CSS:

#popUpPane {
white-space:normal;
position:fixed;
width:100%;
height:100%;
top:0;
left:0;
text-align:center;
vertical-align:middle;
visibility:hidden;
z-index:90;
}
#greyOut {
position:fixed;
width:100%;
height:100%;
top:0;
left:0;
background-color:#000;
opacity:0;
}
#popUpPicCanvas {
position:relative;
top:50%;
margin-top:-325px;
display:inline;
opacity:0;
z-index:100;
}
.fade {
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out;
transition: all .5s ease-in-out;
}

HTML:

    <div id="popUpPane" onClick="noPopUp()">
<div id="greyOut" class="fade"> </div>
<canvas id="popUpPicCanvas" width="1000" height="650" title="Bastian Beuttel" class="fade"></canvas>
</div>

Javascript:

var popUpPane = document.getElementById("popUpPane"),
greyOut = document.getElementById("greyOut"),
popUpPicCanvas = document.getElementById("popUpPicCanvas"),
popCanvasContext = popUpPicCanvas.getContext("2d");


var doPopUp = function(source,x,y){
var popUpPic = document.getElementById("pic"+source);
popCanvasContext.canvas.width = x;
popCanvasContext.canvas.height = y;
popCanvasContext.drawImage(popUpPic, 0, 0,x,y);
popUpPane.style.visibility = "visible";
greyOut.style.opacity = "0.7";
popUpPicCanvas.style.opacity = "1";
};
var noPopUp = function(){
greyOut.style.opacity = "0";
popUpPicCanvas.style.opacity = "0";
popUpPane.style.visibility = "hidden";
};

我希望有人能帮助我。

感谢您的回复!

最佳答案

是的,移动版 Safari 中存在一个错误,同时转换为 opacity+visibility

您可以使用除visibility 之外的东西来修复它:在您的情况下,将widthheight 设置为0 会有帮助。但是你必须添加延迟,所以它们不会立即改变。

这是一个带有工作示例的 dabblet:http://dabblet.com/gist/1642110

 /**
* Delayed alternative for visibility
*/

a {
display: inline-block;
background: #888;
color:#FFF;
padding: 1em;
}

div {
width: 100px;
height: 100px;
background: lime;
transition: opacity 1s;
}

a:hover+div {
width: 0;
height: 0;
opacity: 0;
transition: width 0s 1s, height 0s 1s, opacity 1s;
}

关于在 Safari 中具有不透明度和可见性的 javascript 触发的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com