gab*_*886 37
CSS本身不会给出错误,但是语法错误的CSS将无法正确呈现.浏览器可能无法理解给定点的含义,因此无法正确格式化页面.
CSS在语法上也是正确的,其中所有内容都被正确封闭并且行终止,并且根据W3C规范它符合标准.
编辑:(语法正确性和标准兼容性的示例)以下是语法正确的CSS示例,它不会在W3C CSS Validator上验证失败:
p.my-class {
color : red;
-moz-border-radius : 3px;
}
Run Code Online (Sandbox Code Playgroud)
虽然这是技术上有效的CSS,但根据CSS 2.1语法的供应商特定扩展部分,应该避免使用它们.这是使它们有效的初始破折号或下划线.
Des*_*han 17
我认为问题太广泛而且不具体.这就是我会回答这个问题的方法.
CSS会出错吗?
取决于你正在看的地方.在IDE中?确定它会显示验证错误.在浏览器中?大多数浏览器倾向于忽略CSS验证错误并继续使用其他规则.再次@Kishan Choudhary在另一个答案中提到"CSS"仅指样式语言,语言不能自己提示错误.
Alt键.问题:我们如何在CSS中验证/调试/查找错误?
我们可以说CSS没有给出任何错误吗?
这又取决于你所看到的地方.在开发环境中?是的,几乎所有的Web IDE都可以帮助您找到CSS错误.
在客户端浏览器?与此同时,您可以打开浏览器控制台/开发人员工具(如果可用),并且可能存在日志错误,例如您在CSS中使用的图像的无效或无法访问的URL.再次是CSS语法或验证错误?不
是否有一个解释器在CSS后面工作阻止程序的执行 ?
是的,每个浏览器都有一个符合W3C标准的内置CSS解释器/解析器并且它是否喜欢阻止执行?不,所有大多数浏览器的正常行为都是忽略(不阻止解释和应用剩余的有效样式规则)CSS验证错误和继续其余的规则.
层叠样式表2级修订版1(CSS 2.1)规范
在某些情况下,用户代理必须忽略非法样式表的一部分.此规范定义忽略意味着用户代理解析非法部分(以便找到它的开头和结尾),但是否则就好像它不在那里一样.CSS 2.1保留CSS所有属性的未来更新:值组合和不包含以短划线或下划线开头的标识符的@ -keywords.实现必须忽略这些组合(除了未来的CSS更新引入的组合).
确保将来可以添加现有属性的新属性和新值.
CSS语法模块级别3
当CSS中发生错误时,解析器会尝试正常恢复,在返回正常解析之前只丢弃最少量的内容.这是因为错误并不总是错误 - 新语法看起来像是旧解析器的错误,并且能够向语言添加新语法而不用担心包含它的样式表在旧的UA中完全被破坏是有用的.
Guf*_*ffa 16
通常,CSS中的错误不会导致浏览器中出现任何错误消息.简单地忽略任何不正确的代码(或者在某些情况下通过假设缺少部分来接受,例如长度单位).
CSS解析器尝试在每个不正确的代码之后恢复,因此通常它只会影响样式或错误的规则,解析器不会只停止解析其余的CSS代码.
某些浏览器会向错误控制台添加警告以查找CSS中的错误,因此开发人员可以打开控制台以查看是否存在任何错误.
raj*_*uGT 14
CSS会出错吗?
是的,CSS解析器无法理解的任何规则都会导致错误.通常,系统/程序无法处理的任何数据都会导致错误.但是系统最终如何处理该错误是你的问题而且可以
该CSS解析器不会停止在一个错误.它只是将错误日志放入控制台,如果它找到任何无法在规范中解析/提及的无效css属性,并忽略(1)所有css规则数据,直到找到下一个;.
正如w3c.org doc所说
UA必须跳过具有无效属性名称或无效值的声明.
这里UA(用户代理)在我们的例子中意味着浏览器.因此必须跳过无效的css键/值,浏览器供应商可能会选择在devtools/firebug中显示错误,以帮助开发人员修复它.是否依赖浏览器供应商来放置错误日志.
小智 9
有些浏览器会在控制台中报告CSS错误.Firefox浮现在脑海中.
<style> foo { bar: baz; } </style>
Run Code Online (Sandbox Code Playgroud)
导致错误:
未知的财产'酒吧'.宣言下降.CSS-的error.html:2:11
但是,这不会"阻止程序的执行".
据我所知,Chrome中没有类似的功能.
我认为"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
Run Code Online (Sandbox Code Playgroud)
实际上,在相同的情况下,它甚至指定了如何将无效的css转换为有效的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’; }
}
Run Code Online (Sandbox Code Playgroud)
因此从这个角度看,CSS从不"给出"错误,因为任何错误都将被有效地解析和修复或忽略,但永远不会停止执行规则和解析器.
但是,如果你有一个开发人员在IDE前与另一个开发人员交谈,我认为在提到IDE的消息时问"CSS是否给出错误"是公平的,事实上,如果我们看一下CSS解析器项目,可以在文档中清楚地看到解析器可以提供错误消息,它只是直接指示忽略错误的浏览器.
CSS不是真正的编程语言,而是特定于域的语言(https://en.wikipedia.org/wiki/Domain-specific_language).
与JavaScript或PHP等脚本语言(图灵完整的编程语言)以及Java或C CSS等真正的编程语言相比,CSS代码不是真正的程序源代码.
但是,任何特定于域的语言CSS都具有语法并由解释器读取(非常类似于声明性的图灵完整编程语言).
如果语法不正确(在此测试:https://jigsaw.w3.org/css-validator/#validate_by_input),则CSS无效.这取决于使用的解释器如何处理无效的CSS部分,常见Web浏览器中的解释器不会停止CSS语法错误.
因此无法明确回答这个问题:
@om.是的它可以阻止你的程序,但在非常后方的情况下.例如,如果你在元素的宽度上进行中继,并且如果你为元素设置了display:none,并且没有提到返回未定义的情况,那么你的应用程序将会卡住,因为你的参数没有值.
因此,它可以防止执行干扰其他语言.
然而,在他们的答案中,其他人如何说,只有css可以为丢失的文件或类似的东西投掷错误,但它不会停止执行应用程序.
但是我已经看到了一个问题,当css属性可以使jquery方法无法正常工作时,jquery throw错误并停止执行应用程序.