1. 程式人生 > >css巧妙利用盒子---畫圖(二)

css巧妙利用盒子---畫圖(二)

接著上一次的css的圖畫,這次畫一些,稍微麻煩一點點的圖形~

一、 畫圖

(1)繪製五角星
這個五角星是畫的是真的好醜 還需要微調一下。繪製五角星,主要是思想。有可能會想到好幾個盒子,也就是中間一個五邊形,其餘都是三角形。但是其實可以超簡單的!!! 主要是量化圖形
具體程式碼:

 .star{
            position:relative;
            width:0px;
            margin:100px auto;
            border-right:160px solid transparent;
            border-top:80px solid red;
            border-left: 160px solid transparent;
            transform: rotate(-155deg);
        }
        .star::before{
            content:'';
            position:absolute;
            top:-87px;
            left:-145px;
            border-right:160px solid transparent;
            border-top:80px solid red;
            border-left: 160px solid transparent;
            transform: rotate(-53deg);
        }
        .star::after {
            content:'';
            position:absolute;
            top:-16px;
            left:0px;
            border-right:40px solid transparent;
            border-bottom:80px solid red;
            border-left: 40px solid transparent;
            transform: rotate(-206deg);
        }

程式碼結果:
在這裡插入圖片描述
五角星只用了一個盒子以及偽元素。接下來換個顏色就知道啦。
在這裡插入圖片描述
其實就是簡單的,三個三角形,~

(2)繪製六邊形
六邊形是一個長方形和兩個三角形的拼接啊~
具體程式碼:

.six {
            position:relative;
            width: 100px;
            height: 55px;
            background-color:red;
            margin:100px auto;
        }
        .six::before,.six::after {
            content:'';
            position:absolute;
            border-bottom: 20px solid red;
            border-left:50px solid transparent;
            border-right:50px solid transparent;
        }
        .six::before {
            top:-20px;
        }
        .six::after{
          transform: rotate(180deg);
            top:55px;
        }

程式碼實現:
在這裡插入圖片描述

(3)十二邊形
這個就是簡單的,三個正方形的疊加,注意角度就好~
具體程式碼:

 .burst {
            position:relative;
            width: 100px;
            height: 100px;
            margin:100px auto;
            background-color: red;
        }
        .burst::before {
            content:'';
            width: 100px;
            height: 100px;
            margin:100px auto;
            background-color: red;
            position:absolute;
            top:-100px;
            left:0;
            transform: rotate(30deg);
        }
        .burst::after {
            content:'';
            width: 100px;
            height: 100px;
            margin:100px auto;
            background-color: red;
            position:absolute;
            top:-100px;
            left:0;
            transform: rotate(70deg);
        }

程式碼實現:
在這裡插入圖片描述

(4)繪製箭頭
這個箭頭,有一些複雜,主要是在位置。是一個三角形,與一個長方形的拼接。長方形需要尾端相連,並且進行彎曲,利用border-radius屬性就好。
具體程式碼:

  #curvedarrow {
             position: relative;
             width: 0;
             height: 0;
             border-top: 9px solid transparent;
             border-right: 9px solid red;
             transform: rotate(10deg);
        }
        #curvedarrow:after {
             content: "";
             position: absolute;
             border: 0 solid transparent;
             border-top: 3px solid red;
             border-radius: 20px 0 0 0;
             top: -12px;
             left: -9px;
             width: 12px;
             height: 12px;
             transform: rotate(45deg);
        }

程式碼實現:
在這裡插入圖片描述

(5)不知道叫什麼
這是舍友叫我畫的~ 就是正方形裡面有一個圓形,但是隻顯示邊上的角。其實就是畫一個圓,再顯示兩個角,其餘兩個角,進行遮蓋。親測可以在上面加元素。只不過要注意元素的層級關係~
具體程式碼:

 .box {
            width: 120px;
            height: 120px;
            border:2px solid black;
            background-color:pink;
            margin:100px auto;
            /*border-right: 40px solid red;*/
            position:relative;
            transform: rotate(-90deg);
            z-index:999;
        }
        .box::after {
            content:'';
            width: 60px;
            height: 120px;
            background-color: white;
            position:absolute;
            top:0;
            left:0;

        }
        .box::before {
            content:"";
            width: 120px;
            height: 120px;
            border-radius: 50%;
            background-color:white;
            position:absolute;
            top:0px;
            left:0px;
            z-index: 1;
        }

