Подтвердить что ты не робот

Является ли CSS ошибкой?

На недавнем интервью мне задали вопрос " Является ли CSS, дающий ошибку?" интервьюером.

Есть ли интерпретатор, работающий за CSS, который блокирует выполнение программы? Или мы можем сказать, что CSS не дает никаких ошибок? Я все еще смущен тем, что является ответом на этот вопрос, потому что интервьюер также ничего не сказал.

4b9b3361

Ответ 1

Я думаю, что этот вопрос слишком широк и не специфичен. Вот как я бы ответил на этот вопрос.

Предоставляет ли CSS ошибку?

Зависит от места, на котором вы смотрите. В среде IDE? убедитесь, что он покажет вам ошибки проверки. В браузере? Большинство браузеров, как правило, игнорируют ошибки проверки CSS и продолжают с остальными правилами. Как и @Kishan Choudhary, упомянутый в другом ответе, "CSS" относится только к языку стилизации, и языки сами не могут вызывать ошибки.

Alt. Вопрос: Как мы можем проверить/отладить/найти ошибки в CSS?

Можно ли сказать, что CSS не дает никаких ошибок?

Опять же, это зависит от того места, на которое вы смотрите. В среде разработки? Да, почти все веб-IDE помогут вам найти ошибки CSS.

В браузере клиента? Не так много. Вы можете открыть панель браузера/инструмент разработчика, если они доступны, и могут быть ошибки журналов, например недопустимые или недоступные URL-адреса изображений, которые вы использовали в CSS. Опять же, это синтаксис CSS или ошибка проверки? Nope

Есть ли интерпретатор, работающий за CSS, который блокирует выполнение программа?

Да, у каждого браузера встроенный CSS-интерпретатор/парсер, следуя стандартам W3C, и ему нравится блокировать выполнение? Нет, нормальное поведение всех большинства браузеров - это игнорировать (не блокировать интерпретацию и применять оставшиеся допустимые правила стиля) CSS ошибки проверки и продолжить с остальными правилами.

Обновление: рекомендации W3, касающиеся ошибок анализа CSS

Каскадные таблицы стилей Уровень 2 Версия 1 (CSS 2.1) Спецификация

4.2 Правила обработки ошибок синтаксического анализа

В некоторых случаях пользовательские агенты должны игнорировать часть недопустимой таблицы стилей. Эта спецификация определяет игнорирование, означающее, что пользовательский агент анализирует незаконная часть (чтобы найти ее начало и конец), но в противном случае действует так, как будто этого не было. Резервы CSS 2.1 для будущие обновления CSS all property: комбинации значений и @-keywords которые не содержат идентификатор, начинающийся с тире или подчеркивания. Реализации должны игнорировать такие комбинации (кроме тех введенные будущими обновлениями CSS).

Чтобы гарантировать, что новые свойства и новые значения для существующих свойств могут быть добавлены в будущем.

Модуль синтаксиса CSS Уровень 3

2.2. Обработка ошибок

При возникновении ошибок в CSS парсер пытается восстановить изящно, отбрасывая только минимальное количество контента, прежде чем вернуться к синтаксический анализ как обычно. Это потому, что ошибки всегда ошибаются - новые синтаксис выглядит как ошибка для старого парсера, и его полезно быть может добавить новый синтаксис на язык, не беспокоясь о таблицы стилей, которые включают в себя полное нарушение в старых UA.

Ответ 2

Сам CSS не даст ошибку, однако CSS, который имеет ошибку в своем синтаксисе, не будет отображаться правильно. Возможно, браузер не может понять, что имеется в виду в данной точке, и поэтому не сможет правильно отформатировать страницу.

Также существует разница в синтаксическом правиле CSS, где все правильно закрыто, а строки завершены, и это соответствует стандартам в соответствии со спецификацией W3C.

EDIT: (пример правильности синтаксиса и соответствия стандартам) Ниже приведен пример синтаксически корректного CSS, который не приведет к отказу от проверки W3C CSS Validator:

p.my-class {
  color : red;
  -moz-border-radius : 3px;
}

Несмотря на то, что это технически обоснованный CSS, в соответствии с спецификацией поставщиков в синтаксисе CSS 2.1 их следует избегать. Это начальная тире или подчеркивание, которое позволяет им быть действительными.

Ответ 3

Обычно ошибки в CSS не вызывают сообщений об ошибках в браузере. Любой неправильный код просто игнорируется (или в некоторых случаях принимается путем принятия недостающей части, например единицы длины).

Парсер CSS пытается восстановить после каждого неправильного кода, поэтому обычно это влияет только на стиль или правило, где ошибка, синтаксический анализатор не просто перестает разбирать остальную часть кода CSS.

