当前位置: 首页 > 面试题库 >

没有单位的CSS属性的后备

胡元忠
2023-03-14
问题内容

考虑以下场景,其中CSS属性缺少单位(px,em,pt,%):

<body>
    <div 
        style=  "width:170;
                border:1 dotted PaleGreen;
                background-color:MistyRose">
        The quick brown
    </div>
</body>

问题:

  1. 为什么会退回给px?像素始终是首选单位吗?W3C工作草案或建议中是否定义了任何规则?
  2. 是否有一条规则使UA必须回退到首选单位?
  3. 给定以上示例,以下哪项是正确的行为:
    • Internet Explorer:在Quirks模式(IE6,5,4 ..)中,宽度和边框宽度用于回退到px。由于IE7(直到现在,IE10RP),如果缺少单位,它将忽略整个规则。因此,这两个规则都被忽略了。
    • Firefox 13:在上面的示例中,宽度回退为px,但是border-width被忽略了。
    • Chrome 19,Opera 12,Safari 5.1.2:宽度和边框宽度均退回到px。

注意:在Microsoft-Connect上,他们说:

您要报告的问题是设计使然。在标准模式下,IE10会忽略没有符合CSS标准的单位的宽度或高度。 该单元不是可选的。


问题答案:

我在您的HTML中看不到doctype声明,因此我只能假设您的测试页是以怪癖模式呈现的。

  1. 为什么会退回给px?像素始终是首选单位吗?W3C工作草案或建议中是否定义了任何规则?

它只会退回到px怪癖模式(并且我相信仅适用于某些属性)。是的,px是首选的后备广告单元。这回溯到旧版HTML
widthheight接受像素长度作为无单位数的属性。

  1. 是否有一条规则使UA必须回退到首选单位?

不,因此您观察到不一致的行为。但是,在标准模式下,UA需要忽略不带单位的长度值。如引用的Microsoft Connect中所述,该单元不是可选的。

在CSS2.1中,所有非零长度值都必须具有单位。

  1. 给定以上示例,以下哪项是正确的行为:

    * Internet Explorer:在Quirks模式(IE6,5,4
    

    ..)中,宽度和边框宽度用于回退到px。由于IE7(直到现在,IE10RP),如果缺少单位,它将忽略整个规则。因此,这两个规则都被忽略了。
    * Firefox 13:在上面的示例中,宽度回退为px,但是border-width被忽略了。
    * Chrome 19,Opera 12,Safari 5.1.2:宽度和边框宽度均退回到px。

同样,基于您的页面处于怪异模式的假设,我只能说,虽然规范中提到了怪异行为,但规范中并未定义此类怪异行为的具体细节(无论是显而易见的还是非怪异的,很明显的原因)。

我猜微软会改变IE7 +中的怪癖模式行为,以反映无单位值的标准行为,因为怪癖模式存在于 所有浏览器中 (IE
<6除外),并且是由相同的不正确doctype或缺少doctype触发的。据我所知,标准模式下的行为没有改变。



 类似资料:
  • 我正在用Gradle构建一个JAR文件。当我尝试运行它时,我得到了错误 RxJavaD中没有主清单属性emo.jar 我试图操纵清单属性,但我想我忘记向它添加依赖项或其他东西了。我到底做错了什么?

  • 我已经阅读了这篇文章,并确保将TEMP和TMP的系统变量和用户变量分别设置为C:\TEMP和C:\TMP。我已经重新启动了我的机器两次,但当我的应用程序调用系统时。getProperty(“java.io.tmpdir”)它一直指向C:\Program Files\Apache Software Foundation\Tomcat 8.5\temp。为什么要这样做?我如何才能让它指向C:\Temp

  • 问题内容: 运行基于Gradle构建的JAR文件时遇到的错误让我有点发疯。错误显示为“ RxJavaDemo.jar中没有主清单属性”,我尝试操纵Manifest属性,但我想我忘记在其中添加依赖项或其他内容。我到底在做什么错? 问题答案: 尝试更改清单属性,例如: 然后只需更改为(您的Main类具有main方法)。在这种情况下,您可以在清单中创建一个指向此类的属性,然后运行一个jar。

  • 我得到以下错误,而Spring引导罐在CI环境 奇怪的是,它没有在我的本地奴隶或詹金斯奴隶中给出问题。一切都很好。 当我将jar上传到Nexus artifactory并将其下载到我的CI环境中时,它面临问题。 建筑罐子使用 我的gradle.build档案 没有白费的文章1。没有主清单属性2。http://www.vogella.com/tutorials/Gradle/article.html

  • 我正在尝试运行由maven shade插件创建的jar。我正在以以下方式配置主类: 编辑:我使用jar tf app.jar检查了jar的内容,看到了一个manifest.mf文件。但它没有main类的条目。我如何确保jar中的清单文件中有这个条目,以便在shade插件配置中添加它?

  • 我知道jar文件应该有一个manifest.mf main-class:属性,以便有一个入口点并使jar文件可以运行。现在,我有了一个jar文件,我已经在下面构建了它。这些类都是卷饼包的一部分。我的MANIFEST.MF文件如下所示: