【原】如何实现IE6下块级元素的内容自动收缩

简介:

近期在做提示层组件的开发,遇到了一个IE6常见的bug....想出了几个解决的办法,挺有意思的,这里分享给大家。

由于IE6浏览器中,display:inline-block只能触发IE的haslayout属性使得元素具有布局属性,当对div元素使用display:inline-block,div元素仍然为块状布局而占据一行。

那么如何在IE6下使得块级元素的内容自动收缩呢?开发圆角小提示层模块,让它来解答这个问题。

结构和样式:

复制代码
/**
  * @name      : prompt
  * @explain   : 圆角小提示层
  * @type      : 基类
  * @dependent : 无
  * @author    : peunzhang
  * @version   : 2012.9.6
  * @html      :
<!-- 圆角小提示层 [[ -->
<div class="prompt">
    <span class="ico-layer-arrow-up"><!-- 上指示图标 --></span>
    <a href="#" class="ico-close-gold" title="关闭">关闭</a>
    <div class="prompt-main">
        <div class="prompt-cnt"><a href="#">这里输入内容</a></div>
    </div>
</div>
<!-- 圆角小提示层 ]] -->
*/
.ico-layer-arrow-up,.prompt-main,.prompt-cnt,.ico-close-gold{display:inline-block;background:url(https://img.tenpay.com/res/wallet_v2/global/img/global.png?v=20120913) no-repeat;_background:url(https://img.tenpay.com/res/wallet_v2/global/img/global_png8.png?v=20120913) no-repeat;vertical-align:middle;overflow:hidden;}
.prompt{position:absolute;padding:5px;font-size:12px;line-height:12px;font-family:\5B8B\4F53;} .prompt .ico-layer-arrow-up{position:absolute;top:0;left:12px;background-position:-41px -27px;}
.prompt .prompt-main{padding-left:7px;height:20px;background-position:-150px -501px;} .prompt .prompt-cnt{padding-right:18px;height:20px;line-height:20px;line-height:21px\9;white-space:nowrap;vertical-align:top;background-position:right -501px;color:#7C6103;white-space:nowrap;} .prompt .prompt-cnt a{color:#7C6103;} .prompt .prompt-cnt a:hover{color:#0099FF;} .prompt .ico-close-gold{position:absolute;top:12px;right:12px;}
复制代码

 雪碧图的一角:


打开IE6浏览器,展现如下,宽度并不能自动收缩(这里浏览器窗口宽度被缩小到400px)

经过不断的测试,使用以下3种方法可以解决该bug

解决办法1:把span元素替换div元素,span元素设置display:inline-block呈行块布局,具有自动收缩的效果

复制代码
<div class="prompt">
    <span class="ico-layer-arrow-up"><!-- 上指示图标 --></span>
    <a href="#" class="ico-close-gold" title="关闭">关闭</a>
    <span class="prompt-main">
        <span class="prompt-cnt"><a href="#">这里输入内容</a></span>
    </span>
</div>
复制代码

 解决办法2:针对IE6浏览器,给最外层的div元素设置宽度:_width:1%,使得最外层的宽度自动收缩

.prompt{_width:1%}

解决办法3:针对IE6浏览器,触发块级元素的haslayout属性,并设置display:inline可使得块级属性呈现行块布局模式,详细可看《display:inline-block下的IE元素

.prompt-main,.prompt-cnt{_zoom:1;_display:inline;}

 模块开发完成,实现了内容自动收缩,根据实际的场景而选择最佳的使用方法,这里采用了第一种方案,优点是不写任何hack,缺点是可扩张性不佳。

 

 

作者:白树

出处:http://peunzhang.cnblogs.com/

目录
相关文章
|
数据库
Layui入门&动态树&动态选项卡&用户增加&修改&删除&(一)
Layui入门&动态树&动态选项卡&用户增加&修改&删除&
|
1月前
|
JavaScript 前端开发
伪元素清除法会影响页面性能吗?
【10月更文挑战第27天】伪元素清除法在正常使用情况下对页面性能的影响不大,是一种较为高效和常用的清除浮动的方法。但在实际应用中,仍需要结合页面的具体情况和其他相关技术的使用来综合考虑性能优化问题,以确保页面能够达到最佳的性能表现。
|
6月前
|
移动开发 前端开发 HTML5
有关CSS中排版常见问题(清除默认样式问题 + 元素居中问题 + 元素之间的空白问题 + 行内块的幽灵空白问题)
有关CSS中排版常见问题(清除默认样式问题 + 元素居中问题 + 元素之间的空白问题 + 行内块的幽灵空白问题)
|
前端开发 JavaScript 容器
JavaScrpit如何实现弹出遮罩层后将页面固定到当前位置且无法继续滚动
JavaScrpit如何实现弹出遮罩层后将页面固定到当前位置且无法继续滚动
77 0
Layui入门&动态树&动态选项卡&用户增加&修改&删除&(二)
Layui入门&动态树&动态选项卡&用户增加&修改&删除&
|
前端开发 JavaScript SEO
b标签和strong标签的区别?css单行或多行溢出隐藏如何实现?浅谈this?
b标签只是文本加粗,而strong除了加粗还有强调的语义。
元素去掉滚动条,保留滚动功能
元素去掉滚动条,保留滚动功能
116 0
|
前端开发
CSS样式更改——裁剪、Z-Index、清除、改变元素的特性
CSS样式更改——裁剪、Z-Index、清除、改变元素的特性
181 0
|
前端开发 容器
用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机
原文:用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机       在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打印或存档。
831 0
HorizontalScrollView包裹RecyclerView,使用StaggeredGridLayoutManager均分网格形成表格状列表,不固定列,每次刷新数据列位置异常错乱变动问题
HorizontalScrollView包裹RecyclerView,使用StaggeredGridLayoutManager均分网格形成表格状列表,不固定列,每次刷新数据列位置异常错乱变动问题 问题描述:用Horizon...
2028 0