Некоторые браузеры добавят предупреждения в консоль ошибок для ошибок в CSS, поэтому разработчики могут открыть консоль, чтобы увидеть, есть ли какие-либо ошибки.

Ответ 4

Является ли CSS ошибкой?

Да, любое правило, которое не может быть понято парсером CSS, приведет к ошибке. В общем случае любые данные, которые не могут быть обработаны системой/программой, приведут к ошибке. Но как система, наконец, обрабатывает эту ошибку, является вашим вопросом, и это может быть

  • Игнорировать ошибку и продолжить обработку.
  • Остановите процесс.

Анализатор CSS не будет останавливать при ошибке. Он просто помещает журнал ошибок в консоль, если обнаруживает какое-либо недопустимое свойство css, которое не может быть проанализировано/указано в спецификациях и игнорирует (1) все данные css-rule до тех пор, пока не найдет следующий ;.

Как сообщает w3c.org,

UA должен пропустить объявление с недопустимым именем свойства или недопустимое значение.

Здесь UA (User Agent) означает браузер в нашем случае. Таким образом, недопустимые ключи/значения css должны быть пропущены, и поставщик браузера может выбрать, чтобы показать ошибку в devtools/firebug, чтобы помочь разработчикам исправить это. Кроме того, поставщик браузеров зависит от размещения журналов ошибок или нет.

Ответ 5

Некоторые браузеры сообщают о ошибках CSS в консоли. Firefox приходит на ум.

<style> foo { bar: baz; } </style>

приводит к ошибке:

Неизвестный свойство 'bar'. Декларация опустилась. CSS-error.html: 2: 11

Однако это не будет "блокировать выполнение программы".

Насколько мне известно, подобной функции в Chrome нет.

Ответ 6

В CSS нет ошибок, но вы можете столкнуться с некоторыми ошибками в консоли браузера, Это может быть ошибка браузера, но не ошибка броска CSS.

Ответ 7

Я думаю, что "это ошибка CSS?" выражение является неоднозначным, но сначала рассмотрим эту ссылку (спецификация CSS 2.1), перейдите к 4.2 Правила обработки ошибок синтаксического анализа

Спецификация явно указывает, как игнорировать ошибки синтаксического анализа, на самом деле он говорит:

This specification
defines ignore to mean that the user agent parses the illegal part (in order to find
its beginning and end), but otherwise acts as if it had not been there

Фактически, в тех же случаях он даже указывает, как превратить недопустимый кусок css в действительный:

User agents must close all open constructs (for example: blocks, parentheses,
brackets, rules, strings, and comments) at the end of the stylesheet. For
example:

