專案實戰之玩轉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、不將就是發現的原動力。