program tip

빌드 단계 진행률 표시 줄 (css 및 jquery)

radiobox 2020. 12. 12. 10:23
반응형

빌드 단계 진행률 표시 줄 (css 및 jquery)


여기에 이미지 설명 입력

페이팔과 같은 사이트에서 이러한 유형의 진행률 표시 줄이 반복되는 것을 보았습니다. CSS사용하여 이것을 설정하는 방법은 jquery무엇입니까? 나는 4 페이지를 가지고 있고 각 페이지는 단계입니다. 그래서 4 단계.


웹 애플리케이션에서 프로세스 단계를 시각화 할 솔루션을 찾았습니다. 나는 Stephen A Thomas의 다음과 같은 훌륭한 글을 발견했습니다.

순수 CSS에서 진행률 추적 ( 원래 링크는 이제 작동하지 않음)

그의 접근 방식에서 Thomas는 CSS를 사용하는 것만으로도 빠져 나갑니다-Javascript가 없습니다! 본질적으로 그의 기사의 다음 CSS 코드가 나를 위해 트릭을 수행합니다.

    <style>

    <!-- Progress with steps -->

    ol.progtrckr {
        margin: 0;
        padding: 0;
        list-style-type: none;
    }

    ol.progtrckr li {
        display: inline-block;
        text-align: center;
        line-height: 3em;
    }

    ol.progtrckr[data-progtrckr-steps="2"] li { width: 49%; }
    ol.progtrckr[data-progtrckr-steps="3"] li { width: 33%; }
    ol.progtrckr[data-progtrckr-steps="4"] li { width: 24%; }
    ol.progtrckr[data-progtrckr-steps="5"] li { width: 19%; }
    ol.progtrckr[data-progtrckr-steps="6"] li { width: 16%; }
    ol.progtrckr[data-progtrckr-steps="7"] li { width: 14%; }
    ol.progtrckr[data-progtrckr-steps="8"] li { width: 12%; }
    ol.progtrckr[data-progtrckr-steps="9"] li { width: 11%; }

    ol.progtrckr li.progtrckr-done {
        color: black;
        border-bottom: 4px solid yellowgreen;
    }
    ol.progtrckr li.progtrckr-todo {
        color: silver; 
        border-bottom: 4px solid silver;
    }

    ol.progtrckr li:after {
        content: "\00a0\00a0";
    }
    ol.progtrckr li:before {
        position: relative;
        bottom: -2.5em;
        float: left;
        left: 50%;
        line-height: 1em;
    }
    ol.progtrckr li.progtrckr-done:before {
        content: "\2713";
        color: white;
        background-color: yellowgreen;
        height: 1.2em;
        width: 1.2em;
        line-height: 1.2em;
        border: none;
        border-radius: 1.2em;
    }
    ol.progtrckr li.progtrckr-todo:before {
        content: "\039F";
        color: silver;
        background-color: white;
        font-size: 1.5em;
        bottom: -1.6em;
    }

</style>

그의 예제의 HTML 태그와 함께 (저는 Grails GSP 페이지를 사용하여 태그와 'done / todo'클래스를 동적으로 생성합니다) :

<ol class="progtrckr" data-progtrckr-steps="5">
    <li class="progtrckr-done">Order Processing</li>
    <li class="progtrckr-done">Pre-Production</li>
    <li class="progtrckr-done">In Production</li>
    <li class="progtrckr-done">Shipped</li>
    <li class="progtrckr-todo">Delivered</li>
</ol>

도움이 되었기를 바랍니다. 나를 위해 꽤 잘 작동합니다.


업데이트 : 다음 (단축) 버전도 잘 작동합니다.

    ol.progtrckr {
        display: table;
        list-style-type: none;
        margin: 0;
        padding: 0;
        table-layout: fixed;
        width: 100%;
    }
    ol.progtrckr li {
        display: table-cell;
        text-align: center;
        line-height: 3em;
    }
    ... and the rest of the CSS ...

    <ol class="progtrckr">
        ...
    </ol>

display: table; table-layout: fixed; width: 100%콘텐츠가 오버플로되지 않는 한 목록 항목의 크기가 자동으로 동일하게 조정되는지 확인합니다. 사용 data-progtrckr-steps및 관련 CSS 가 필요하지 않습니다 .


만드는 방법은 다음과 같습니다.

http://24ways.org/2008/checking-out-progress-meters

다음은 몇 가지 영감의 예입니다.

