gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          CSS設計:創建圓角邊框一種嘗試

          可能你曾經聽過類似下面的言論:

          “用CSS設計的站點往往是箱子般四四方方的,并且都是非常死板的棱角。有圓角邊框嗎?”

          圓角設計現在就在這里了:)。本篇教程中將示范如何完成一個可以靈活應用于動態內容布局的“圓角邊框”。

          ●The markup
          注意在下面的示例代碼中,XHTML 斷行標記“<br />”被嵌入樣本段落中。 

          <h2>Article header</h2>  
          <p> A few paragraphs of article text.<br />  
          A few paragraphs of article text. </p>  
          <p> A few paragraphs of article text.<br />  
          A few paragraphs of article text. </p>  
          <p> A paragraph containing author information </p>


          ●The hooks
          如果我們需要完全控制頁面布局,就必須利用CSS來影響足夠多的元素:

          首先,將整個文章的內容包含在一個“div”容器內、并適當按主體內容、標題……分段包含于各自的"div"容器內。

          <div class="Article">
            <h2>Article header</h2>

            <div class="ArticleBody">
              <p>
                A few paragraphs of article text.<br />
                A few paragraphs of article text.
                </p>

              <p>
                A few paragraphs of article text.<br />
                A few paragraphs of article text.
                </p>
              </div>
            <div class="ArticleFooter">
            <p>
              A paragraph containing author information
              </p> 
              </div>
            </div>



          從代碼中可以看出,至少需要5個“容器”類代碼,為了構成我們需要的圓角矩形,還需要做幾個圓角圖片。

          ●The design
          首先來看看最終的外觀:如圖2

          “我需要邊界和拐角看起來和這個類似”,同時他告訴我們:“文章也許有不同的寬度和高度、而且他還不能肯定文章需要什么樣的背景”,事實上、他也不能確定邊框到底是什么樣式。“能否給我們提供一種便與修改的開放式方式來管理邊框呢?”他問到。

          ●The process
          我 們已經將整個文章包含于“DIV”內,應用于左上角、頂端和左邊。Header元素是默認的塊級元素,我們將利用塊級元素“繼承”特性來設置寬度。使用 <h2>元素控制右上角頁面布局。文章頁腳部分也使用了一個“ div ”來確定布局包含的段落來確定右下角布局。

          左、上以及左上角部分:

          右邊以及右上角部分:

          底部,以及左下角:

          右下角部分:

          右邊部分:

          ●The styles
          接下來, 為包含整個文章的DIV容器設置邊框和相對寬度:


          div.Article {
            width:35%;
            border: 1px solid red; }
          div.Article h2 {
            border: 1px solid blue; }
          div.ArticleBody {
            border: 1px solid black; }
          div.ArticleFooter {
            border: 1px solid blue; } 
          div.ArticleFooter p {
            border: 1px solid magenta; }


          從上圖中可以看到“類”:" ArticleBody "控制的“DIV”前后存在缺口(編者注:上下沒有緊密結合,有距離)。先忽略這個問題,繼續修改完善樣式表。

          以下是引用:
          body { 
            background: #cbdea8; 
            font: 0.7em/1.5 Geneva, Arial, Helvetica, sans-serif; 
            } 
          div.Article { 
            background:  
              url(images/custom_corners_topleft.gif) 
            top left no-repeat; 
            width:35%; 
            } 
          div.Article h2 { 
            background:  
              url(images/custom_corners_topright.gif)  
            top right no-repeat; 
            } 
          div.ArticleBody { 
            background:  
              url(images/custom_corners_rightborder.gif)  
            top right repeat-y; 
            } 
          div.ArticleFooter { 
            background:  
              url(images/custom_corners_bottomleft.gif)  
            bottom left no-repeat; 
            } 
          div.ArticleFooter p { 
            background:  
              url(images/custom_corners_bottomright.gif)  
            bottom right no-repeat; 
            } 

          還好,比我們想像的要好,不過顯而易見,我們需要為各自元素添加“padding”,以保證邊框布局看起來更好一些。其次,上面提到的缺口問題也會得到解決。形成“缺口”的原因是插入“段落”時回車所至。應盡量避免使用<P>元素從而繞過這個問題。

          假定一個回車符等于“1.5em”,相當于我們指定了“line-height”行高,因此我先為ArticleBody和ArticleFooter容器設置 margin-top:-2em;。測試結果是大多數標準瀏覽器中都能正確地顯示,

          至于為什么設置 margin-top:-2em;,這個數值是經過不斷的測試調整之后確定的。

          繼續完善樣式表:

          以下是引用:
          div.Article { 
            background:  
              url(images/custom_corners_topleft.gif)  
            top left no-repeat; 
            width:35%; 
            } 
          div.Article h2 { 
            background:  
              url(images/custom_corners_topright.gif)  
            top right no-repeat; 
            font-size:1.3em; 
            padding:15px; 
            margin:0; 
            } 
          div.ArticleBody { 
            background:  
              url(images/custom_corners_rightborder.gif)  
            top right repeat-y; 
            margin:0; 
            margin-top:-2em; 
            padding:15px; 
            } 
          div.ArticleFooter { 
            background:  
              url(images/custom_corners_bottomleft.gif)  
            bottom left no-repeat; 
            } 
          div.ArticleFooter p { 
            background:  
              url(images/custom_corners_bottomright.gif)  
            bottom right no-repeat; 
            display:block; 
            padding:15px; 
            margin:-2em 0 0 0; 
            } 

          ●Backward compatibility?
          向后兼容性:如果使用 Netscape 4.x 瀏覽器觀察這個例子的話,你會注意 到頁面露出一點空白。還沒有什么好辦法解決這個問題,NS 4.x 不能解釋類似 media = " all ",所以,一種代替的解決方案是隱藏不能 被瀏覽器正確執行的式樣,,盡管這個方法比較麻煩,例如將字體大小規范從 ems 改為 pxs 。如果你需要向后兼容,就必需這么做。
          ●The real world
          真實的世界:“Yeah,但是我們想要看真實的應用”,我們預先考慮到這個問題并提供了一個結構關系更加復雜的示例圖

          ●Limitations
          局限性:如果你注意的話,利用這種方法,需要提供合適的左上角/右上角……圖形。如果右上角圖片是透明的,那么在它之下的左上角圖片就會顯示出來,同理底部也一樣。

          另外一個利用CSS構建圓角矩形的實例:

          (英文網站) 
          http://www.vertexwerks.com/tests/sidebox/

          posted on 2008-03-26 14:12 gembin 閱讀(1252) 評論(0)  編輯  收藏 所屬分類: CSSHTML

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 突泉县| 睢宁县| 海伦市| 敖汉旗| 延安市| 平远县| 大港区| 信阳市| 玉屏| 鄂伦春自治旗| 琼结县| 同心县| 多伦县| 甘南县| 洛阳市| 咸丰县| 舒城县| 湖州市| 综艺| 福建省| 抚远县| 张家川| 乳源| 新安县| 晋城| 新化县| 绥中县| 葵青区| 武鸣县| 曲阜市| 新竹市| 十堰市| 射阳县| 资兴市| 芮城县| 永城市| 古丈县| 赤壁市| 金阳县| 咸阳市| 台东县|