CSS揭秘——多重邊框

如果我們想為一個元素設置邊框,很自然的會利用 border 屬性,比如說,我想得到如下效果。

border1.png

非常簡單的,我們只需要設置 border: 8px solid #22EAAA;。但是,如果我們需要為一個元素設置多重邊框呢?該怎么做呢?因為對于一個元素而言, border 只能生效一次,所以我們需要尋找其它屬性去模擬邊框效果。

一般而言,有兩種方案,分別是 box-shadowoutline,關于這二者的詳細介紹如下

CSS box-shadow 屬性
CSS outline 屬性

關于 box-shadow ,它的第四個屬性,也就是 spread 我認為它的效果和普通元素中的 padding 元素是相同的,就是將元素撐開(box-sizing: content-box的情況下)。

關于 outline 屬性,火狐瀏覽器專門為其設置了一個 -moz-outline-radius 屬性,其行為和 border-radius 相同,不過這個屬性只有火狐中才有。

border2.png

為了實現(xiàn)以上效果,outline 形式:

  border: 8px solid #22EAAA;
  outline: 8px solid #B31E6F;

outline 實現(xiàn)的一大優(yōu)點是簡單,直觀,因為它的使用和 border 幾乎沒有差別,第二個優(yōu)點是 outline-offset 屬性,可以讓我們?nèi)我獾目刂扑c元素邊框的距離,而且它的值可以為負值。

不過,它也有缺點,第一,它不支持圓角,所以即使元素擁有圓角的 border,outline 卻也只能是矩形。第二,不支持點擊事件。

下面來看看 box-shadow 實現(xiàn)的代碼:

  border: 8px solid #22EAAA;
  box-shadow: 0 0 0 8px #B31E6F;

我個人認為,box-shadow 相比于 outline 是個相對比較完美的方案。第一,box-shadow 可以以逗號分隔設置多組值,也就是說我們可以設置 > 2 邊框(雖然沒什么卵用,但是值得一提),通常情況下,我們可以先利用這個屬性模擬出邊框的效果,再利用它去設置盒子陰影效果。第二個優(yōu)點是,我們可以利用一些變通讓其支持點擊事件,那就是最后一個屬性 inset,我們可以為元素設置一個 padding,然后將邊框設置在 padding 的位置上。

就上述而言,如果我們的需求比較簡單,可以利用 outline 設置多重邊框,如果需求自定義比較強,可以利用 box-shadow

下面是利用多重邊框?qū)崿F(xiàn)的一個有意思的效果。

border3.png

代碼如下:

   border: 10px solid #000;
   border-radius: 8px;
   background-color: #000;
   outline: 1px dashed #FFF;
   outline-offset: -10px;
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,093評論 1 92
  • 1.多重邊框 我們可以通過使用border-image來寫一個多重邊框,或使用多個元素來模擬多重邊框,不過我們有更...
    FlyingWWS閱讀 2,487評論 2 5
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    wzhiq896閱讀 2,101評論 0 2
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color,font,text-align,li...
    love2013閱讀 2,421評論 0 11
  • 1、垂直對齊 如果你用CSS,則你會有困惑:我該怎么垂直對齊容器中的元素?現(xiàn)在,利用CSS3的Transform,...
    kiddings閱讀 3,288評論 0 11

友情鏈接更多精彩內(nèi)容