http://www.smashingmagazine.com/2010/01/15/progress-trackers-in-web-design-examples-and-best-design-practices/


이 페이지에는 매우 멋진 답변이 많이 있으며 더 많은 정보를 검색했지만 내 위시리스트의 모든 확인란을 선택한 답변은 없습니다.

  • CSS 만, 자바 스크립트 없음
  • Tom Kenny의 Best Design Practices 고수
  • 다른 답변과 같은 레이아웃
  • 각 단계에는 이름과 번호가 있습니다.
  • 반응 형 레이아웃 : 글꼴 크기 독립적
  • 유동적 인 레이아웃 : 목록과 항목이 사용 가능한 너비에 따라 조정됩니다.
  • 이름과 번호는 해당 블록의 중앙에 있습니다.
  • "완료"색상은 활성 항목까지 올라가지 만 지나치지는 않습니다.
  • 활성 항목은 그래픽으로 눈에 띄어 야합니다.

그래서 여러 예제의 코드를 혼합하고 필요한 사항을 수정했으며 결과는 다음과 같습니다.

진행 추적기 v2

다음 CSS와 HTML을 사용했습니다.

/* Progress Tracker v2 */
ol.progress[data-steps="2"] li { width: 49%; }
ol.progress[data-steps="3"] li { width: 33%; }
ol.progress[data-steps="4"] li { width: 24%; }
ol.progress[data-steps="5"] li { width: 19%; }
ol.progress[data-steps="6"] li { width: 16%; }
ol.progress[data-steps="7"] li { width: 14%; }
ol.progress[data-steps="8"] li { width: 12%; }
ol.progress[data-steps="9"] li { width: 11%; }

.progress {
    width: 100%;
    list-style: none;
    list-style-image: none;
    margin: 20px 0 20px 0;
    padding: 0;
}

.progress li {
    float: left;
    text-align: center;
    position: relative;
}

.progress .name {
    display: block;
    vertical-align: bottom;
    text-align: center;
    margin-bottom: 1em;
    color: black;
    opacity: 0.3;
}

.progress .step {
    color: black;
    border: 3px solid silver;
    background-color: silver;
    border-radius: 50%;
    line-height: 1.2;
    width: 1.2em;
    height: 1.2em;
    display: inline-block;
    z-index: 0;
}

.progress .step span {
    opacity: 0.3;
}

.progress .active .name,
.progress .active .step span {
    opacity: 1;
}

.progress .step:before {
    content: "";
    display: block;
    background-color: silver;
    height: 0.4em;
    width: 50%;
    position: absolute;
    bottom: 0.6em;
    left: 0;
    z-index: -1;
}

.progress .step:after {
    content: "";
    display: block;
    background-color: silver;
    height: 0.4em;
    width: 50%;
    position: absolute;
    bottom: 0.6em;
    right: 0;
    z-index: -1;
}

.progress li:first-of-type .step:before {
    display: none;
}

.progress li:last-of-type .step:after {
    display: none;
}

.progress .done .step,
.progress .done .step:before,
.progress .done .step:after,
.progress .active .step,
.progress .active .step:before {
    background-color: yellowgreen;
}

.progress .done .step,
.progress .active .step {
    border: 3px solid yellowgreen;
}
<!-- Progress Tracker v2 -->
<ol class="progress" data-steps="4">
    <li class="done">
        <span class="name">Foo</span>
        <span class="step"><span>1</span></span>
    </li>
    <li class="done">
        <span class="name">Bar</span>
        <span class="step"><span>2</span></span>
    </li>
    <li class="active">
        <span class="name">Baz</span>
        <span class="step"><span>3</span></span>
    </li>
    <li>
        <span class="name">Quux</span>
        <span class="step"><span>4</span></span>
    </li>
</ol>

위의 예에서 볼 수 있듯이,주의해야 할 두 개의 목록 항목 클래스가 있습니다. activedone. 사용하여 class="active"현재 단계, 사용을 위해 class="done"그것을하기 전에 모든 단계에 대한.

또한주의 data-steps="4"ol태그; 모든 목록 항목에 올바른 크기를 적용하려면 총 단계 수로 설정하십시오.

함께 놀러 자유롭게 JSFiddle . 즐겨!


이것이 내가 순수하게 CSS와 HTML (자바 스크립트 / 이미지 등 없음)을 사용하여 달성 한 방법입니다.

http://jsfiddle.net/tuPrn/

