css3圖形繪製

来源:https://www.cnblogs.com/gaoht/archive/2018/11/26/10019938.html
-Advertisement-
Play Games

以下幾個例子主要是運用了css3中border、bordr-radius、transform、偽元素等屬性來完成的,我們先瞭解下它們的基本原理。 border:簡單的來說border語法主要包含(border-width、border-style、border-color)三個屬性。 „ borde ...


以下幾個例子主要是運用了css3中border、bordr-radius、transform、偽元素等屬性來完成的,我們先瞭解下它們的基本原理。

      border:簡單的來說border語法主要包含(border-width、border-style、border-color)三個屬性。

    • „ border-top(上邊框):border-width border-style border-color
    • „ border-right(右邊框):border-width border-style border-color
    • „ border-bottom(下邊框):border-width border-style border-color
    • „ border-left(左邊框):border-width border-style border-color

     border-radius:border-radius 的語法比我們想像中靈活得多。你可能會驚訝地發現 border-radius 原來是一個簡寫屬性。它所對應的各個展開式屬性:

    • „ border-top-left-radius(左上圓角半徑)
    • „ border-top-right-radius (右上圓角半徑)
    • „ border-bottom-right-radius (右下圓角半徑)
    • „ border-bottom-left-radius(左下圓角半徑)

     border-image:共有三個屬性,分別是圖片(border-image-source)、剪裁位置(border-image-slice)、重覆性(border-image-repeat)。

      圖片:使用URL調用

      剪裁位置:共有1~4個參數,沒有單位(預設是像素),也可以用百分比

    • 第一個參數a:距離上邊相應長度進行裁剪
    • 第二個參數b:距離右邊相應長度進行裁剪
    • 第三個參數c:距離下邊相應長度進行裁剪
    • 第四個參數d:距離左邊相應長度進行裁剪

      重覆性:有三個參數 stretch(預設值),round,repeat

    • 預設值是stretch,拉伸的意思,可以看到上面的效果圖中,“2”是垂直拉伸的,“>”是水平拉伸的,而中間的格子是水平垂直一起拉伸的。
    • round是平鋪
    • repeat是重覆

 

話不多說,來直接看下效果:

1、三角形系列(三角形、倒三角、左三角、右三角、左上三角、右上三角、左下三角、右下三角)

    主要用到的是:寬度高度設置為0, border的各個邊的設置(各個邊的透明或不透明);

.triangle-up {
           /* 三角形 */
           width: 0;
           height: 0;
           border-left: 50px solid transparent;
                   border-right: 50px solid transparent;
                   border-bottom: 100px solid #f00;
       }
       .triangle-down {
           /* 倒三角 */
           width: 0;
           height: 0;
           border-left: 50px solid transparent;
                   border-right: 50px solid transparent;
                   border-top: 100px solid #f00;
       }
       .triangle-left {
           /* 左三角 */
           width: 0;
           height: 0;
           border-top: 50px solid transparent;
                   border-bottom: 50px solid transparent;
                   border-right: 100px solid #f00;
       }
       .triangle-right {
           /* 右三角 */
           width: 0;
           height: 0;
           border-top: 50px solid transparent;
                   border-bottom: 50px solid transparent;
                   border-left: 100px solid #f00;
       }
       .triangle-topleft {
           /* 左上三角 */
           width: 0;
           height: 0;
                   border-right: 100px solid transparent;
                   border-top: 100px solid #f00;
       }
       .triangle-topright {
           /* 右上三角 */
           width: 0;
           height: 0;
           border-left: 100px solid transparent;
                   border-top: 100px solid #f00;
       }
       .triangle-downleft {
           /* 左下三角 */
           width: 0;
           height: 0;
                   border-right: 100px solid transparent;
                   border-bottom: 100px solid #f00;
       }
       .triangle-downright {
           /* 右下三角 */
           width: 0;
           height: 0;
           border-left: 100px solid transparent;
                   border-bottom: 100px solid #f00;
       }

 2、梯形(三角形的變體,設置左右兩條邊相等,並且給它設置一個寬度)

  

.Trapezium {
             height: 0;
             width: 100px;
             border-bottom: 100px solid #dc2500;
             border-left: 50px solid transparent;
             border-right: 50px solid transparent;
           }

 

3、愛心(心形的製作是非常複雜的,可以使用偽元素來製作,分別將偽元素旋轉不同的角度,並修改transform-origin屬性來元素的旋轉中心點)

        .love {
    /* 愛心 */
    position: relative;
}
.love:before {
    content: "";
    width: 70px;
    height: 110px;
    background: #f00;
    position: absolute;
    border-top-left-radius: 50%;
    border-top-right-radius: 50%;
    transform: rotate(45deg);
}
.love:after {
    content: "";
    width: 70px;
    height: 110px;
    background: #f00;
    position: absolute;
    border-top-left-radius: 50%;
    border-top-right-radius: 50%;
    transform: rotate(-45deg);
    left: -30px;
}

 4、 食人豆(吃豆人的製作方法是先在一個圓形裡面製作一個透明的三角形)

   .pacman {
    /* 食人豆 */
    width: 0;
        height: 0;
        border: 60px solid #f00;
        border-right: 60px solid transparent;
        border-radius: 100%;
}

