折叠盒的CSS边框过关

3月8日,在下午03:23 2011年由亨利Koblentz在CSS 101 的设计开发 | 8评论

这些技巧将帮助您实现设计,而不诉诸使用图像,CSS3的梯度或无关的标记。 折叠箱零line-heightheight值,我们可以显示的内容框以外的内容,超过边界。

双色背景

这个例子没有包括IE 6/7的解决方法(检查IE浏览器修复这个源代码演示页 )。

双色背景截图
 .parent { display:inline-block; text-align: center; border: 1px solid #cecece; } .child { display:inline-block; line-height: 0; height: 0; border-top: 1em solid #ffc; border-bottom: 1em solid #fdcf46; padding:0 .6em; vertical-align:bottom; } <ul id="menuBar-A"> <li><a href="#">About Us</a></li> <li class="selected"><a href="#">Contact Us</a></li> <li><a href="#">Services</a></li> <li><a href="#">Products</a></li> </ul> 

列表项之间的点和管道

这个例子显示了跨浏览器的一些简单的IE修复后正常。

点和管道截图
 ul.one, ul.two { margin-left:0; display:inline-block; *display:inline; zoom:1; height:12px; line-height:12px; padding:0; } li { float:left; display:inline; height:2px; line-height:2px; position:relative; top:.3em; } ul.two {border-left:1px solid #333;} ul.one li {border-left:2px solid #333;} ul.two li {border-right:2px solid #333;} ul.one li.first-child, ul.two li.last-child { border:0; } a { color:#000; padding:.4em .9em; *position:relative; } <div id="menuBar-B"> <ul class="us"> <li><a href="#">About Us</a></li> <li class="selected"><a href="#">Contact Us</a></li> </ul> <ul class="ourOffer"> <li class="services"><a href="#">Services</a></li> <li><a href="#">Products</a></li> </ul> </div> 

向左和向右的三角形

这个例子没有包括IE 6/7的解决方法(检查IE浏览器修复这个源代码演示页 )。

向左和向右的三角形截图
 #box { line-height: 0; height: 0; border: .4em solid transparent; border-left-color: #333; border-right-color: #333; padding: 0 .3em; display: inline-block; } <ul id="menuBar-C"> <li><a href="#">About Us</a></li> <li class="selected"><a href="#">Contact Us</a></li> <li><a href="#">Services</a></li> <li><a href="#">Products</a></li> </ul> 

IE 6和边境透明度

IE 6不支持关键字“ transparent “边框颜色。 当你使用这个值,IE 6中绘制一个黑色边框。

此解决办法是使用色度过滤器,其中显示了特定颜色的透明物体的内容 例如,要创建一个合适的箭头,你可以使用这条规则:

 #Box { height: 0; width: 0; border: 10px solid transparent; font-size: 0; _border-color: pink; _filter: chroma(color="pink"); border-left-color: #333; } 

字体大小的声明是针对IE 6的另一个解决方法。 它是确保此浏览器不增加框的高度。

!停止印刷机,我只是学会了一个新的技巧(谢谢中和市芳):

神奇的[创建在IE浏览器的边框透明度设置边界式“虚线或点


这就是它! 这仅仅是一个方法使用的边界,以实现图像设计。

进一步阅读

作者简介:蒂埃里Koblentz是在雅虎前端工程师
他拥有TJK设计EZ-css.orgCSS-101.org 你可以按照在Twitter蒂埃里@ thierrykoblentz

共享和扩展: 书签del.icio.us Digg它! | reddit!

8评论

  1. 太棒了! 但是,关于Opera呢?

    铜像 - 2011年3月9日,

  2. @铜像

    歌剧出现错位的文本。 把它上面的内容框如果该行的高度设置为0或低于它,如果line-height的不归零。

    有人应提交一个bug ;-)

    作为一个方面说明,我可以经常做的事情在所有浏览器(包括IE6),但我用Opera打墙。
    此浏览器是一个真正的痛苦。 它有问题,但我们不能修复它就像我们用IE6 / 7(因为我们不能针对版本)。 最重要的是,它不会有多大的市场份额,我们为什么要浪费时间?

    感谢您的反馈

    评论由蒂埃里Koblentz - 2011年3月9日,

  3. 看来,歌剧不喜欢零线的高度。 我取代了0.1行高,这似乎解决歌剧院。 AFAICT这只会影响IE 8,比歌剧,依吾之见很容易修复。
    亲切,大卫

    评论由大卫Hucklesby - 2011年3月14日,

  4. 嗨大卫,

    这是一个伟大的发现,感谢很多分享。

    评论蒂埃里Koblentz - 2011年3月15日,

  5. 良好的职位,但停止对IE6的修复。

    迈克- 2011年3月16日,

  6. 嗨大卫,

    建设意味着什么(从ul.two类):

    显示:内联块;
    *显示:内联;

    我好奇明星关键字...谢谢!

    保罗 - 2011年3月17日,

  7. 喜保,

    在这些规则中,有两种不同的CSS过滤器(CSS黑客),一个被称为星级饭店劈,另一种被称为下划线属性劈。

    他们的工作是这样的:

    *property:value; /* IE5/6/7 see this */
    _property:value; /* IE5/6 see this */

    如果我们把这个顺序是确保第二个声明将覆盖到IE7的价值。

    你可以试试这个:

    color:blue; /* blue in all browsers */
    *color:yellow; /* switching to yellow for IE less than 8 */
    _color:green; /* switching to green for IE less than 7 */

    请注意,这些技巧是可靠的,但CSS验证器将它们标记为错误(因为这是不正确的CSS语法)。

    评论由蒂埃里Koblentz - 2011年3月17日,

  8. 我发现了一个错误,我还没有发现其他地方提到用CSS三角形的渲染。 火狐4在XP中得到不可思议。

    这里有一个演示: http://zevbrokeit.posterous.com/nubs-problem

    你有什么建议?

    评论ZEV戈德堡 - 2011年3月24日,

很抱歉,评论已被封闭,在这个时候。

主办雅虎

©2006-2012雅虎公司所有权利保留。 隐私政策 - 服务条款

支持WordPress的关于雅虎 虚拟主机