1. 程式人生 > >專案實戰之玩轉div+css製作自定義形狀

專案實戰之玩轉div+css製作自定義形狀

專案需求

要求製作上圖所示的效果,能達到靈活可配的效果。我想初步想法是用div+css來製作。

------------------------------------------------------------------------------------------------------

模型抽象

下面的這個模型是我抽象出來的一個簡單的解決方案。div可以表示一個矩形,然後再加上一個旋轉90度的div就可以組起來達到我們想要的效果了。使用div就可以很方便地相應各種事件,使網站靈活可配。

------------------------------------------------------------------------------------------------------


技術難點

1、如何做到讓div旋轉?

     -moz-transform: rotate(90deg);

       如果設置的值為正數表示順時針旋轉,如果設定的值為負數,則表示逆時針旋轉

2、如何設定div的層次關係?

       z-index

------------------------------------------------------------------------------------------------------

實踐過程

HTML頁:

-------------------------------------------------------------------------

<html>
    <head>
        <title>test</title>
        <link rel="stylesheet" type="text/css" href="css/chainselect.css">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" src="js/text.js"></script>
    </head>
    
    <body>
        <div id="rectangle1" onmousemove="MouseMove(this)">新生報到流程</div>
        <div id="arrow1" onmousemove="MouseMove(this)"></div>
        
        <div id="arrow21"></div>
        <div id="rectangle2">公約頁</div>
        <div id="arrow22"></div>
        
        <div id="arrow31"></div>
        <div id="rectangle3">完善個人資訊</div>
        <div id="arrow32"></div>
        
        <div id="arrow41"></div>
        <div id="rectangle4">選擇繳費方式</div>
        <div id="arrow42"></div>
        
        <div id="arrow51">sss</div>
        <div id="rectangle5">新生報到流程</div>
    </html>


-------------------------------------------------------------------------

CSS頁

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------


#rectangle1 {
  border:2px solid;
  border-right:none;
  background-color:#34B0D9;
  width:169px;
  height:29px;
  float:left;
  text-align:center;
  font-size:16px;
  padding-top:5px;
  }
#arrow1 {
  float:left;
  -moz-transform: rotate(45deg);
  border:2px solid;
  background-color:#34B0D9;
  width:25px;
  height:25px;
  position:relative;
  top:5px;
  left:-14px;
  border-bottom:none;
  border-left:none;
 
}
#arrow21{
    float:left;
    -moz-transform: rotate(45deg);
    border:2px solid;
    background-color:#FFFFFF;
    height:32px;
    width:32px;
  position:relative;
  left:-35px;
  top:5px;
  z-index:-1;
    border:none;
}  
#rectangle2 {
  border:2px solid;
  border-right:none;
  background-color:#34B0D9;
  width:169px;
  height:29px;
  float:left;
  text-align:center;
  font-size:16px;
  padding-top:5px;
  float:left;
  position:relative;
  left:-50px;
  z-index:-2;
  border-left:none;
  }
  #arrow22 {
  float:left;
  -moz-transform: rotate(45deg);
  border:2px solid;
  background-color:#34B0D9;
  width:25px;
  height:25px;
  position:relative;
  top:5px;
  left:-63px;
  border-bottom:none;
  border-left:none;
}
#arrow31{
    float:left;
    -moz-transform: rotate(45deg);
    border:2px solid;
    background-color:#FFFFFF;
    height:32px;
    width:32px;
  position:relative;
  left:-84px;
  top:5px;
  z-index:-1;
    border:none;
}  
#rectangle3 {
  border:2px solid;
  border-right:none;
  background-color:#34B0D9;
  width:169px;
  height:29px;
  float:left;
  text-align:center;
  font-size:16px;
  padding-top:5px;
  float:left;
  position:relative;
  left:-100px;
  z-index:-2;
  border-left:none;
  }
    #arrow32 {
  float:left;
  -moz-transform: rotate(45deg);
  border:2px solid;
  background-color:#34B0D9;
  width:25px;
  height:25px;
  position:relative;
  top:5px;
  left:-113px;
  border-bottom:none;
  border-left:none;
}

#arrow41{
    float:left;
    -moz-transform: rotate(45deg);
    border:2px solid;
    background-color:#FFFFFF;
    height:32px;
    width:32px;
  position:relative;
  left:-134px;
  top:5px;
  z-index:-1;
    border:none;
}  
#rectangle4 {
  border:2px solid;
  border-right:none;
  background-color:#34B0D9;
  width:169px;
  height:29px;
  float:left;
  text-align:center;
  font-size:16px;
  padding-top:5px;
  float:left;
  position:relative;
  left:-148px;
  z-index:-2;
  border-left:none;
  }
    #arrow42 {
  float:left;
  -moz-transform: rotate(45deg);
  border:2px solid;
  background-color:#34B0D9;
  width:25px;
  height:25px;
  position:relative;
  top:5px;
  left:-161px;
  border-bottom:none;
  border-left:none;
}


#arrow51{
    float:left;
    -moz-transform: rotate(45deg);
    border:2px solid;
    background-color:#FFFFFF;
    height:32px;
    width:32px;
  position:relative;
  left:-180px;
  top:5px;
  z-index:-1;
    border:none;
}  
#rectangle5 {
  border:2px solid;
  background-color:#34B0D9;
  width:169px;
  height:29px;
  float:left;
  text-align:center;
  font-size:16px;
  padding-top:5px;
  float:left;
  position:relative;
  left:-196px;
  z-index:-2;
  border-left:none;
  }

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

實踐效果


總結思考

1、面對複雜的問題,要學會抽象當前的問題。

2、不將就是發現的原動力。