折疊盒的CSS邊框過關
3月8日,在下午03:23 2011年由亨利Koblentz在CSS 101 的設計 , 開發 | 8評論 這些技巧將幫助您實現設計,而不訴諸使用圖像,CSS3的梯度或無關的標記。 折疊箱零line-height和height值,我們可以顯示的內容框以外的內容,超過邊界。
雙色背景
這個例子沒有包括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瀏覽器的邊框透明度設置邊界式“虛線或點
這就是它! 這僅僅是一個方法使用的邊界,以實現圖像設計。
進一步閱讀
共享和擴展: 書籤del.icio.us Digg它! | reddit!
8評論
很抱歉,評論已被封閉,在這個時候。


太棒了! 但是,關於Opera呢?
銅像 - 2011年3月9日, #
@銅像
歌劇出現錯位的文本。 把它上面的內容框如果該行的高度設置為0或低於它,如果line-height的不歸零。
有人應提交一個bug ;-)
作為一個方面說明,我可以經常做的事情在所有瀏覽器(包括IE6),但我用Opera打牆。
此瀏覽器是一個真正的痛苦。 它有問題,但我們不能修復它就像我們用IE6 / 7(因為我們不能針對版本)。 最重要的是,它不會有多大的市場份額,我們為什麼要浪費時間?
感謝您的反饋
評論由蒂埃里Koblentz - 2011年3月9日, #
看來,歌劇不喜歡零線的高度。 我取代了0.1行高,這似乎解決歌劇院。 AFAICT這只會影響IE 8,比歌劇,依吾之見很容易修復。
親切,大衛
評論由大衛Hucklesby - 2011年3月14日, #
嗨大衛,
這是一個偉大的發現,感謝很多分享。
評論蒂埃里Koblentz - 2011年3月15日, #
良好的職位,但停止對IE6的修復。
邁克- 2011年3月16日, #
嗨大衛,
建設意味著什麼(從ul.two類):
顯示:內聯塊;
*顯示:內聯;
我好奇明星關鍵字...謝謝!
保羅 - 2011年3月17日, #
喜保,
在這些規則中,有兩種不同的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日, #
我發現了一個錯誤,我還沒有發現其他地方提到用CSS三角形的渲染。 火狐4在XP中得到不可思議。
這裡有一個演示: http://zevbrokeit.posterous.com/nubs-problem
你有什麼建議?
評論ZEV戈德堡 - 2011年3月24日, #