css 偽類實現(xiàn)弧形

在實現(xiàn)頁面五花八門的有特色的ui時,我們有時會遇到要用實現(xiàn)一個弧形,而這樣的弧形要怎么實現(xiàn)呢?用圖片?不太優(yōu)雅,這樣就要無故多加載一張圖片了,這里來說說怎么用css的after偽類來實現(xiàn)弧形。


總思路:

寫一個主元素,并給該元素添加偽類來設(shè)置成圓,取該圓的一部分來作為我們看到的圓弧。

要點:

  1. 我們看到的圓弧實質(zhì)是偽元素(圓)的一部分,所以主元素應(yīng)該是透明的,顏色值設(shè)置在偽元素上;
  2. 既然是主元素和偽元素,那么就應(yīng)該主元素設(shè)置相對定位(relative),偽元素設(shè)置絕對定位(absolute)于主元素;
  3. 偽元素寬度可以超過主元素,這時最好讓偽元素相對于主元素居中,這樣展現(xiàn)出來的圓弧才能左右對稱;
  4. 如果偽元素寬度超過主元素,需要設(shè)置主元素超出隱藏(overflow:hidden),這樣才不會出現(xiàn)橫向滾動條;
  5. 偽類可以設(shè)置成正圓(border-radius: 50%) 也可以是橢圓(border-radius: top right bottom left);
  6. 既然是背景裝飾,可以把主元素的層級設(shè)置底一些(z-index: -1);

具體實現(xiàn):

第一種(正圓弧):

<style>
    *{margin: 0;padding: 0;}
    .bg_arc{
        width: 100%;
        height: 400px;
        position: relative;
        z-index: -1;
        overflow: hidden;
        /*background: #ddd;*/
    }
    .bg_arc::after{
        content: '';
        display: block;
        width: 160%;
        height: 200%;
        border-radius: 50%;
        position: absolute;
        left: 50%;
        top: -100%;
        transform: translateX(-50%);
        background: #1677D2;
    }
</style>
<body>
    <div class="bg_arc"></div>
</body>

實現(xiàn)效果:


正圓弧

參照上面的要點,大概也能知道個原理了吧。看到的圓弧高度等于主元素高度,偽元素絕對于主元素定位,左右居中,上移100%;圓弧弧度取決于偽類的寬度,這點放到這里來說,是怕放在上面說反而讓人覺得復(fù)雜了。
如果還不理解的話,可以把上面不必要的樣式注釋掉,輔助理解:

<style>
    *{margin: 0;padding: 0;}
    .bg_arc{
        width: 100%;
        height: 400px;
        position: relative;
        /*z-index: -1;*/
        /*overflow: hidden;*/
        background: #ddd;
    }
    .bg_arc::after{
        content: '';
        display: block;
        /*width: 120%;*/
        width: 100%;
        height: 200%;
        border-radius: 50%;
        position: absolute;
        /*left: 50%;*/
        /*top: -100%;*/
        /*transform: translateX(-50%);*/
        background: #1677D2;
    }
</style>
<body>
    <div class="bg_arc"></div>
</body>

效果:


輔助理解

可以多調(diào)調(diào)高度寬度來幫助理解。

第二種(有角度的弧):

<style>
    *{margin: 0;padding: 0;}
    .bg_arc{
        width: 100%;
        height: 400px;
        position: relative;
        z-index: -1;
        overflow: hidden;
    }
    .bg_arc::after{
        content: '';
        display: block;
        width: 100%;
        height: 400px;
        position: absolute;  /* 不同點1 */
        left: 0;
        top: 0;
        border-radius: 0 0 50% 50%;  /* 不同點2 */
        background: #fcc;
    }
</style>
<body>
    <div class="bg_arc"></div>
</body>

效果圖:


角度弧

實現(xiàn)角度弧的思路與正圓弧差不多,不同地方是:
不同點1. 偽元素大小與主元素一樣,覆蓋在主元素上;
不同點2. 設(shè)置偽元素的單個角度;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容