Задержка прокрутки со свойством CSS3 box-shadow?
-
12-09-2019 - |
Вопрос
Я добавил box-shadow
к разделу страницы недавно, чтобы придать ему тот же эффект теневой границы, который можно увидеть в приложениях Mac OS X.Выглядело это великолепно, но я заметил, что при прокрутке страницы вверх и вниз она тормозила.Обычно я вижу это только на страницах, которые имеют раздражающие фоновые изображения и множество изображений и встроенных видео, разбросанных повсюду (кашель MySpace кашель).Изначально я решил использовать box-shadow, так как полагал, что это избавит от необходимости использовать изображение и устранит любую возможность задержки прокрутки.
Я знаю, что CSS3 все еще новый, но в этом ли причина отставания?Тень визуализируется программно или что-то в этом роде?Когда я применяю тень блока к более мелким элементам, она вообще не запаздывает.Мне просто интересно, испытывал ли это кто-нибудь еще.
Я только что попробовал это на главной странице Stack Overflow, на #content
div с использованием Firebug с настройкой:
-moz-box-shadow: 1px 1px 10px;
И после этого я заметил некоторую задержку прокрутки.Я использую Firefox 3.5.
Мой вопрос: каковы альтернативы использованию этого атрибута, если я хочу добавить рамку в стиле Mac OS X к разделу моей страницы?
Кстати, кто-нибудь знает, можно ли применить тень блока только к верхней, левой и правой сторонам элемента, а не к нижней?Я пытался 1px -1px 10px
но тень по-прежнему видна внизу.Если я продолжу уменьшать второе смещение, в конечном итоге тень снизу будет удалена, но тогда верхняя тень станет намного темнее и больше.
И да, я видел статьи о box-shadow по адресу:
Решение
Лучше всего было бы использовать -moz-border-image
вместо.Это должно решить обе ваши проблемы.
Например.вы можете использовать такое изображение, в сочетании с таким CSS
-moz-border-image: url(shadow.png) 10 / 10px;
создать свою тень.А поскольку вы используете изображение, вы также можете исключить нижнюю тень, если хотите.
Вы не сможете удалить тень снизу, используя -moz-box-shadow
;его не зря называют «тенью коробки».Он применяет тень ко всему блоку.Вы не можете указать тень для каждой стороны отдельно, как в случае border
, сказать.Лучшее, что вы можете сделать, это поэкспериментировать с размещением, размытием и распространением тени.Но это неизбежно приводит к появлению более темной тени на противоположной стороне.
Я также получаю задержку теней коробки, когда пробую ее на Stackoverflow.Это также влияет на производительность в Safari, когда я пытаюсь -webkit-box-shadow
, хотя это не так заметно, как в Firefox.Надеюсь, в будущем производительность улучшится, но я предполагаю, что тень всегда будет иметь некоторый влияние, поскольку, насколько я знаю является отрисовано программное обеспечение.
Другие советы
Это было исправлено в webkit два дня назад.:)
https://bugs.webkit.org/show_bug.cgi?id=22102
Вы можете брать хром каждую ночь, чтобы опробовать его.
Я просмотрел FF3.6 и FF4 и не увидел там ужасной производительности прокрутки, так что эту проблему можно решить и там.
На данный момент проблема по-прежнему сохраняется в Chrome для Android.Некоторые комбинации box-shadow приводят к снижению производительности прокрутки.В моем случае объединение двух вставных теней (например,верх/низ) приводят к описанной проблеме.Единственное решение, которое я могу предложить, — это сделать тени коробок менее сложными и попробовать еще раз… у меня это сработало.Это неудовлетворительно, но да, вместо этого вы также можете использовать решение с изображением границы или полностью удалить затронутую тень блока.Надеюсь, это скоро исправят, наконец.Кстати, в Android-версии Firefox больше нет проблем (для моего css3).Более того, в моем случае настольные версии обоих браузеров не затронуты.
#shadow {
-moz-border-image: url(img.png) 10 / 10px; #Firefox under v15.0#
-webkit-border-image: url(img.png) 10 / 10px; #Safari, Chrome under v15.0, Android & iOS#
-o-border-image: url(img.png) 10 / 10px; #Opera under v15.0#
border-image: url(img.png) 10 / 10px; #IE v11+, other new Browser#
}
Кроссбраузерная версия для старого и нового браузера.Простое изображение: http://i28.tinypic.com/2njzkt1.png
стиль :зафиксированный для изображений слишком перегружается производительность браузера