2016-08-11 3 views
12

私はHTML/CSS/jQueryの>Progessチャート

enter image description hereでこのように設計フロー/プログレスチャートを構築しようとしていますし、様々な積み重ねられた行は、その後下向き矢印とを含めるようにする方法を考えることができません右から左に実行している段階で、前の行の方向に基づいて、逆の矢印は、その後、などを左に右クリック、左から右へ...

このすべては、私はそれがで働いている...応答動作する必要がありますコード例の従来の方法 -

function sortFlowChartArrows() { 
 

 
/* clear prev arrow */ 
 

 
$('.arrow-right').each(function() { 
 
$(this).remove(); 
 
}); 
 

 
$('.arrow-down').each(function() { 
 
$(this).remove(); 
 
}); 
 

 

 
var windowWidthSize = $(window).width(); 
 

 
if (windowWidthSize >= 450) { 
 

 
$('.projectStatusWrapper li:not(:last-child)').each(function() { 
 
\t $(this).after("<div class='arrow-right'></div>") 
 
\t 
 
}); 
 

 
} 
 

 
if (windowWidthSize <= 449) { 
 

 
$('.projectStatusWrapper li:not(:last-child)').each(function() { 
 
\t $(this).after("<div class='arrow-down'></div>") 
 
\t 
 
}); 
 

 
} 
 

 
} 
 

 
sortFlowChartArrows(); 
 

 
$(window).load(function() { sortFlowChartArrows(); }); 
 
$(window).resize(function() { sortFlowChartArrows(); }); 
 

 

 

 
/* PROJECT FLOW CHART - MAKE ALL LIS SAME HEIGHT */ 
 

 
function makeallflowchartLIsSameHeight() { 
 

 
/* clear value */ 
 
$('.projectStatusWrapper li span').each(function() { 
 
\t $(this).css("height","") 
 
}) 
 

 
var flowchartLIHeight = Math.max.apply(null, $(".projectStatusWrapper li").map(function() { 
 
return $(this).height(); 
 
}).get()); 
 

 
console.log(flowchartLIHeight) 
 

 
$('.projectStatusWrapper li span').each(function() { 
 
\t $(this).css("height",flowchartLIHeight+"px") 
 
}); 
 
\t 
 
} 
 

 

 
makeallflowchartLIsSameHeight(); 
 

 
$(window).load(function() { makeallflowchartLIsSameHeight(); }); 
 
$(window).resize(function() { makeallflowchartLIsSameHeight(); });
.projectStatusWrapper { 
 
width: 100%; 
 
float: left; \t 
 
} 
 
.projectStatusWrapper ul { 
 
margin: 0; 
 
padding: 0; 
 
} 
 
.projectStatusWrapper li { 
 
display: inline-table; 
 
padding: 0; 
 
margin: 0; 
 
list-style: none; 
 
border: 2px solid #74b4df; \t 
 

 

 
-webkit-border-radius: 10px 10px 10px 10px; 
 
border-radius: 10px 10px 10px 10px; 
 
margin: 0.5%; 
 
font-weight: 400; 
 
font-family: 'FFMarkWebProHeavy', Helvetica, Arial; 
 

 
width: 17%; 
 
vertical-align: middle; 
 
text-align: center; 
 
} 
 
.projectStatusWrapper li span { 
 
display: table-cell; 
 
vertical-align: middle; 
 
text-align: center; 
 
padding: 15px 20px; 
 
} 
 
.projectStatusWrapper li.complete { 
 
background-color: #74b4df; 
 
color: #fff; 
 
} 
 
.arrow-right { 
 
width: 0; 
 
height: 0; 
 
border-top: 15px solid transparent; 
 
border-bottom: 15px solid transparent; 
 
    
 
border-left: 15px solid #74b4df; 
 
display: inline-block; 
 
vertical-align: middle; 
 
} 
 
.arrow-left { 
 
width: 0; 
 
height: 0; 
 
border-top: 15px solid transparent; 
 
border-bottom: 15px solid transparent; 
 
    
 
border-right: 15px solid #74b4df; 
 
display: inline-block; 
 
vertical-align: middle; 
 
float: right; 
 
} 
 
