Вложенная IFS (незначительно менее подробный):
if not isNull(Rs("myField")) Then
if Rs("myField") <> 0 then
Кроме того, в Mozilla Foundation есть статья « Написание эффективных CSS для использования в пользовательском интерфейсе Mozilla ", в котором описаны возможные проблемы с производительностью селекторов CSS в их браузерах и способы оптимизации правил стиля для их механизма визуализации. В их статье есть масса примеров того, что хорошо, а что плохо. Однако имейте в виду, что это относится только к их браузерам.
Также есть несколько общедоступных тестов, касающихся влияния селекторов CSS на скорость рендеринга:
Я, однако, думаю, что это, по большей части, конский навоз. Вы можете значительно повлиять на скорость загрузки / рендеринга вашей страницы, используя некоторые другие простые оптимизации. Я считаю, что ваше здравомыслие и хорошо организованная кодовая база должны быть на первом месте. Если бы это было такой большой проблемой, как некоторые думают, мы бы все вернулись, используя атрибуты HTML <4 (bgcolor =, border = и т.д.) для стилизации наших веб-страниц.
#id
работает быстро.
немного медленнее. .class
- самый медленный. Запуск ваших селекторов с более быстрого поиск уменьшит количество поисков, необходимых для следующей части. То есть, если я написал p.myClass
, тогда браузер может очень быстро найти все теги p
, и тогда ему нужно будет только просмотреть их в цикле, чтобы проверить имя класса.
Тем не менее, он оценит удобство обслуживания вашего файла CSS выше, чем скорость его рендеринга. Бла-бла-бла преждевременная оптимизация бла-бла.
Есть ли снижение производительности из-за полной квалификации стиля, то есть он длиннее?
Да, при каждом динамическом изменении DOM-дерева CSS-выражение должно быть повторно сопоставлено по крайней мере с некоторыми узлами . Я сомневаюсь, что это приведет к какой-либо заметной задержке.
Поставленная вами цель (сделать селекторы устойчивыми к изменениям в структуре страницы) не совсем надежна: жесткое кодирование сложных деталей структуры сайта в CSS будет означать, что у вас будет больше операторов для поддержки и обновления при изменении структуры страницы.
Если это находится под вашим контролем, придерживайтесь простых классов (даже если у вас больше их) и как можно меньше уровней (выполнение некоторого относительного размера шрифтов - единственный вариант использования, когда я использовал несколько уровней, и даже это было несколько излишним). Вы просто тратите слишком много когнитивных способностей, чтобы отслеживать структуру страниц в своей голове.
и даже это было несколько лишним). Вы просто тратите слишком много когнитивных способностей, чтобы отслеживать структуру страниц в своей голове. и даже это было несколько лишним). Вы просто тратите слишком много когнитивных способностей, чтобы отслеживать структуру страниц в своей голове.Я не понимаю, как возможен теоретический ответ: ответ зависит от реализации; поэтому я предлагаю вам профилировать его, чтобы быть уверенным.
Возможно, вас заинтересует доклад Дэвида Барона (Mozilla) Google Tech .
Хотя ваш вопрос касается производительности (и я бы посоветовал измерить ее ...), я действительно хотел бы добавить, что вы всегда должны стараться использовать как можно более короткое определение для определения правильного элементов.
Причина не в размере файла, а в возможности расширить ваш сайт без изменения основного CSS.
Например, у вас есть эта часть на вашем html-сайте:
<div id="Header">
<h1>Css example</h1>
<h2>Welcome to the css example site</h2>
<p>An example page by davy</p>
</div>
, и это CSS :
#Header
{
background-color: #ffeedd;
padding: 1em;
}
#Heading h1
{
font-size: 3em;
color: #333;
}
#Heading h2
{
font-size: 1.5em;
color: #666;
}
#Heading p
{
margin: 0 0.5em 1.5em 1em;
font-size: 1.1em;
color: #999;
}
А позже вы попадете на страницу, где хотите, чтобы ваш заголовок имел другой фон.
Если бы вы выбрали использование div # Header
в основном файле css, вам пришлось бы либо изменить html (что в зависимости от вашей системы может означать создание другого шаблона / главной страницы), чтобы добавить extra class, или создайте более квалифицированный селектор css, такой как body div # Header
.
Используя самый короткий селектор, вы все равно можете использовать div # Header {background: ...}
для изменения заголовка. Вы можете создать дополнительный файл css и загрузить его в свой заголовок на этой странице (если это разрешено) или добавить определение стиля непосредственно в раздел
. Приятно то, что ваш файл css не увеличивается с помощью селекторов для каждой отдельной страницы, и вы можете держаться подальше от classitis .
Вы также можете использовать его для переключения метода изменения размера вашей страницы ( static / fluid), так что один шаблон / главная страница использует CSS по умолчанию, а другой является производным от этого шаблона / masterpage и просто связывает CSS с именем FluidWitdth90.css, чтобы изменить шаблон на гибкий макет шириной 90%.
Вы можете создать дополнительный файл css и загрузить его в свой заголовок на этой странице (если это разрешено) или добавить определение стиля непосредственно в раздел
. Приятно то, что ваш файл css не увеличивается с помощью селекторов для каждой отдельной страницы, и вы можете держаться подальше от classitis .
Вы также можете использовать его для переключения метода изменения размера вашей страницы ( static / fluid), так что один шаблон / главная страница использует CSS по умолчанию, а другой является производным от этого шаблона / мастер-страницы и просто связывает CSS с именем FluidWitdth90.css, чтобы изменить шаблон на гибкий макет шириной 90%.
Вы можете создать дополнительный файл css и загрузить его в свой заголовок на этой странице (если это разрешено) или добавить определение стиля непосредственно в раздел
. Приятно то, что ваш файл css не увеличивается с помощью селекторов для каждой отдельной страницы, и вы можете держаться подальше от classitis .
Вы также можете использовать его для переключения метода изменения размера вашей страницы ( static / fluid), так что один шаблон / главная страница использует CSS по умолчанию, а другой является производным от этого шаблона / masterpage и просто связывает CSS с именем FluidWitdth90.css, чтобы изменить шаблон на гибкий макет шириной 90%.