5、對話框(消息提示框可以先製作一個圓角矩形,然後在需要的地方放置一個三角形)

 .alertDialog {
    /* 對話框:一個圓角矩形和一個小三角形 */
    width: 150px;
    height: 100px;
    background: #f00;
    border-radius: 10px;
    position: relative;
}
.alertDialog:before {
    content: "";
    width: 0;
    height: 0;
    position: absolute;
        left: -20px;
        top: 40px;
    border-top: 10px solid transparent;
        border-bottom: 10px solid transparent;
        border-right: 20px solid #f00; 
}

  6、鑽石(首先畫一個直角梯形,再通過偽類元素在其下方畫一個三角形)

 .diamond {
    /* 鑽石:梯形和三角形組成 */
    width: 50px;
    height: 0;
    position: relative;
    border-bottom: 25px solid #f00;
    border-left: 25px solid transparent;
    border-right: 25px solid transparent;
}
.diamond:before {
    content: "";
    width: 0;
    height: 0;
    position: absolute;
        border-left: 50px solid transparent;
        border-right: 50px solid transparent;
        border-top: 70px solid #f00;
        left: -25px;
        top: 25px;
}

  7、五角星(星形的實現方式比較複雜,主要是使用transform屬性來旋轉不同的邊)

  .starFive {
    /* 五角星: */
    width: 0;
    height: 0;
    position: relative;
    border-left: 80px solid transparent;
    border-right: 80px solid transparent;
    border-bottom: 60px solid #f00;
    transform: rotate(35deg);
}
.starFive:before {
    content: "";
    position: absolute;
    width: 0;
    height: 0;
    border-left: 80px solid transparent;
    border-right: 80px solid transparent;
    border-bottom: 60px solid #f00;
    transform: rotate(-70deg);
    top: 3px;
    left: -80px;
}
.starFive:after {
    content: "";
    position: absolute;
    width: 0;
    height: 0;
    border-bottom: 60px solid #f00;
    border-right: 20px solid transparent;
    border-left: 20px solid transparent;
    transform: rotate(-35deg);
        top: -40px;
        left: -49px;
}

  8、菜單(結合::before和::after兩個偽元素)

   

.btn-hamburger i {
    /* position: relative; */
    display: -moz-inline-stack;
    display: inline-block;
    zoom: 1;
    width: 22px;
    height: 3px;
    color: #fff;
    font: bold .24rem/0.4 Helvetica;
    text-transform: uppercase;
    text-indent: -55px;
    background: #fff;
    transition: all 0.2s ease-out;
}
.btn-hamburger i::before, .btn-hamburger i::after {
    content: '';
    width: 22px;
    height: 3px;
    background: #fff;
    position: absolute;
    left: 0;
    transition: 0.2s;
}
.btn-hamburger i::before {
    top: -7px;
}
.btn-hamburger i::after {
    bottom: -7px;
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~ 本文由落影發表 前言 LeetCode上的題目是大公司面試常見的演算法題,今天的目標是拿下5道演算法題: 題目1是基於鏈表的大數加法,既考察基本數據結構的瞭解,又考察在處理加法過程中的邊界處理; 題目2是求數組出現頻率前k大的數字,考察思維能力 ...
  • <p><strong>宅是一種信仰。</strong><br></p> <p><br></p> <p>Wi-Fi + 床 = 低配宅。</p> <p><br></p> <p>Wi-Fi + 床 + 零食 + 網綜= 進階版肥宅。</p> <p><br></p> <p>Wi-Fi + 床 + 零食 + ...
  • ajaxForm和ajaxSubmit都支持Options對象參數 form表單代碼 提交時使用下麵三處代碼任意一處皆可,提交後臺數據和form普通提交後一樣,該怎樣處理就怎樣處理 #1、ajaxForm 提交 #2、ajaxSubmit 提交 #3、options 參數提交 ...
  • 一、開發小要點 web頁面中,我們一般不用select、option來實現下拉菜單效果,因為下拉框的樣式醜且難以美化,所以我們選擇控制ul顯示隱藏來實現同樣且高大上的效果,但是不能像下拉框那樣點擊頁面其他部分,下拉菜單收起或隱藏,該怎麼辦呢?只能用js這老大哥來控制了。 二、代碼 HTML: CSS ...
  • 箭頭函數 基本語法: ES6允許使用“箭頭”(=>)定義函數 如果箭頭函數不需要參數或需要多個參數,就使用一個圓括弧代表參數部分。 使用箭頭函數註意點: 箭頭函數有幾個使用註意點。 (1)函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。 我們發現,列印的結果為 此時this指向 ...
  • JS是按照代碼塊來進行編譯和執行的,代碼塊間相互獨立,但變數和方法共用,按順序執行。 如: ...
  • 1. 自動化測試比人工測試快很多. 特別是在回歸測試中. 2. 實踐證明, 雖然投入了時間在寫自動化測試代碼上, 但是在回歸測試中節省了大量的時間,同時及時發現bug輓救回來時間收益大大超過了早期寫自動化測試代碼的投入. 3. 特別是要測試瀏覽器相容性的時候,只寫一遍自動化測試代碼,就能自... ...
  • 目前,web前端企業已經成為市場爭搶的香餑餑,據招聘門戶網站前程無憂和智聯招聘數據顯示,每個月企業在51job上公佈的職位量在1.3萬左右,在智聯招聘上公佈的職位量是2.4萬左右,平均月薪12800左右。 這麼高端待遇好的職位,你想知道你適合做麽? 我還是要推薦下我自己創建的web前端資料分享群60 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...