首頁 web前端 css教學 Css3新特性應用之形狀

Css3新特性應用之形狀

Feb 25, 2017 pm 03:36 PM

一、自適應橢圓

 border-radius特性:

  • 可以單獨指定水平和垂直半徑,且值可以是百分比,用/(斜線)分隔這兩個值即可(可以實現自適應寬度橢圓)。

  • 也可以單獨指定四個角度不同的水平和垂直半徑(可以實現半橢圓)

  •  四分之一橢圓,主要是調整水平和垂直的半徑

範例程式碼:

#
.wrap{
            border-radius: 50% / 30%;
            width: 60px;
            height: 80px;
            background: yellow;
        }
        .wrap02{
            width: 60px;
            height: 80px;
            background: yellow;
            border-radius: 50% / 100% 100% 0 0;
        }
        .wrap03{
            width: 60px;
            height: 80px;
            background: yellow;
            border-radius: 100% 0 0 0;
        }
登入後複製

Css3新特性應用之形狀

二、平形四邊形

  • 需要應用到transform的skewX進行扭曲

  • 主要解決容器成為平形四邊形,而內部的文字和元素且垂直顯示

  • 嵌套元素,內部元素以skew反向扭曲即可。巢狀的內部元素必須為block,因為transform不能應用在inline元素上。

  • 利用偽元素進行扭曲(:before)

.wrap{
            width: 80px;
            height: 40px;
            transform: skewX(-45deg);
            background: yellow;
        }
        .wrap>p{
            transform: skewX(45deg); 
        }
        .btn{
            position: relative;
            padding: 10px;
        }
        .btn:before{
            content: '';
            position: absolute;
            top: 0px;
            left: 0px;
            right: 0px;
            bottom: 0px;
            z-index: -1;
            background: #85a;
            transform: skewX(-45deg);
        }
登入後複製

Css3新特性應用之形狀

三、菱形

  • #應用元素的嵌套,外層與內層元素相互roate旋轉,實現八角形;

  • 設計內部元素max-width的寬度為100%,讓整個圖片最大隻能充滿整個外層的p;

  • scale屬性控制其圖片的放大倍率,預設為中心點為放大原點(會用到勾股定理,不要額外指定transform-origin)。

.wrap{
            width: 200px;
            transform: rotate(-45deg);
            overflow: hidden;
        }
        .wrap > img{
            transform: rotate(45deg) scale(1.42); 
            max-width: 100%;
        }
登入後複製

Css3新特性應用之形狀

#四、切角效果

