Javascript 将Three.js场景设置为Jquery模式窗口
我尝试将一个Three.js场景插入Jquery模式窗口。目标是使用更大尺寸的Three.js场景,即在更大的窗口中。 该场景预计会在单击代表该场景但尺寸较小的图像后出现 现在,你可以看到一个我成功做到的例子:[在这个链接上][1] 如您所见,我有一个居中的图像,如果鼠标在它上面并单击它,预期的结果是将Three.js场景放入模式窗口 但是,正如您可以测试的那样,如果我单击,事情就完全错了(除了图像之外,在左上角还会出现一个场景窗口…) 我解释我做了什么(参见Javascript源代码[此处][2]): 当用户浏览图像并单击它(Javascript 将Three.js场景设置为Jquery模式窗口,javascript,jquery,css,canvas,three.js,Javascript,Jquery,Css,Canvas,Three.js,我尝试将一个Three.js场景插入Jquery模式窗口。目标是使用更大尺寸的Three.js场景,即在更大的窗口中。 该场景预计会在单击代表该场景但尺寸较小的图像后出现 现在,你可以看到一个我成功做到的例子:[在这个链接上][1] 如您所见,我有一个居中的图像,如果鼠标在它上面并单击它,预期的结果是将Three.js场景放入模式窗口 但是,正如您可以测试的那样,如果我单击,事情就完全错了(除了图像之外,在左上角还会出现一个场景窗口…) 我解释我做了什么(参见Javascript源代码[此处][
imageElement
DOM)时,我调用代码的以下部分(其灵感来自标准Jquery模态窗口代码):
最初,我做了container.style.display='none'代码>否则,将绘制场景,而我没有单击图像
在HTML源代码中,我完成了以下工作:
<td class="body_content"><br>
<!-- WebGL into td body_content -->
<div id="canvas" class="center"></div>
<!-- Javascript -->
<script src="js/sphere_dev.js"></script>
</td>
在sphere_dev.js代码中,这里是我所做的(开始时,我返回rel
和width
变量,然后使用fadeIn
):
我必须让你注意到功能window.offsetHeight
在Firefox和Chrome上不起作用,相反,我必须使用window.innerHeight
以下是我用于此弹出窗口的CSS:
.popup_block{
display: none; /* masked by default */
background: #fff;
padding: 20px;
border: 20px solid #ddd;
font-size: 1.2em;
position: fixed;
z-index: 99999;
/*--Les différentes définitions de Box Shadow en CSS3--*/
-webkit-box-shadow: 0px 0px 20px #000;
-moz-box-shadow: 0px 0px 20px #000;
box-shadow: 0px 0px 20px #000;
/*--Coins arrondis en CSS3--*/
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
}
整个CSS可在[此链接][6]上获得
如果有人能帮我解决定心的问题
将与您已有的代码一样,您只需将画布元素移动到弹出窗口div#fade
块中,然后在a.close,body
click事件中保留fadeOut
即可将其隐藏,而不是在body click上销毁。尝试将图像单击事件更改为如下所示:
$('#contrast').get(0).onclick = function RaiseWindow() {
//$('a.poplight').on('click', function() {
var popID = $(this).data('rel'); // Get name of pop-up
var popWidth = $(this).data('width'); // Get width
// Make appear pop-up and add closing button
$('#' + popID).fadeIn().css({ 'width': popWidth}).prepend('<a href="#" class="close"><img src="./close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>');
// Get margin to center window - adjust with 80px
var popMargTop = ($('#' + popID).height() + 80) / 2;
var popMargLeft = ($('#' + popID).width() + 80) / 2;
// Apply Margin to Popup
$('#' + popID).css({
'margin-top' : -popMargTop,
'margin-left' : -popMargLeft
});
// Display background
//$('body').append('<div id="fade"></div>');
//$('#fade').css({'filter' : 'contrast(0.8)'}).fadeIn();
//$('#fade').css({'filter' : 'alpha(opacity=0.99)'}).fadeIn();
if($('#fade').length > 0) {
$('#fade').fadeIn();
} else {
$('<div>', { id: 'fade' })
.appendTo('body')
.css({'filter' : 'contrast(0.8)'})
.append($('#canvas').show())
.fadeIn();
}
return false;
};
$('body').on('click', 'a.close, #fade', function() { // When click body
$('#fade , .popup_block').fadeOut(); // They disappear
});
查看我的屏幕截图,它在这里工作:与您已有的代码一样,您只需将画布元素移动到弹出窗口div#fade
块中,然后在a.close,body
click事件中保留fadeOut
即可隐藏它,而不是在body click上销毁它。尝试将图像单击事件更改为如下所示:
$('#contrast').get(0).onclick = function RaiseWindow() {
//$('a.poplight').on('click', function() {
var popID = $(this).data('rel'); // Get name of pop-up
var popWidth = $(this).data('width'); // Get width
// Make appear pop-up and add closing button
$('#' + popID).fadeIn().css({ 'width': popWidth}).prepend('<a href="#" class="close"><img src="./close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>');
// Get margin to center window - adjust with 80px
var popMargTop = ($('#' + popID).height() + 80) / 2;
var popMargLeft = ($('#' + popID).width() + 80) / 2;
// Apply Margin to Popup
$('#' + popID).css({
'margin-top' : -popMargTop,
'margin-left' : -popMargLeft
});
// Display background
//$('body').append('<div id="fade"></div>');
//$('#fade').css({'filter' : 'contrast(0.8)'}).fadeIn();
//$('#fade').css({'filter' : 'alpha(opacity=0.99)'}).fadeIn();
if($('#fade').length > 0) {
$('#fade').fadeIn();
} else {
$('<div>', { id: 'fade' })
.appendTo('body')
.css({'filter' : 'contrast(0.8)'})
.append($('#canvas').show())
.fadeIn();
}
return false;
};
$('body').on('click', 'a.close, #fade', function() { // When click body
$('#fade , .popup_block').fadeOut(); // They disappear
});
查看我的屏幕截图,它在这里工作:我认为您应该做的第一件事是在没有three.js场景的情况下让模态正常工作,因为对我来说,这似乎只是一个定位问题。谢谢,我要看我的问题的这一部分-@2pha你能看一下我上面的更新1吗?在那里我可以看到灰色窗口,但不能显示弹出窗口。我认为你应该做的第一件事是在没有three.js场景的情况下让模态正常工作,因为这似乎对我来说只是一个定位问题。谢谢,我要看我的问题的这一部分-@2pha你能看一下我上面的更新1吗?我可以进入灰色窗口,但不能显示弹出窗口。-@christos Lytras谢谢你的帮助,现在我有一个关于居中的问题,你能看一下上面的更新2吗?问候-@christos Lytras谢谢你的帮助,现在我得到了一个关于定心的问题,你能看看上面的更新2吗?当做
.popup_block{
display: none; /* masked by default */
background: #fff;
padding: 20px;
border: 20px solid #ddd;
font-size: 1.2em;
position: fixed;
z-index: 99999;
/*--Les différentes définitions de Box Shadow en CSS3--*/
-webkit-box-shadow: 0px 0px 20px #000;
-moz-box-shadow: 0px 0px 20px #000;
box-shadow: 0px 0px 20px #000;
/*--Coins arrondis en CSS3--*/
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
}
$('#contrast').get(0).onclick = function RaiseWindow() {
//$('a.poplight').on('click', function() {
var popID = $(this).data('rel'); // Get name of pop-up
var popWidth = $(this).data('width'); // Get width
// Make appear pop-up and add closing button
$('#' + popID).fadeIn().css({ 'width': popWidth}).prepend('<a href="#" class="close"><img src="./close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>');
// Get margin to center window - adjust with 80px
var popMargTop = ($('#' + popID).height() + 80) / 2;
var popMargLeft = ($('#' + popID).width() + 80) / 2;
// Apply Margin to Popup
$('#' + popID).css({
'margin-top' : -popMargTop,
'margin-left' : -popMargLeft
});
// Display background
//$('body').append('<div id="fade"></div>');
//$('#fade').css({'filter' : 'contrast(0.8)'}).fadeIn();
//$('#fade').css({'filter' : 'alpha(opacity=0.99)'}).fadeIn();
if($('#fade').length > 0) {
$('#fade').fadeIn();
} else {
$('<div>', { id: 'fade' })
.appendTo('body')
.css({'filter' : 'contrast(0.8)'})
.append($('#canvas').show())
.fadeIn();
}
return false;
};
$('body').on('click', 'a.close, #fade', function() { // When click body
$('#fade , .popup_block').fadeOut(); // They disappear
});