@media screen {
  p:before { content: ’Hello

would be treated the same as:

@media screen {
  p:before { content: ’Hello’; }
}

Поэтому, смотря с этой точки зрения, CSS никогда не "дает" ошибки, потому что любые ошибки будут эффективно проанализированы и исправлены или проигнорированы, но никогда не перестанут исполнять правила или парсер.

Однако, если у вас есть один разработчик, который разговаривает с другим перед IDE, я думаю, что было бы справедливо спросить "Имеет ли CSS ошибки", ссылаясь на сообщения IDE, и на самом деле, если мы посмотрим на проект парсера CSS, мы можем четко видеть в документации, что синтаксический анализатор может предоставлять сообщения об ошибках, это просто браузеры, которые были непосредственно проинструктированы для игнорирования ошибок.

Ответ 8

CSS не является реальным языком программирования, а языком, специфичным для домена (https://en.wikipedia.org/wiki/Domain-specific_language).

В отличие от языков сценариев, таких как JavaScript или PHP (которые являются языками программирования Turing), а также настоящие языки программирования, такие как Java или C CSS, не будут "давать ошибки", поскольку CSS-код не является реальным исходным кодом программы.

Однако, как любой язык, специфичный для домена, CSS имеет синтаксис и считывается интерпретатором (очень похожим на декларативный язык программирования Turing).

Если синтаксис неверен (здесь: https://jigsaw.w3.org/css-validator/#validate_by_input), CSS недействителен. Это зависит от того, как интерпретатор использовал как иметь дело с недопустимыми частями CSS, интерпретаторы в общих веб-браузерах не будут останавливаться на синтаксических ошибках CSS.

В этом вопросе нельзя однозначно ответить:

  • CSS может быть недействительным (синтаксис)
  • CSS может иметь "синтаксические ошибки"
  • CSS не будет "давать" ошибки, а ошибки обычно просто игнорируются обычными интерпретаторами.

Ответ 9

@om. да, это может заблокировать вашу программу, но в очень задних случаях. Например, если вы ретранслируете по ширине элемента, и если вы установите отображение: none для элемента и не делаете случай для возврата undefined, ваше приложение застрянет, потому что ваш параметр не будет иметь значения.

Таким образом, это может помешать выполнению с помехами с другими языками.

Однако, как другие говорят в своих ответах, только css может вызвать ошибку для отсутствующего файла или что-то вроде этого, но это не остановит выполнение приложения.

Но я видел проблему, когда свойство css может заставить jquery-метод работать неправильно, а для этого ошибка jquery throw и остановить выполнение приложения.

Ответ 10

css может блокировать программу таким образом, если у вас есть кнопка, а некоторые свойства css не позволяют хорошо отображать на вашей странице, в этом случае мы можем сказать, что она блокируется, в противном случае он не блокирует для выполнения. даже ошибки не блокируют выполнение, это просто неправильно или неправильно отображает вещи.

Ответ 11

Ответы зависят от того, как вы определяете Ошибка.

  • Если Ошибка означает что-то неожиданное, то CSS наверняка дает ошибки, потому что это не будет работать, если у вас что-то не так в синтаксисе.

  • Если Ошибка означает бросить что-то в браузер или консоль, CSS не делает этого.

  • Если Ошибка означает что-то, что нарушает рабочий процесс и останавливает выполнение следующей части кода, CSS не делает.

Если вы рассматриваете пункты 2 и 3, вы можете рассматривать ошибки CSS, такие как предупреждения на PHP или другие языки программирования. Единственное отличие состоит в том, что в PHP у нас есть возможность включить их, чтобы что-то бросить в браузере. CSS до сих пор не имеет такого варианта.

Ответ 12

CSS-рендеринг - это процесс браузера (или аналогичный) и предназначен для того, чтобы не "бросать ошибку" (исключение и т.д.)....В теории.

(ошибки в libs/dependencies могут приводить к истинным ошибкам, таким как некоторая комбинация символов, высвобождающих большую ОС. Эти ошибки хорошо документированы во всех операционных системах и за ее пределами, но работают на грани этого запроса)

Я много раз читал из многих источников, что каждый браузер хочет иметь совместимую функцию CSS и делает все возможное, чтобы "поглотить" плохую или ошибочную работу по исправлению синтаксиса как можно быстрее. Повреждение (интерпретация) интерпретатора CSS вполне возможно, но я всегда думаю о том, что окончательная реализация синтаксического разбора CSS является ароматом основного анти-шаблона в Python:

# bad code, just some theory, my Python code "always works"
try:
    # code
except:
    pass

где проглатываются любые и все ошибки.

Как утверждали другие: "Является ли CSS ошибкой?" это плохой или, возможно, трюк. CSS - синтаксис или язык.

Итак, настоящая сделка: Язык не дает ошибок и не имеет возможности для ошибки. Только интерпретация языка может быть обеспечена (как результат оценки). Только оценка может найти ошибку.

Если в вопрос добавлен термин "парсер", то "ДА", синтаксический анализатор CSS дает ошибку. Но поскольку фраза стоит в вашей (не отредактированной) почте, я бы ответил с некоторым лингвистическим whoop-a $$ и немного CS-101: Нет, вот почему...

Просто мои $0,02 от программиста + лингвиста.

Ответ 13

"Является ли CSS ошибкой?" - Нет

Сам CSS не дает ошибки. Он просто игнорирует этот атрибут, если он неверен. Если есть синтаксическая ошибка, тогда она также игнорирует то же самое, и если какой-либо другой селектор будет вызван из-за ошибки синтаксиса (например, отсутствует), который также будет проигнорирован.

Существуют различные IDE (например, visual studio), выделяющие ваши ошибки. Поскольку gabe3886 сказал, что вы также можете проверить свой синтаксис, используя W3C CSS Validator

Ответ 14

НЕТ, CSS никогда не дает ошибку. Вы не сможете увидеть какую-либо ошибку в консоли или в любом месте, вызванную CSS.

Поскольку CSS - это просто стиль оформления, и если что-то не получится в стиле, как ожидается, оно не будет объявлено как ошибка.

Чтобы отметить, что у нас есть багги CSS-код, нам придется посмотреть на страницу, и некоторые элементы на странице будут отображаться как ожидалось. Есть некоторые трюки для отладки кода CSS.

Ответ 15

html - это язык разметки, он не содержит ошибок, так как css
если что-то пошло не так, он пытается показать, что правильно до метки css не имеет ошибок, но предупреждения, как мы видим в консоли, что определенные свойства недействительны
например, используя -webkit- во время просмотра в safari или mozilla

Ответ 16

Нет, "CSS не дает ошибки", но я думаю, что интервьюер, возможно, неправильно задал вопрос.

Если интервьюер не задавал вопрос неправильно, то мы можем окончательно сказать, что нет, CSS не дает ошибок. В спецификации CSS нет оценщика или компилятора, который сканирует ваш каскад, ищущий ошибки. Можно даже утверждать, что браузеры не имеют обработки ошибок для CSS, так как все широко используемые браузеры фактически отбрасывают ошибочно написанные объявления, а затем выполняют поиск ближайшей полуколонии, а затем возвращаются к каскаду чтения.

Вкладка Atkins Jr имеет хорошее объяснение того, как браузеры обрабатывают ошибки в CSS и почему они обрабатывают их таким образом.

Если браузер пытается проанализировать объявление и он встречает что-то, что он не понимает, он отбрасывает объявление, а затем ищет вперед, пока не найдет точку с запятой, которая не находится внутри {}, [] или ().

Итак, если интервьюер пытался сыграть в игру с этим вопросом, я думаю, вы можете с уверенностью ответить, что нет, CSS не дает ошибку. Но есть приличный шанс, что интервьюер может не понимать CSS и как браузер интерпретирует CSS и хочет, чтобы вы нашли ошибки в блоке CSS. Никогда не стесняйтесь спрашивать интервьюера, что они могут иметь в виду, когда они задают вопрос, или если это вам не кажется ясным.

Ответ 17

Является ли CSS дающей ошибку? Работает ли CSS самостоятельно с его отдельным "компилятором"?

Конечно, НЕ, что касается CSS, браузер является компонентом процесса выполнения, который дает ошибки, в то время как CSS сам по себе не работает.

Пример     

#foo{
    Bar: 50%;
    Nonsense: 100%;
    color: red
    }

В этом случае браузер будет игнорировать достоинства Bar ans Nonsense и перейти к цветовому приличию. И у вас не будет исключений или ошибок, брошенных, в отличие от JS (только для сравнения). Таким образом, очевидный ответ: No!

Ответ 18

Да, точно в какой-то момент CSS может также давать ошибку, но не через ошибку, а не останавливает стилизацию после того, где Синтаксис имеет ошибку.

CSS

.myClass {
    color : red
    background-color : green;
}

Этот код даст ошибку, в то время как код не будет выполнен в этом случае.

Ответ 19

В заключении я могу сказать в словах @Kishan Choudhary: "Является ли CSS дающей ошибку?" - Нет

но может быть синтаксический разбор и браузер, дающий ошибки.

Эти пункты помогают мне получить заключение.

  • Сам CSS не даст ошибку. (@Gabe3886)
  • Обычно ошибки в CSS не вызывают сообщений об ошибках в браузере. Любой неправильный код просто игнорируется Спецификация явно указывает, как игнорировать ошибки синтаксического анализа. (@Guffa)
  • Парсер CSS не будет останавливаться на ошибке. Он просто помещает журнал ошибок в консоль, если обнаруживает какое-либо недопустимое свойство css, которое не может быть проанализировано/упомянуто в спецификациях и игнорирует (1) все данные css-rule, пока он не найдет следующий;. (@rajuGT)
  • Недопустимые ключи/значения css должны быть пропущены, и поставщик браузера может выбрать ошибку в devtools/firebug, чтобы помочь разработчикам исправить это. (@rajuGT)
  • "Является ли CSS ошибкой?" - Нет | Сам CSS не дает ошибок. Он просто игнорирует этот атрибут, если он неверен. (@Кишан Чоудхари)
  • Однако, как любой язык, специфичный для домена, CSS имеет синтаксис и считывается интерпретатором (очень похожим на декларативный язык программирования Turing). (@Blackbam)
  • Да, это может заблокировать вашу программу, но в очень задних корпусах. (@Георгий Пламенов Георгиев)
  • CSS никогда не "дает" ошибки, потому что любые ошибки будут эффективно проанализированы и исправлены или проигнорированы, но никогда не прекратят выполнение правил или анализатора. (@Eduardo Wada)
  • Да, точно в какой-то момент CSS может также давать ошибку, но это не ошибка, а не остановка стилизации после того, где Синтаксис имеет ошибку. (@Камал Кумар)
  • Большинство браузеров, как правило, игнорируют ошибки проверки CSS и продолжают работу с остальными правилами. (@DeshanR)
  • В консоли Если неправильный путь к фоновому изображению будет отображаться как: Не удалось загрузить ресурс: net:: ERR_FILE_NOT_FOUND (@om)
  • @om, Это не ошибка броска CSS. Это ошибка браузера, потому что она не может загрузить ресурс. (@Farzad YZ)

Спасибо, ребята.