Css3新特性應用之形狀

  • #利用linear-gradient可以設定角度,多值和漸層透明來實現。

  • 也需要注意background-size和background-repeat屬性的設置,防止背景的重疊導致效果不生效

  • ##

    .wrap{
                width: 200px;
                height: 100px;
                background: #58a;
                background: linear-gradient(-135deg, transparent 15px, #58a 0px) top right,
                linear-gradient(135deg,transparent 15px, #655 0px) top left,
                linear-gradient(-45deg, transparent 15px, #58a 0px) bottom right, 
                linear-gradient(45deg, transparent 15px, #655 0px) bottom left;
                background-size: 50% 50%;
                background-repeat: no-repeat;
            }
    登入後複製

可以利用border-image實作切角,設定border-image-slice(圖片邊框向內偏移)的值;

  • border-image用svg來做圖片

  • border設定寬度+透明,再加上border-image-slice向內偏移就造就了邊框切角邊框;

background-clip:要設定為padding-box,不然背景會延伸到邊框上。

.wrapSvg{
            border:15px solid transparent;
            border-image: 1 url(&#39;data:image/svg+xml, <svg xmlns="http://www.w3.org/2000/svg" width="3" height="3" fill="%2358a"><polygon points="0,1 1,0 2,0 3,1 3,2 2,3 1,3 0,2"/></svg>&#39;);
            margin-top: 50px;
            width: 200px;
            height: 100px; 
            background: #58a;
            background-clip: padding-box;
        }
登入後複製

Css3新特性應用之形狀

其他方案

  • 利用clip-path屬性,但不完全受支持

  • css4會直接給出corner-path屬性來支援切角

  • 五、梯形圖案

  • 了解transform的基本原理

a和d表示縮放且不能為0;c和b控制傾斜;e和f控制位移

    translate(位移):matrix(1,0,0,1,x,y)
  • #scale(縮放):matrix(x,0,0, y,0,0);
  • skew(傾斜):matrix(1,tany,tanx,1,0,0),由於輸入的是deg(角度),需要將角度轉換為弧度值
  • rotate(旋轉):matrix(cosN,sinN,-sinN,cosN,0,0),角度轉換為弧度
  • #上述值的應用都與transform-origin的值有關係,他是定位元素旋轉的原點,可以是top,bottom,center等,可以指定x,y,z三種座標系

perpective:透視,不可以負數,0或百分比,只能是數值;Css3新特性應用之形狀

#######表示觀察者到被觀察物體的一段距離######## ###透視距離與物體越遠,物體就會顯得越小############透視只能設定在變形元素的父級或祖先級,因為瀏覽器會為其子級的變形產生透視效果############在3d變換上沒有傾斜(skew)這個屬性。 ##################

六、简单的饼图

动画饼图,效果如下:

Css3新特性應用之形狀

实现步骤如下:

画出一个yellowgreen的圆,并利用linear-gradient设置background-image的值,实现两种颜色各显示一半的功能:

然后加入一个伪元素,继承父级(真实元素)的背景色,然后用rotate旋转即可

  • 要利用margin-left让其靠左

  • 利用transform-origin设置其旋转定位点

动画展示代码如下:

@keyframes spin{
            to{ transform: rotate(.5turn); }
        }
        @keyframes bg{
            50%{ background-color: #655; }
        }
        .wrap{
            width: 100px; height: 100px;
            border-radius: 50%;
            background: yellowgreen;
            background-image: linear-gradient(to right, transparent 50%, #655 0); 
        } 
        .wrap::before{
            content: &#39;&#39;;
            display: block;
            margin-left: 50%;
            background-color: inherit;
            height: 100%; 
            border-radius: 0 100% 100% 0 / 50%;
            transform-origin: left;
            animation:spin 3s linear infinite,
                bg 6s step-end infinite;
        }
登入後複製

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多Css3新特性應用之形狀相关文章请关注PHP中文网!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue團隊完成了完成,我知道這是一項巨大的努力,而且很長時間。所有新文檔也是如此。

在CI/CD上有點 在CI/CD上有點 Apr 02, 2025 pm 06:21 PM

我說的“網站”比“移動應用程序”更合適,但我喜歡Max Lynch的框架:

您可以從瀏覽器獲得有效的CSS屬性值嗎? 您可以從瀏覽器獲得有效的CSS屬性值嗎? Apr 02, 2025 pm 06:17 PM

我有人寫了這個非常合法的問題。 Lea只是在博客上介紹瞭如何從瀏覽器中獲得有效的CSS屬性。那樣的是這樣。

在WordPress塊編輯器中使用Markdown和本地化 在WordPress塊編輯器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我們需要直接在WordPress編輯器中向用戶顯示文檔,那麼最佳方法是什麼?

帶有粘性定位的堆疊卡和一點點的雜物 帶有粘性定位的堆疊卡和一點點的雜物 Apr 03, 2025 am 10:30 AM

前幾天,我發現了科里·金尼文(Corey Ginnivan)網站上的這一點,當您滾動時,彼此之間的卡片堆放集。

比較瀏覽器的響應式設計 比較瀏覽器的響應式設計 Apr 02, 2025 pm 06:25 PM

這些桌面應用程序中有許多目標是同時在不同的維度上顯示您的網站。因此,例如,您可以寫作

如何將CSS網格用於粘頭和頁腳 如何將CSS網格用於粘頭和頁腳 Apr 02, 2025 pm 06:29 PM

CSS網格是一系列屬性的集合,旨在使佈局比以往任何時候都容易。像任何東西一樣,那裡有一點學習曲線,但是網格是

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

See all articles