대부분의 브라우저에서 우아하게 성능이 저하됩니다 (<IE9에서 last-of-type이 부족한 경우 수정 사항을 추가해야합니다).


일종의 단계 진행 추적기를 만드는 데 동일한 요구 사항이 있었으므로 해당 목적을위한 JavaScript 플러그인을 만들었습니다. 다음은 이 단계 진행률 추적기의 데모 용 JsFiddle 입니다. GitHub 에서도 코드에 액세스 할 수 있습니다 .

기본적으로하는 일은 json 데이터 (아래에 설명 된 특정 형식)를 입력으로 받아이를 기반으로 진행률 추적기를 생성하는 것입니다. 강조 표시된 단계는 완료된 단계를 나타냅니다.

html은 기본 CSS를 사용하여 아래와 같이 다소 보이지만 응용 프로그램의 테마에 따라 사용자 정의 할 수 있습니다. 각 단계에 대한 도구 설명 텍스트를 표시하는 옵션도 있습니다.

다음은 이에 대한 몇 가지 코드 스 니펫입니다.

//container div 
<div id="tracker1" style="width: 700px">
</div>

//sample JSON data
var sampleJson1 = {
ToolTipPosition: "bottom",
data: [{ order: 1, Text: "Foo", ToolTipText: "Step1-Foo", highlighted: true },
    { order: 2, Text: "Bar", ToolTipText: "Step2-Bar", highlighted: true },
    { order: 3, Text: "Baz", ToolTipText: "Step3-Baz", highlighted: false },
    { order: 4, Text: "Quux", ToolTipText: "Step4-Quux", highlighted: false }]
};    

//Invoking the plugin
$(document).ready(function () {
        $("#tracker1").progressTracker(sampleJson1);
    });

다른 사람에게도 유용하기를 바랍니다.

여기에 이미지 설명 입력


이것이 내가 한 일입니다.

  1. 진행률 표시 줄에 div를로드하려면 jQuery .progressbar ()만듭니다 .
  2. 진행률 표시 줄 하단에 단계 제목만듭니다 . 그들을 배치 CSS .
  3. 그럼 함수 생성 jQuery를 변경 진행 막대의 다음 단계로 매번 사용자 이동.

HTML

<div id="divProgress"></div>
<div id="divStepTitle">
    <span class="spanStep">Step 1</span> <span class="spanStep">Step 2</span> <span class="spanStep">Step 3</span>
</div>

<input type="button" id="btnPrev" name="btnPrev" value="Prev" />
<input type="button" id="btnNext" name="btnNext" value="Next" />

CSS

#divProgress
{
    width: 600px;
}

#divStepTitle
{
    width: 600px;
}

.spanStep
{
    text-align: center;
    width: 200px;
}

자바 스크립트 / jQuery

var progress = 0;

$(function({
    //set step progress bar
    $("#divProgress").progressbar();

    //event handler for prev and next button
    $("#btnPrev, #btnNext").click(function(){
        step($(this));
    });
});

function step(obj)
{
    //switch to prev/next page
    if (obj.val() == "Prev")
    {
        //set new value for progress bar
        progress -= 20;
        $("#divProgress").progressbar({ value: progress });

        //do extra step for showing previous page
    }
    else if (obj.val() == "Next")
    {
        //set new value for progress bar
        progress += 20;
        $("#divProgress").progressbar({ value: progress });

        //do extra step for showing next page
    }
}

내가 할 일은 버튼에 마우스를 올리는 데 자주 사용하는 것과 동일한 트릭을 사용하는 것입니다. 두 부분으로 구성된 이미지를 준비합니다. (1) 불완전 함을 의미하는 회색으로 표시된 절반과 (2) 완료됨을 의미하는 색상으로 표시된 아래쪽 절반. 동일한 이미지를 4 번 사용하여 진행률 표시 줄의 4 단계를 구성하고 불완전한 단계의 경우 상단을 정렬하고 불완전한 단계의 경우 하단을 정렬합니다.

이미지 정렬을 활용하려면 img 요소를 사용하는 대신 이미지를 4div의 배경으로 사용해야합니다.

이것은 배경 이미지 정렬을위한 CSS입니다.

div.progress-incomplete {
  background-position: top;
}
div.progress-finished {
  background-position: bottom;
}

참고 URL : https://stackoverflow.com/questions/5213753/build-step-progress-bar-css-and-jquery

반응형