Не так давно пользователь сети, который собирался закончить обучение, прислал мне электронное письмо. В его дипломном проекте нужно было добиться эффекта экрана блокировки, но он не мог понять исходный код диалогового окна, которое я опубликовал ранее. Он спросил, может ли он объяснить. Код, связанный с экраном блокировки, я сказал, что опубликую его через два дня. Поскольку в последнее время я был очень занят, то вспомнил об этом только сейчас и надеюсь, что еще не поздно написать эту статью.
Переходим к делу:
В настоящее время полноэкранные полупрозрачные слои масок широко используются на веб-сайтах web2.0. Большинство масок реализуются путем расчета размера страницы и последующего покрытия ее слоем того же размера, что и страница, например, Tencent qzone и WordPress. . Этот метод понятен, но он не работает в IE8, когда страница очень длинная (объяснение из зарубежной информации заключается в том, что это связано с видеокартой машины). Некоторые студенты с идеальными графиками в отчаянии чесали головы, столкнувшись с этой проблемой. , они даже хотят, чтобы IE8 был вынужден использовать метод IE7 для разбора его работ. На самом деле у нас есть лучший способ: давайте воспользуемся CSS для решения этой проблемы!
Помните « позиция: фиксированная »? Это новый атрибут CSS2. Он может заставить элемент оставаться на странице неподвижным и не перемещаться при перетаскивании полосы прокрутки. Например, таким образом реализована фиксированная панель навигации в верхней части Qzone. Аналогичным образом мы также можем использовать слой со 100% высотой и шириной, чтобы закрыть область просмотра браузера, чтобы можно было добиться полноэкранной маскировки. Нет необходимости рассчитывать размер страницы и нет необходимости динамически изменять. размер при изменении размера браузера.
Окно запуска кода
[Ctrl+A: Советы по выбору всех: сначала вы можете изменить часть кода, а затем нажать «Выполнить»]
Но есть головная боль. IE6 не поддерживает «position: fix». Мы можем только динамически изменять его значение TOP через js, чтобы имитировать статическое позиционирование. При перетаскивании полосы прокрутки маска обязательно будет дрожать, потому что каждый раз, когда она меняется, IE будет перезагружаться. -рендеринг еще раз. Но Microsoft предоставила нам очень интересную функцию. Если вы установите статически позиционированное фоновое изображение для тега html или body, слой не будет трястись при перетаскивании полосы прокрутки, почти идеально имитируя «position:fixed». В реальных проектах я обнаружил, что эта функция также может запускать другие специальные функции, о которых я расскажу позже.
Чтобы избежать проблем, мы используем злое выражение для написания некоторых скриптов на CSS для IE6 и меняем положение слоя маски при перетаскивании полосы прокрутки. Легенда гласит, что выражение требует очень больших усилий, но наше выражение почти не имеет потерь. Заинтересованные ученики могут углубленно изучать выражение.
Окно запуска кода
[Ctrl+A: Советы по выбору всех: сначала вы можете изменить часть кода, а затем нажать «Выполнить»]
Хорошо, после совместимости с большеголовой куклой IE6 наша маска экрана блокировки была принята основными браузерами. Однако студенты, которые используют js для написания эффектов, всегда очень расстраиваются и всегда хотят что-то добавить, поэтому мы добавим. небольшой скрипт для прерывания операций пользователя, когда экран заблокирован, отключения полосы прокрутки, колеса, клавиши табуляции, выбора всего, обновления и щелчка правой кнопкой мыши для имитации настоящего «экрана блокировки»:
Окно запуска кода
[Ctrl+A: Советы по выбору всех: сначала вы можете изменить часть кода, а затем нажать «Выполнить»]
Исходный текст: http://www.planeart.cn/?p=792.