Анимация Jquery изначально не работает в Safari

#javascript #jquery #safari

#javascript #jquery #safari

Вопрос:

У меня есть галерея, которая выполняет серию анимаций при нажатии на миниатюру. Одна из этих анимаций — изменение размера содержащего блока — работает, как ожидалось, в IE / Firefox, но изначально не работает в Safari, затем работает, как ожидалось, при последующих кликах. Галерея, использующая аналогичный скрипт на странице сайта «Установки», страдает от той же проблемы, только там ей никогда не удается рассчитать правильную ширину.

Я уже пытался переключиться с $(document).ready() на $(window).load() , но безуспешно. Я отчаянно нуждаюсь в решении; этот проект был отложен из-за этой проблемы, и я не разработчик, поэтому я не имею ни малейшего представления о том, что может пойти не так. Я был бы бесконечно благодарен за любую помощь.

Вот ссылка на живой сайт. Рассматриваемый код приведен ниже:

 $(window).load(function() {
            $('#back').hide();
            $('#full-wrap').hide();
            $('#thumb-wrap a').children().not('img').hide();//hide image captions

            var moveIt = $('#thumb-wrap').outerWidth(); //Get the width of the thumb-wrap div
            /*if ($.browser.webkit) {
                    var moveIt = $('#thumb-wrap').css({width: '100%'});
                    $('#full-wrap').width(383);
                }*/

            $('#thumb-wrap a').click(function(){

                var $big = $(this).index(); //get 0-based index of the thumb that was just clicked
                $('#ajax-content > h1').hide();//hide the page title
                $('#thumb-wrap').hide(); //hide the thumbnails
                $(this).children().not('img').clone().appendTo($('#gallery-wrap')).wrapAll('<div class="article"/>').delay(600).fadeIn(); //Clone the image captions and wrap them in an article
                $('#back').fadeIn(500); //make the back button appear

                $('#full-wrap img').eq($big).siblings().hide(); //Hide all fullsized images that don't match the index of the clicked thumb
                $('#full-wrap img').eq($big).show(); //reveal fullsized image that does match the index of the clicked thumbnail


                $('#content').animate({'maxWidth': ' ='   moveIt * 0.5   'px', 'left': '6%'}, 'slow');
                $('#full-wrap').show(100).animate({ 'right': ' ='   moveIt * 0.75   'px'}, 'slow'); //slide out by a distance equal to the width of thumb-wrap.

            });

            $('#back').click(function(){
                $(this).fadeOut();//hide the back button
                $('.article').remove();//remove the article div
                $('#full-wrap').animate({'right': '0', 'opacity' : 'toggle'}, 400);//hide the fullsize image div
                $('#content').animate({'maxWidth': moveIt, 'left' : '43%'}, 400);
                $('#thumb-wrap').delay(500).fadeIn(500);//reveal the thumbnails
                $('#ajax-content > h1').delay(500).fadeIn(100);//show the page title

            });

         });


<div id="gallery-wrap">
    <a href="#" id="back"><h3>Back</h3></a>
    <div id="thumb-wrap">
        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/11t.jpg" alt="DC1F" />
            <h1>DC1F</h1>
            <p>Material: Merino wool, raw silk, silk gauze, cashmere, wild silk, raw linen and silk yard.</p>

        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/6t.jpg" alt="DC2F" />
            <h1>DC2F</h1>
            <p>Material: Merino wool, silk organza, and wild silk.</p>
        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/10t.jpg" alt="DC3F" />

            <h1>DC3F</h1>
            <p>Material: Silk organza, merino wool, handspun wool and silk, and raw silk. Dyed with color derived from weld.</p>
        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/8t.jpg" alt="DC4F" />
            <h1>DC4F</h1>
            <p>Material: Merino wool, silk organza, raw silk, raw linen, and Wensleydale wool. Dyed with color derived from onion skins. </p>

        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/18t.jpg" alt="DC5F" />
            <h1>DC5F</h1>
            <p></p>
        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/9t.jpg" alt="DC6F" />

            <h1>DC6F</h1>
            <p>Material: Merino wool, silk chiffon, raw silk, and raw linen.</p>
        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/22t.jpg" alt="DC7F" />
            <h1>DC7F</h1>
            <p>Material: Natural yak hair, merino wool, raw silk, and handspun silk.</p>

        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/23t.jpg" alt="DC9F" />
            <h1>DC9F</h1>
            <p>Material: Merino wool, raw silk, silk organza, and raw linen.
Dyed with color derived from weld.</p>
        </a>

        <a href="#">
            <img src="http://www.qp2creative.com/clients/dfrank/images/19t.jpg" alt="DC10F" />

            <h1>DC10F</h1>
            <p>Material: Merino wool, silk chiffon, and raw silk. Yellow is dyed with color derived from weld.</p>
        </a>
    </div>
        <div id="full-wrap">
            <img src="http://www.qp2creative.com/clients/dfrank/images/11.jpg" alt="DC1F" />

            <img src="http://www.qp2creative.com/clients/dfrank/images/6.jpg" alt="DC2F" />

            <img src="http://www.qp2creative.com/clients/dfrank/images/10.jpg" alt="DC3F" />


            <img src="http://www.qp2creative.com/clients/dfrank/images/8.jpg" alt="DC4F" />

            <img src="http://www.qp2creative.com/clients/dfrank/images/18.jpg" alt="DC5F" />

            <img src="http://www.qp2creative.com/clients/dfrank/images/9.jpg" alt="DC6F" />

            <img src="http://www.qp2creative.com/clients/dfrank/images/22.jpg" alt="DC7F" />

            <img src="http://www.qp2creative.com/clients/dfrank/images/23.jpg" alt="DC9F" />

            <img src="http://www.qp2creative.com/clients/dfrank/images/19.jpg" alt="DC10F" />
    </div>
  

Комментарии:

1. на самом деле это работает в моем Safari 5.0.4, или я просто неправильно понял вашу проблему?

2. Анимация выполняется, но изначально не до нужной ширины. Вот скриншот из Firefox, чтобы вы могли понять, что я имею в виду. i53.tinypic.com/i2ow7s.jpg Это та же ширина, на которую также должна быть анимирована галерея на Installations странице.

3. img826.imageshack.us/i/safarix.png это мой скриншот в Safari, я не вижу различий.

4. @linmic Странно. Вот как это выглядит при первоначальном нажатии в версии 5.0.4 на ПК и Mac в нашем офисе: i56.tinypic.com/10fur2g.jpg Страница установки также выглядит таким образом. У вас тоже страница установки расширяется до полной длины при нажатии на большой палец? qp2creative.com/clients/dfrank/installations

5. @linmic Нет, это хорошо, если это работает для Интернета в целом — я просто не понимаю, почему это так отображается с нашей стороны. Клиент не упомянул об этом, так что я собираюсь предположить, что для него это тоже не отображалось неправильно. На какой операционной системе вы работаете?

Ответ №1:

После некоторой возни я выбрал решение sledgehammer: я использовал if ($.browser.webkit) для преобразования ширины пикселей Safari для элементов блока в проценты, как в css. И теперь это работает! И для меня этого достаточно. 🙂