ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   3D Gallery (https://forum.antichat.xyz/showthread.php?t=784562)

Wiz 04.09.2022 14:41

Всем привет! Помогите компетентные, кто в курсе как заставить 3D панораму подгружаться сразу.

Пример если я иду в объект напрямую через страницу - Республиканская инфекционная больница она работает и подгружается сразу.

Если же я захожу в объект через главную страницу вкладка> проекты - Проекты то, панорама срабатывает только после перезагрузки страницы внутри объекта.

òbiòbi верифицированный пользователь. 04.09.2022 16:29

@Wiz, при переходе Главная -> Проекты -> 'Какой-то проект', страница загружается с таким разметкой

HTML:


Код:


Если обновить страницу

HTML:


Код:


проблема может быть либо в кривом плагине jQuery.threesixty, либо в неправильной его настройке

jquery.threesixty.js:

начните с отладки var pic = $(this);, что это за элемент и почему его ширина/высота при первом переходе на страницу равны 0

возможно у родительского элемента проблемы с высотой/шириной

Видел подобный плагин у Spectre css

360-Degree Viewer - Experimentals - Spectre.css CSS Framework

360-Degree Viewer is an interactive product photo viewer. It is built in pure CSS. Spectre.css CSS Framework is a lightweight, responsive and modern CSS framework for faster and extensible development.

picturepan2.github.io

Wiz 04.09.2022 16:59

@òbiòbi верифицированный пользователь., Спасибо, за наводку, буду смотреть.

@òbiòbi верифицированный пользователь., Плагин у spectre css работает корректно, так как полностью на чистом css, не совсем то, что нужно для нашего решения. Jquery.threesixty.js: наш плагин считывает размеры с картинки. Пока не удалось разрешить проблему(.

òbiòbi верифицированный пользователь. 04.09.2022 21:55

@Wiz, попробуйте так

CSS:


Код:

#product1
{
display
:
block
;
width
:
100%
;
height
:
auto
;
}


Mizuwokiru 04.09.2022 23:22

Если придерживаться именно того же подхода, то div`у задавать конкретные размеры нужно уже после того, как картинки загружены, а именно внутри:

JavaScript:


Код:

if
(
totalProgress
==
options
.
images
.
length
-
1
)


Wiz 04.09.2022 23:34

Цитата:

Сообщение от Mizuwokiru

Если придерживаться именно того же подхода, то div`у задавать конкретные размеры нужно уже после того, как картинки загружены, а именно внутри:

JavaScript:


Код:

if
(
totalProgress
==
options
.
images
.
length
-
1
)


JavaScript:


Код:

$
.
each
(
options
.
images
,
function
(
index, record
)
{
var
o
=
$
(
""
)
.
attr
(
"src"
,
record
)
.
load
(
function
(
)
{
if
(
index
>
pic
.
data
(
"tempIndex"
)
)
{
pic
.
data
(
"tempIndex"
,
index
)
pic
.
attr
(
"src"
,
$
(
this
)
.
attr
(
"src"
)
)
}
var
progress
=
pic
.
parent
(
)
.
find
(
".progressBar"
)
;
totalProgress
++
;
var
maxsize
=
pic
.
parent
(
)
.
find
(
".progressBg"
)
.
width
(
)
;
var
newWidth
=
(
totalProgress
/
options
.
images
.
length
)
*
maxsize
;
progress
.
stop
(
true
,
true
)
.
animate
(
{
width
:
newWidth
}
,
250
)
;
if
(
totalProgress
==
options
.
images
.
length
-
1
)
{
loaded
=
true
;
pic
.
parent
(
)
.
find
(
".overlay, .progressBar, .progressBg"
)
.
remove
(
)
;
}
}
)
;
cache
.
push
(
o
)
;
}
)
;
}
)

Цитата:

Сообщение от òbi

@Wiz, попробуйте так

CSS:


Код:

#product1
{
display
:
block
;
width
:
100%
;
height
:
auto
;
}


Слишком просто), не работает, к сожалению.

L2Banners 05.09.2022 00:49

Размер блока задается исходя из размера первого изображения в массиве, скорее всего изображение просто не успевает прогрузится, чтобы можно было получить его размер. Даже если точку останова поставить и продолжить, то все прогружается. Ну это так на вскидку, без доступа к коду особо нечего дебажить.

Цитата:

Сообщение от Wiz

то, панорама срабатывает только после перезагрузки страницы внутри объекта.

В подтверждение моих слов, обнови страницу через ctrl+f5 панорама так же не грузится.

Wiz 05.09.2022 00:54

Цитата:

Сообщение от L2Banners

Размер блока задается исходя из размера первого изображения в массиве, скорее всего изображение просто не успевает прогрузится, чтобы можно было получить его размер. Даже если точку останова поставить и продолжить, то все прогружается. Ну это так на вскидку, без доступа к коду особо нечего дебажить.

В подтверждение моих слов, обнови страницу через ctrl+f5 панорама так же не грузится.

Через ctrl+f5 со второго раза заводиться.

L2Banners 05.09.2022 01:01

Цитата:

Сообщение от Wiz

Через ctrl+f5 со второго раза заводиться.

Это все просто случайность, иногда скрипт выполняется чуть позже и изображение успевает загрузится, в общем такой подход неправильный, скрипт должен выполняться только тогда когда изображение загружено, по сути нужно найти изображение которое задает размер, повесть на него событие image.onload по выполнению которого запустить инициализацию

https://i.gyazo.com/5e27e30cf392eee5...fc6d164a2b.mp4

Wiz 05.09.2022 01:04

Цитата:

Сообщение от L2Banners

Это все просто случайность, иногда скрипт выполняется чуть позже и изображение успевает загрузится, в общем такой подход неправильный, скрипт должен выполняться только тогда когда изображение загружено, по сути нужно найти изображение которое задает размер, повесть на него событие image.onload по выполнению которого запустить инициализацию

https://i.gyazo.com/5e27e30cf392eee5...fc6d164a2b.mp4

Да, тоже заметил, что просто случайность.


Время: 05:47