min-标签兼容

本文介绍了一种兼容IE6、IE7及Firefox等浏览器的min-height实现方法,利用IE6对overflow属性的特殊处理,确保了不同浏览器下元素能够拥有最小高度。
min-height最小高度的实现(兼容IE6、IE7、FF)(解决IE6不兼容min-height)


布局过的人都知道CSS的最小高度min-height是个很有用的属性,它可以让很短的内容也有一个很合适的高度,使页面显得美观。但很可惜IE6不支持这一属性。怎么办呢?我们可以用另外一种方法让IE6也有最小高度min-height属性的效果。


  众所周知,如果内容超过元素的高度,那么IE6是会自动增加元素的高度,即使你明确的定义了元素的高度。我们可以利用IE6的这个bug来让IE6也有最小高度min-height属性的效果。


  E6对于overflow的特殊实现,给我们实现min-height提供了一个思路,所以产生了以下兼容IE6、IE7、FF浏览器的min-height写法:


mrjin {
    background:#ccc;
    min-height:100px;    /*高度最小值设置为:100px*/
    height:auto !important; /*兼容FF,IE7也支持 !important标签*/
    height:100px; /*兼容ie6*/
    overflow:visible;
}


解释:


1、由于IE6对!important的解释存在bug,所以它只识别height:500px这一句,超过500px后,IE6自身会增加盒子的高度;


2、IE7和其他标准浏览器三句都能识别,虽然定义height:500px,但我们又有了height:auto !important,所以超过500px也能自动增加盒子的高度。


   最大宽度...主流浏览器IE对max-width是不支持的,对这一属性的设置在IE中是无效的。同样的对min-width的设置也是无效的(只能用JS处理)。
