#jquery #background #refresh #internet-explorer-9 #animated
#jquery #предыстория #обновить #internet-explorer-9 #анимированный
Вопрос:
Я не очень разбираюсь в jQuery, может быть, это что-то простое… Я работаю над этим сайтом:
http://www.adaptdesign.com/misc/jtppwg/venuedirectory.html
Щелчок по ссылке на панели справа, например, The Atlantic Hotel, St Brelade’s Bay Hotel или The Club Hotel amp; Spa, прокручивает страницу вниз и загорается соответствующий DIV, без проблем. Это делается с помощью следующего jQuery:
<script>
$(document).ready(function() {
$("a.anchorHL").anchorAnimate()
});
$(document).ready(function() {
$("a.anchorHL").anchorAnimate().click(function() {
$('.venuedivhighlight').removeClass('venuedivhighlight');
$('a[name=' $(this).attr('href').substring(1) ']').next().addClass('venuedivhighlight');
});
});
</script>
CSS для venuedivhighlight выглядит следующим образом:
.venuedivhighlight {
background-image: url(images/anim-bg-fade.gif);
}
Желтое затухание выполняется с помощью анимированного GIF. Я знаю, что jQuery может добиться этого анимированного эффекта, но я не смог заставить его работать, поэтому, чтобы сэкономить время, я использовал это как обходной путь.
В Firefox это работает отлично, но во всех других браузерах выбранное место будет выделено один раз, а затем при последующих щелчках и прокрутках анимированный фон не будет перезагружаться. Я заметил, что при настройке приведенного выше CSS на красный фон его можно увидеть во всех браузерах (в FF красный появляется после анимации, а в других браузерах красный появляется сразу).
Есть идеи о том, как я могу заставить GIF обновляться при каждом нажатии?
Кроме того, мне бы хотелось немного больше отступов в желтом поле, т. Е. Больше места вокруг текста при выделении. Это нормально в большинстве браузеров, но при добавлении даже нескольких пикселей заполнения все это отображается как полный беспорядок в IE8 и 9 (в более ранних версиях, к сожалению, это выглядит идеально). Есть ли новый обходной путь проблемы с заполнением IE, о котором кто-нибудь знает?
Заранее большое спасибо.
Крис
Адаптировать дизайн
Ответ №1:
Чтобы ответить на ваш первый вопрос, я думаю, что лучше всего придерживаться вашего первоначального плана и анимировать цвет с помощью jQuery. Проблема, с которой вы, скорее всего, столкнулись, заключается в том, что jQuery не может сделать это из коробки. Чтобы анимировать цвет, вам нужна библиотека эффектов из jQueryUI. Ознакомьтесь с их документами здесь: http://jqueryui.com/demos/animate /
Итак, сначала вы загрузите пользовательский пакет jQueryUI, который включает библиотеку эффектов, и добавьте его на страницу, затем попробуйте что-то вроде этого:
$(function() {
$("a.anchorHL").anchorAnimate().click(function() {
$('.venuedivhighlight').removeClass('venuedivhighlight');
var $el = $('a[name=' $(this).attr('href').substring(1) ']').next();
// No need to set the class if the sole purpose is just to animate it later...
$el.css({ backgroundColor: '#ff0000' });
// Here's the magic
setTimeout(function() {
$el.animate({ backgroundColor: '#fff' }, 3000);
}, 3000);
});
});
Чтобы ответить на вторую часть вашего вопроса, если вы хотите добавить отступ, скажем, 5 пикселей, по краю вашего .ad-basic-cell
divs, вам нужно будет вычесть не менее 10 пикселей из ширины, чтобы сделать это:
.ad-basic-cell {
width: 205px;
float: left;
padding: 5px;
}
Комментарии:
1. Спасибо за ваш ответ, Джейсон, я скачал jQueryUI, включая все 31 компонент, в качестве теста, сослался на JS в моем HTML, но анимация не происходит. Прокрутка перемещается вниз к окну, и его фон красный (как я вижу в вашем коде). Я попытался переименовать $ el.animate в $ el.highlight поскольку «highlight» был одним из компонентов для jQueryUI, а «animate» нигде не найден в списке компонентов, но безрезультатно … есть идеи?
2. Что касается проблемы с заполнением, я точно знаю, что вы говорите, это совершенно логично. К сожалению, IE9, похоже, выбросил логику из окна. Взгляните на это, я не могу понять, почему это будет действовать таким образом, заполнение обеспечивается уменьшением ширины, а увеличение высоты контейнера не помогает (в любом случае он достаточно высокий), поэтому я в тупике… У меня такое чувство, что мне нужно будет либо перекодировать с нуля, либо просто обойтись узкой областью выделения за текстом … adaptdesign.com/misc/iepaddingissue.jpg
3. Причина, по которой материал jQueryUI не работает, заключается в том, что теперь у вас на странице есть 2 версии jQuery. Проверьте строки 10-14 вашего источника страницы. Вы включаете jQuery 1.6.x, затем jQueryUI, затем включаете jQuery 1.3.x. Удалите второе объявление jQuery и поверните его.
4. Кроме того, что касается IE9, можете ли вы нажать f12, чтобы вызвать инструменты разработки. Дайте мне знать, каковы настройки рендеринга. Я не могу воспроизвести вашу проблему. Для меня в IE9 все в порядке.
5. Хороший момент, я этого не понял. Я попробую в понедельник утром на работе и свяжусь с вами, что касается проблемы с IE9, IENetrenderer отобразил ее как беспорядок, как и компьютер, который у нас есть в студии. Я сообщу вам настройки в понедельник. Еще раз спасибо.