建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网页设计 > css教程 >

display:inline-block的应用两例

时间:2009-03-24 18:58来源: 作者: 点击:
display:inline-block的应用两例CSS的display有属性值inline-block{display:inline-block;},下面是应用其来实现用图片替代文字的两个例子:

CSS的display有属性值inline-block{display:inline-block;},下面是应用其来实现用图片替代文字的两个例子:

请看。

Markup

<i class="arrow-1 replacement">箭头1</i>
<a href="http://dancewithnet.com" class="arrow-2 replacement">箭头2</a>
<p class="arrow-3 replacement">箭头3</p>

CSS

/* start:arrow */
.replacement{
    display:inline-block;/* Firefox3 beta、IE8 beta、Opera、Safari支持*/
    display:-moz-inline-stack;/* Firefox的私有属性,也可以用-moz-inline-box */
    *display:inline;
    zoom:1;/* 这两行,激活IE6/7的layout,实现类似效果 */
    line-height:9999em;
    overflow:hidden;/* 上面两行,隐藏因设置容器大小而溢出的文字,对Firefox2无效 */
    font-size:0;/* 解决上面两行代码在Firefox2下无法隐藏溢出文字*/
    /*
      * 上面是综合怿飞给出清除溢出文字新方法后的方案,下面是以前的方案
      */
    text-indent:-9999px; /* 隐藏文字,Safari和Opera下无法仅用{font-size:0;}来解决 */
    overflow:hidden;/* 上面两行,隐藏因设置容器大小而溢出的文字,对Firefox2无效 */
    font-size:0;/* 解决上面两行代码在Firefox2下无法隐藏溢出文字(谢谢怿飞)*/
    *text-indent:0;
    /* 解决IE6/7下text-indent:-9999px的bug,
     <p><a style="text-indent:-9999px;" class="replacement">箭头</a>文字</p>
     相当于
     <p style="text-indent:-9999px;"><a  class="replacement">箭头</a>文字</p>
      导致整段文字的消失,而当该链接前面有文字时则没有问题,如:
      <p>文字<a  class="replacement" style="text-indent:-9999px;">箭头</a>文字</p>
    */
    line-height:0;/* 解决{text-indent:0;font-size:0;}时,IE下文字还留下一条横线的bug  */ 

    vertical-align:middle;/* 行内垂直居中,对Opera有特殊意义,其和文字混排偏移有点离谱 */

    /*default for arrow-1*/
    width:6px;
    height:12px;
    background:url(signs.png) no-repeat 0 -360px;
}
.replacement i{
    /*display:none;*/
    /*visibility:hidden;*/
    display:block;
     /* 因为Firefox2的原因,配合里面的i标签,用来实现文本的隐藏。
               如果用注释部分的任意一个,可以删掉.replacement中的text-indent:-9999px;  */
}
.arrow-1{
}
.arrow-2{
    width:8px;
    background-position:0 -500px;
}
.arrow-3{
    width:14px;
    background-position:0 -580px;
}
.only-ff2{
    padding-left:9999px;
    /* 解决单标签下Firefox2下无法隐藏文本问题,
                 但是对其他版本浏览器都造成巨大影响,不可取 */
}
/* end:arrow */

上面的一个较复杂的应用。

在这个应用中可以发现-moz-inline-box-moz-inline-stack的区别,比如把例二中-moz-inline-stack改成-moz-inline-stack。在实际应用中-moz-inline-box会存在元素间的对齐等问题,虽然Firefox还有一个私有属性-moz-box-align来帮助解决对齐问题,但依旧难以预料问题多多,而相对来说-moz-inline-stack的表现更像inline-block,这点可以在Firefox3中测试出来。但-moz-inline-stack使用时也会有一个bug,如果一个{display:-moz-inline-stack;}的元素外层元素是{display:inline;}即会使Firefox中其包含的链接不可点,这个需要用{position:relative;}来解决(谢谢乌龙茶):

ul.pagination{
    display:inline;
}
ul.pagination li{
    display:inline-block;
    display:-moz-inline-stack;
    *display:inline;
    zoom:1;
    *margin:0 3px;
    vertical-align:middle;
    _vertical-align:bottom;
    position:relative;
    /* 解决因为ul的{display:inline;}问题导致Firefox中li里面的链接不可点的bug */
    *position:static;
    /* 解决因为IE6中因为上一行代码带来在{position:relative}容器中移位在bug */
}
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片