css中border屬性畫五星紅旗

web中畫五星紅旗的方法有很多種,可以用canvas畫圖,svg中的多邊形屬性畫,但是本人爲了紮實好css屬性知識,只借助css方法進行五星紅旗的製作,以供大家思考.

本文思路如下:

1.選取一個div元素(任何元素)根據css中的塊元素的border屬性,做好單個三角形的製作,同時爲了能夠複用,可以用在任意一個非塊元素上,必須設置display:block,使元素作爲塊元素

2.根據css的僞類:after以及:before屬性,在1中的元素上構造兩個旋轉(+-68deg)的三角形

3.根據1,2得出的三角形進行拼接,並調整好屬性,畫好單個五角星

4.當我們畫好五角星之後,就可以根據transform:scale 方法,放大縮小並創建其他的4個小五角星

5.最後在html中構建一個四方形,作爲旗面


這裏需要注意的是,爲了做到五星紅旗與可視窗口的同比例自適應協調變化,所有的元素的width,height等等均以vw作爲單位(vw是根據可視窗口的寬度width作爲自適應)

代碼如下

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="theme-color" content="#000000">
    <link rel="stylesheet" href="css/five.css"></>
  </head>
  <body>
    <div class="flag">
      <div class="fiveangle middle flag0"></div>
      <div class="fiveangle small flag1"></div>
      <div class="fiveangle small flag2"></div>
      <div class="fiveangle small flag3"></div>
      <div class="fiveangle small flag4"></div>
    </div>

  </body>
</html>

css/five.css部分爲

.fiveangle{
  position: relative;
  display: block;
  height: 0vh;
  width: 0vw;
  left:0vw;
  border:8vw solid transparent;
  border-top: 5vw solid yellow;
  border-left: 7vw solid transparent;
  border-bottom: 0vw;

}

.flag{
  height:30vw;
  width: 50vw;
  position:relative;
  background-color:red;
}

.fiveangle:before{
  position: absolute;
  display: block;
  top: -5vw;
  height: 0vw;
  width: 0vw;
  border: 7vw solid transparent;
  border-top: 6vw solid yellow;
  border-left: 7vw solid transparent;
  border-right: 7vw solid transparent;
  border-bottom: 0vw;
  left:-6.5vw;
  transform: rotate(68deg);

  content:'';
}
.fiveangle:after{
  position: absolute;
  display: block;
  top:-5vw;
  height: 0vw;
  width: 0vw;
  border:7vw solid transparent;
  border-top: 6vw solid yellow;
  border-right: 7vw solid transparent;
  border-left: 7vw solid transparent;
  border-bottom: 0vw;
  left:-6vw;
  transform: rotate(-68deg);
  content: '';//這裏的content必須添加,否則無法顯示
}
.fiveangle.middle{
  transform:scale(0.5);
}
.fiveangle.small{
  transform: scale(0.2);
}
.flag0{
  top:17%;
}
.flag1{
  position: absolute;
  left:12%;
  top:0%;
}
.flag2{
  position: absolute;
  left:18%;
  top:10%;
}
.flag3{
  position: absolute;
  left:18%;
  top:25%;
}
.flag4{
  left:12%;
  position: absolute;
  top:35%;
}
The page can be show below:



This is a good instance to learn the position,border,以及僞類的應用,比較全面,沒有用到js,canvas,svg的使用,對後期學習canvas等等打應用都會有比較好的幫助

    話又說回來,我們並不太滿足靜態的紅旗,需要把它做成動態的,並隨風飄揚的紅旗,如何做??大家有什麼意見嗎?當然,儘量不要用js,而是用css本身的特性...........


道法自然,一生二,二生三,三生萬物

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章