程式碼實現:
在這裡插入圖片描述
(6)繪製桃心
桃心啊,就是一邊圓角一邊直角,看圖就知道啦~
具體程式碼:

  #heart {
            width: 300px;
            height: 300px;
            /*background-color:black;*/
            position:relative;
            margin:100px auto;
        }
       #heart::before {
           content:'';
           width: 60px;
           height: 100px;
           background-color: red;
           position:absolute;
           top:0;
           left:0;
           border-radius:40px 40px 0 0;
           transform:rotate(40deg);
       }
        #heart::after {
            content:'';
            width: 60px;
            height: 100px;
            background-color: red;
            position:absolute;
            top:2px;
            left:-28px;
            border-radius:40px 40px 0 0;
            transform:rotate(-50deg);
        }

程式碼實現:
在這裡插入圖片描述在這裡插入圖片描述
(7)繪製 繩子結
設定一邊的圓角為0 ,然後進行旋轉拼接就好啦.需要設定邊框~
具體程式碼:

 .box{
            width: 200px;
            height: 200px;
            /*background-color:red;*/
            margin: 100px auto;
            position:relative;

        }
        .box::after {
            width: 50px;
            height: 50px;
            /*設定寬高之後 才會有邊框 凹陷*/
            content:'';
            border:10px solid black;
            border-radius:38px 0 38px 38px;
            position:absolute;
            top:0;
            left:0;
            transform:rotate(45deg);
        }  .box::before {
               width: 50px;
               height: 50px;
               /*設定寬高之後 才會有邊框 凹陷*/
               content:'';
               border:10px solid black;
               border-radius:40px 0 40px 40px;
               position:absolute;
               top:0;
               left:85px;
               transform:rotate(225deg);
           }

程式碼實現:
在這裡插入圖片描述
(9)繪製鑽石
是一個梯形和三角形的拼接哦~
具體程式碼:

.diamond {
            width: 0px;
            /*height: 0;  設定寬度是為了不與瀏覽器同寬*/
            border-top:60px solid red;
            border-bottom:60px solid transparent;
            border-left:60px solid transparent;
            border-right:60px solid transparent;
            margin:100px auto;
            position:relative;
            /*三角形*/
        }
        .diamond::after {
            content:'';
            width: 60px;
            border-top:30px solid red;
            border-bottom:30px solid transparent;
            border-left:30px solid transparent;
            border-right:30px solid transparent;
            position:absolute;
            top:-120px;
            left:-60px;
            transform:rotate(180deg);

        }

程式碼實現:
在這裡插入圖片描述

(9)繪製吃豆人
一個吃豆人,有兩種方法。可以一個盒子與一個偽元素的合作,也就是偽元素遮蓋住一個邊。但是反方向想。那不是可以給四個邊框設定圓角,然後其中一個是transparent屬性啊~
具體程式碼:

 .eat{
            width: 0px;
            position:relative;
            margin:100px auto;
            /*height: 100px;*/
        }
        .eat::before {
            content:'';
            border-left:40px solid red;
            border-right:40px solid transparent;
            border-top:40px solid red;
            border-bottom:40px solid red;
            position:absolute;
            border-radius:50%;
        }

程式碼實現:
在這裡插入圖片描述

(10)繪製太極圖
emm,就是用邊框先畫一個圓,然後設定背景顏色。中間的校園就是邊框畫的哦。空心是因為寬高哦~,然後注意配色和定位就好啦
具體程式碼:

   .box{
            width: 210px;
            height: 100px;
            background-color:#ccc;
            border:2px solid black;
            border-radius:50%;
            /*此時浮上去半個圓  半圓的底色*/
            border-bottom-width:110px;
            position:relative;
        }

        /*偽類畫圓環 並且定位*/
        .box::before {
            content:'';
            position:absolute;
            top:37px;
            left:0px;
            width: 20px;
            height: 20px;
            /*background-color:red;*/
            border-radius: 50%;
            border:43px solid black;
        }
        .box::after {
            content:'';
            position:absolute;
            top:58px;
            left:104px;
            width: 20px;
            height: 20px;
            /*background-color:red;*/
            border-radius: 50%;
            border:43px solid #ccc;
        }

程式碼實現:
在這裡插入圖片描述
(11)一個鎖
很簡單的拼接~ 不說了,猜吧~
在這裡插入圖片描述

下次再來更新~~~ 還是css~~ 再畫幾個,我就去挖掘canvas了。最近還要多看看ES6!!emm~