<think>好的,我现在需要解决用户的问题:为什么在XML Schema中,使用`<min-inclusive>-50</min-inclusive>`无法解析,而正值如`<minInclusive>36</minInclusive>`可以正常解析。首先,我需要回忆XML Schema的相关知识,特别是关于`xs:minInclusive`元素的定义和使用。 首先,用户提供的示例代码中有一个XML元素定义:`<xs:element name=“min-inclusive” type=“xs:float”/>`。这里可能存在拼写错误或者命名问题。正确的元素名应该是`xs:minInclusive`,而不是用户写的`min-inclusive`。因为XML Schema的内置元素名称通常使用驼峰式命名,比如`minInclusive`,而不是带连字符的。因此,用户可能在定义元素时使用了错误的名称,导致解析器无法识别。 接下来,用户提到当使用`<min-inclusive>-50</min-inclusive>`时无法解析,但正值如`<min-inclusive>36</min-inclusive>`可以。这里可能有两个问题。首先,元素名称是否正确,即是否在Schema中正确定义了名为`min-inclusive`的元素,并且其类型为`xs:float`。如果Schema中定义的是`xs:minInclusive`,而用户错误地写成了`min-inclusive`,那么解析器会因为元素名称不匹配而报错。例如,正确的定义应该是`<xs:element name="minInclusive" type="xs:float"/>`,但用户写成了`name=“min-inclusive”`,导致元素名称不一致。 其次,关于负值的处理,可能需要检查数值的表示是否符合XML Schema的要求。例如,负号`-`是否被正确识别,是否存在空格或其他不可见字符干扰。例如,如果写成`<min-inclusive> -50 </min-inclusive>`,中间有空格可能导致解析错误。但用户提供的例子中似乎没有空格,所以这可能不是主因。 另一个可能性是,当元素名称错误时,解析器可能默认该元素的内容需要符合某种特定类型,而负值可能在此情况下触发了类型不匹配的错误。例如,如果解析器期望一个无符号类型,但传入了负值,就会出错。但根据用户提供的元素类型为`xs:float`,这应该允许负值,所以这可能不是主要原因。 综合来看,最可能的问题是元素名称的错误。用户可能在Schema中定义了一个名为`min-inclusive`的元素,但实际在XML实例中使用时,正确应使用`xs:minInclusive`,这是XML Schema预定义的约束元素。因此,当用户自定义了一个名为`min-inclusive`的元素,并尝试用其作为约束时,解析器可能无法正确识别其用途,尤其是当该元素被错误地定义或命名时。而正值能够解析可能是因为在某些情况下,即使元素名称错误,正值可能被错误地解析为其他类型,或者刚好符合某个隐式的类型转换,但负值可能因为符号的存在导致更严格的解析失败。 此外,检查用户提供的XML代码中的引号,发现用户使用了中文引号“ ”而不是英文引号",这可能导致解析错误。例如,`name=“min-inclusive”`中的引号是中文全角符号,而XML解析器要求使用英文半角引号。这会导致元素名称定义无效,从而使整个元素无法被正确解析。同样,在实例中的元素标签如果也使用了错误的引号,会进一步导致问题。 总结可能的原因: 1. **元素名称错误**:用户自定义了`min-inclusive`元素,而非使用标准的`xs:minInclusive`。 2. **引号格式错误**:在Schema定义中使用了中文全角引号,导致解析失败。 3. **负值格式问题**:负号可能存在格式问题,如空格或其他字符干扰,但可能性较低。 4. **类型定义问题**:虽然用户声明类型为`xs:float`,但可能存在其他约束导致负值不被接受,但根据Schema规范,`xs:float`应允许负值。 因此,解决方法应为: - 更正元素名称为`xs:minInclusive`,使用标准Schema元素。 - 确保所有引号为英文半角引号。 - 检查负值的正确书写,无多余空格或字符。</think>在解析XML Schema时出现该问题的根本原因可能涉及以下几个方面: --- ### 一、元素名称格式问题 1. **驼峰命名要求** XML Schema的内置约束元素(如`minInclusive`)遵循**驼峰式命名**(camelCase),而非连字符格式(如`min-inclusive`)。 - 错误定义:`<xs:element name="min-inclusive" type="xs:float"/>` - 正确定义:应直接使用预定义元素`xs:minInclusive`,无需额外声明。 2. **自定义元素的兼容性** 如果强行自定义`min-inclusive`元素,解析器可能无法识别其语义,导致负值解析失败,而正值可能因巧合满足其他隐式类型规则。 --- ### 二、数值格式规范 1. **负号的合法性** `xs:float`类型支持负值(如`-50`),但需确保**负号与数值间无空格**: - 错误:`<min-inclusive> -50 </min-inclusive>`(含空格) - 正确:`<min-inclusive>-50</min-inclusive>` 2. **类型约束冲突** 如果误将类型定义为`xs:unsignedInt`等非负类型,负值会直接报错,但用户已声明为`xs:float`,故可排除此原因。 --- ### 三、隐藏字符或编码问题 1. **全角符号干扰** 示例代码中使用了中文全角引号`“”`: ```xml <xs:element name=“min-inclusive” type=“xs:float”/> ``` XML严格要求**英文半角引号**,需修正为: ```xml <xs:element name="min-inclusive" type="xs:float"/> ``` 2. **不可见字符** 负值`-50`中可能包含不可见的控制字符(如零宽空格),导致解析失败。 --- ### 四、解决方案 1. **使用标准Schema元素** 直接使用预定义的`xs:minInclusive`,避免自定义: ```xml <xs:minInclusive value="-50"/> <!-- 标准写法 --> ``` 2. **检查符号格式** 确保负号`-`紧贴数值,且无多余空格或特殊字符。 3. **修正引号和编码** 将所有引号替换为英文半角符号,并检查文件编码是否为UTF-8。 --- ### 示例修正后代码 ```xml <!-- Schema定义(如需自定义) --> <xs:element name="minInclusive" type="xs:float"/> <!-- 实例中的合法使用 --> <minInclusive>-50</minInclusive> <!-- 可解析 --> ``` 通过以上调整,负值和正值均可正常解析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值