После нажатия на ссылку href, pie.HTC в стиле див не правильно перерисовывается
Мне нужно на моем веб-сайте Скрыть и показать закругленный угол div, который содержит пирог.htc, чтобы округлить его в IE. Но когда я использую display:none;
и display:block;
, где изначально он не отображается, когда первый дисплей он не отображается правильно.
Я переписал эту небольшую проблему, используя visibility
вместо display
, но другие проблемы появляются как в отображении, так и в видимости. Если я нажму любую ссылку с href, а затем нажмите, чтобы показать / скрыть div с закругленными углами, он будет отображаться без стиль
Вы можете нажать "Show Container", затем "Hide Container" несколько раз, и это работает идеально, но если вы нажмете на "Click Here (Just Alert Link)", который является просто ссылкой с предупреждением, а затем нажмите на "Show Container", он будет отображать содержимое div без фона в качестве примера (это как проверено в IE8).
3 ответа:
Кажется, это больше связано с пирогом.htc и перерисовка, так как насчет того, чтобы не перерисовывать браузеры - просто переместите div с пути, а затем снова вернитесь..
<script type="text/javascript"> $(document).ready (function () { $('#show_div').bind ('click', function () { // show it by returning it to it's default position $('#tab_container_3').css ( {position : 'static'} ); }); $('#hide_div').bind ('click', function () { // hide it again by making it read the z-index $('#tab_container_3').css ( {position: 'relative'} ); }); }); </script>
И измените этот CSS на:
#tab_container_3{ position: relative; top: -9999px; }
Это просто убирает его с пути, изменяя
position
наstatic
с помощью jQuery вы переключаетеa
обратно на его значение по умолчанию, и любой элемент сposition
изstatic
не принимаетz-index
, поэтому вам не нужно менять этоОбновлено
Согласно доступность (или нет) информации
Хорошо, чтобы избежать доступности контента, пуленепробиваемый способ-использовать
display: block
иvisibility: hidden
вместе, но в соответствии с вышеупомянутыми проблемами, уже отмеченными с ними, я подумал, что было бы хорошей идеей скрыть Родительский<li>
сам, а не<a>
с поведением, и на этот раз я сделал это, добавив и удалив классЭто, кажется, работает:
$(document).ready (function () { // to make tab hidden and inaccessible onload $('#tab_container_3').parent().addClass("element-invisible"); $('#show_div').bind ('click', function () { $('#tab_container_3').parent().removeClass ("element-invisible"); }); $('#hide_div').bind ('click', function () { $('#tab_container_3').parent().addClass ("element-invisible"); }); });
С этим классом, добавленным в CSS (
#tab_container_3
больше не нуждается в дополнительном CSS).element-invisible { position: absolute !important; clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); visibility: hidden; display: none; }
Теперь это работает для вас, я проверил CTRL+F в FF, и он не находит скрытую вкладку
Примечание я не думаю, что первые 3 правила позиционирования и клипа необходимы с этим методом, я попробовал их на
a
сначала и не полностью обрезал эффект в IE - поэтому я переместил класс в родительский li.. но я оставлю правила, чтобы показать, что я пытался - просто на случай, если вам интересно, что это такое;)Третий Раз Повезло
Это когда я попробовал комбинацию, сначала загрузив Родительский
li
со страницы с отрицательным z-индексом, установив задержку так, чтобы через 0,5 секунды он скрывал и исправлял z-индекс, теория здесь пыталась сделать пирог.htc рисует углы, прежде чем спрятать их, я подумал, что никто не будет искать содержимое в течение 0,5 секунд ;) - это не совсем гладко в IE, но я думаю, что это из-за расположения пирога эффектов.htc использует для рисования углов и теней, но эффект рисует теперь, я попытался сползти вниз, чтобы показать div, поскольку это, кажется, "скрывает" худшее из jaggy reveal IE$(document).ready (function () { // to make tab hidden but accessible onload, accessible at first to allow link to draw, then hide it after 0.5 seconds $('#tab_container_3').parent().css('top','-9999px').delay(500).hide('fast', function() {$(this).css({'top' : '0px'});}); $('#show_div').bind ('click', function () { $('#tab_container_3').parent().slideDown(200); }); $('#hide_div').bind ('click', function () { $('#tab_container_3').parent().hide(100); }); });
У меня была похожая проблема.
Вот предыстория:
Мы переключаемся между двумя кнопками на странице,когда одна скрыта, другая показана. При нажатии на один из них он скрыт, а другой показан.
Первый раз, когда пользователь нажимает на кнопку, она скрывает ok, но другая кнопка отображается очень странно (фон отображается далеко слева, но текст находится в правильном положении). Это происходит только в первый раз, каждый последующий клик / переход работать отлично.
Решение:
Мы используем переключатель jquery для отображения / скрытия, но я уверен, что он будет работать с другими переходами.
el
- это элемент(Ы), который/которые показываются .$(el).toggle(0, function() { if ($.browser.msie) { $(this).each(function() { $(this).resize(); }); } });
Изменение размера просто вызывает обновление элемента, после чего он рисуется правильно!
На моей странице есть вкладки со скругленными углами, созданные css3pie при просмотре с помощью IE7 или IE8. Затем jquery добавляет текущий класс на выбранную вкладку, что заставляет вкладку менять цвет или выделяться. Однако цвет не меняется при загрузке страницы. Только после наведения курсора на закладку он покажет изменение цвета. Класс и стили существуют с самого начала, но каким-то образом он не обновляет или не обновляет цвет, который является фоновым изображением. Это может быть связано с запуском css3pie перед jquery добавляет новый класс. После добавления класса jquery css3pie забывает отрисовать изменение или обновить фоновое изображение. Каким-то образом мне нужно обновить элемент, чтобы изменение класса вступило в силу.
Это решение сработало для меня.
//check if the current URL matches the href path of the tab if (strURL == baseHrefPath) { //remove any previously highlighted tabs $(".tabs li.current a").removeClass("current"); //highlight the matching tab (li) $(this).parent().addClass("current"); //this is a hack for IE7 and IE8 which use css3pie for rounded corners //issue: the jquery adds the class after the css3pie runs, thus the change is not displayed //the selected tab is not changing color properly in IE7 and IE8 //solution: add any inline style (i.e. color white) to the element //this basically forces the element to refresh so the new styles take effect //thus highlighting the current tab $(".tabs li.current a").css("color","white"); }
Просто добавьте любой встроенный стиль (например, белый цвет) к элементу, который в основном заставляет элемент обновляться. При этом выбранная вкладка меняет цвет.