.arrow-down { 
 
width: 0; 
 
height: 0; 
 
border-left: 15px solid transparent; 
 
border-right: 15px solid transparent; 
 
    
 
border-top: 15px solid #74b4df; 
 
display: inline-block; 
 
vertical-align: middle; 
 
text-align:center; 
 
    
 
position: relative; 
 
left: 43.5%; 
 
margin-top: 5px; 
 
margin-bottom: 5px; 
 
    
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="projectStatusWrapper"> 
 

 
<ul> 
 
<li class="complete">Step 1</li> 
 
<li class="complete">Step 2</li> 
 
<li>Step 3</li> 
 
<li>Step 4</li> 
 
<li>Step 5</li> 
 
<li>Step 6</li> 
 
<li>Step 7</li> 
 
<li>Step 8</li> 
 
<li>Step 9</li> 
 
<li>Step 10</li> 
 
</ul> 
 

 
</div>

デザインごとにどのように動作させるかについてのアイデアはありますか?

+0

、いくつかの微調整を必要とする、あなたの制約があれば、教えてください。たとえば、フレックスボックスやCSSの列は使えますか? (私は彼らが助けてくれるとは知らないが、使用できれば使用できないと知っている人にはいいだろう) –

+0

制約なし - 設計された解決策を反映させることができます。私はできるだけシンプルにしておきたい。 – dubbs

答えて

2

の固定数を実際に受け入れる場合、私はこの非常に単純な考え方を持っていました。基本的に矢印を:afterに置き、nth-child(6n+...)を使用して矢印の大文字と小文字を定義します。確かに、とにかくCodepen demo here

.projectStatusWrapper { 
 
    width: 100%; 
 
    float: left; 
 
} 
 

 
.projectStatusWrapper ul { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
.projectStatusWrapper li { 
 
    box-sizing: border-box; 
 
    width: 30.5%; 
 
    display: inline-block; 
 
    list-style: none; 
 
    border: 2px solid #74b4df; 
 
    padding: 1%; 
 
    margin: 1%; 
 
    -webkit-border-radius: 10px 10px 10px 10px; 
 
    border-radius: 10px 10px 10px 10px; 
 
    font-weight: 400; 
 
    font-family: 'FFMarkWebProHeavy', Helvetica, Arial; 
 
    position: relative; 
 
    vertical-align: middle; 
 
} 
 

 
.projectStatusWrapper li.complete { 
 
    background-color: #74b4df; 
 
    color: #fff; 
 
} 
 

 
.projectStatusWrapper li:after { 
 
    content: ''; 
 
    position: absolute; 
 
    z-index: 1; 
 
} 
 

 
.projectStatusWrapper li:nth-child(6n+4), 
 
.projectStatusWrapper li:nth-child(6n+5), 
 
.projectStatusWrapper li:nth-child(6n+6) { 
 
    float: right; 
 
} 
 

 
.projectStatusWrapper li:nth-child(6n+1):after, 
 
.projectStatusWrapper li:nth-child(6n+2):after { 
 
    top: 50%; 
 
    right: -19px; 
 
    transform: translateY(-50%); 
 
    border-top: 15px solid transparent; 
 
    border-bottom: 15px solid transparent; 
 
    border-left: 15px solid tomato; 
 
} 
 

 
.projectStatusWrapper li:nth-child(6n+3):after, 
 
.projectStatusWrapper li:nth-child(6n+6):after { 
 
    left: 50%; 
 
    bottom: -23px; 
 
    transform: translateY(-50%); 
 
    border-right: 15px solid transparent; 
 
    border-top: 15px solid tomato; 
 
    border-left: 15px solid transparent; 
 
} 
 

 
.projectStatusWrapper li:nth-child(6n+4):after, 
 
.projectStatusWrapper li:nth-child(6n+5):after { 
 
    top: 50%; 
 
    left: -19px; 
 
    transform: translateY(-50%); 
 
    border-top: 15px solid transparent; 
 
    border-bottom: 15px solid transparent; 
 
    border-right: 15px solid tomato; 
 
} 
 

 
.projectStatusWrapper li:last-child:after { 
 
    display: none; 
 
}
<div class="projectStatusWrapper"> 
 
    <ul> 
 
    <li class="complete">Step 1</li> 
 
    <li class="complete">Step 2</li> 
 
    <li>Step 3</li> 
 
    <li>Step 4</li> 
 
    <li>Step 5</li> 
 
    <li>Step 6</li> 
 
    <li>Step 7</li> 
 
    <li>Step 8</li> 
 
    <li>Step 9</li> 
 
    <li>Step 10</li> 
 
    </ul> 
 
</div>

+0

おかげで - 私はちょうどそれがより明白に何を作ることなど

  • STEP1
  • を使用するようにHTMLを編集した...そのアプローチはうまくいくかもしれないように見える...しかし... LIのは矢の新しいフォーマットを以下していないI平均 - 各行のLI浮動小数点/方向を変更して、リフローして意味をなすことができますか? – dubbs

    +1

    おかげで - きちんとアプローチ - ほとんどのLIS列から離れて動作しますが間違っている> http://codepen.io/8odoros/pen/QEzmvZ?editors=1100を参照してください - 私たちは、floatを使用することができます。右は偶数行を並べ替えるには? – dubbs

    +0

    最後の矢印のバグと同様に修正されました。それは多くの異なる量のアイテムでチェックされ、動作するようです。今私はそれらを正しく整列させる必要があります...私は最後の変更でコードを更新しました。 –