WebHU - Programozási kérdések és válaszok

Körkörös folyamatjelző sáv színátmenettel a háttérben

A következő kör alakú folyamatjelző sávom van, aminek a színezése a háttér gradiensnek köszönhetően kicsit elrontott (a fehér az előrehaladás, a narancs többi része ideális esetben a háttérrel azonos): Haladásjelző sáv< /a>

Ezt úgy készítettem el, hogy két kört és a külső körön két lineáris gradienst használtam, amelyek fokozatai a haladás alapján dinamikusan generálódnak. A probléma abból adódik, hogy a háttérszín maga is színátmenet. Az általam használt css a következő:

html, body {
    background-image: linear-gradient(141deg, #e24a00 0%, #f6891f 71%, #fcb732 100%);
    background-attachment:fixed;
}

    .learn-prog {
background-image:
        <% learn_hash = learn_degrees(@my_today_flashcards, current_user.words_per_day) %>
        linear-gradient(<%= learn_hash[:degrees]  %>deg, <%= learn_hash[:color] %> 50%, transparent 50%),
        linear-gradient(-90deg, white 50%, transparent 50%);
}

Itt van a kód, ami a learning_hash fokozatait / színezését generálja (ezt így kellett csinálnom, mert a gradiens nem lehet több 50%-nál, különben visszafelé indul):

def color_and_degrees(decimal_completed)
    todo_degrees = todo_degrees(decimal_completed)
    is_over_half = ((todo_degrees/180) > 0 ? true : false)
    if is_over_half
      {:color => 'white', :degrees => (todo_degrees - 180)}
    else
      { :color => 'rgba(246, 137, 31, 1)', :degrees => todo_degrees }
    end
  end

  def todo_degrees(decimal_completed)
    degrees = (360) * (decimal_completed)
    degrees - 90
  end

  def learn_degrees(todays_flashcards, words_per_day)
    #cards_created_today / words_per_day
    if words_per_day == 0
      decimal_completed = 1.0
    else
      decimal_completed = todays_flashcards.size / words_per_day.to_f
      decimal_completed = 1.0 if decimal_completed >= 1.0
    end
    color_and_degrees(decimal_completed)
  end

Bármilyen ötlet a színek összeegyeztetésére jó lenne. Köszönöm és egészséget, Michael

11.12.2017

  • Biztos, hogy nem fogtam fel a jelenlegi megvalósításod minden részét, de lehet, hogy a belső narancssárga színátmenet átlátszó lehet? A kék körnek ezután egy kör alakú szegélyre kell támaszkodnia... 11.12.2017
  • Ezt úgy oldottam meg, hogy a külső körnek ugyanolyan narancssárgát adtam a háttérszínnek, mint amilyet a 2. gradiens hoz létre. Így konzisztens a két színátmenet között, és szilárdnak tűnik. Tekintettel arra, hogy ezt megoldottam, töröljem ezt a kérdést, vagy válaszoljak rá kicsit részletesebben? 12.12.2017

Válaszok:


1

A legegyszerűbb módja, ha átlátszó rést hagyunk a szöveg és a külső kékes kör között.
A radial-gradient() ezt lehetővé teszi (MDN).

Codepen

Vonatkozó rész:

background-image: radial-gradient( closest-side, white 90%, transparent 90%, transparent 95%, slateblue 95%, slateblue 100%);

closest-side azért szükséges, mert ez egy lemez. A radiális gradiens alapértelmezése 100% a sarkoknál, és nyilvánvalóan messze vannak a korongtól, így nem látod a gradienst 70,7% hiba után (az átló fele = sqrt(2)/2).

Nem adtam hozzá a kör alakú folyamatjelző sávot, de remélem, továbbra is jól működik több háttérrel :)

Demo:

html, body {
    background-image: linear-gradient(141deg, #e24a00 0%, #f6891f 71%, #fcb732 100%);
    background-attachment:fixed;
}

    .learn-prog {
      display: flex; /* centering text */
      justify-content: center;
      align-items: center;
      border-radius: 50%;
      width: 400px;
      height: 400px;
background-image:
        radial-gradient(closest-side, white 90%, transparent 90%, transparent 95%, slateblue 95%, slateblue 100%);
      border: 1px solid #000; /* visualize boundary of elements */
}
<div class="learn-prog">HELLO</div>

<div class="learn-prog" style="margin-left: auto">MOVE</div>

11.12.2017
  • Érdekes... szóval hogyan töltenéd fel mondjuk 30%-kal a kör körül? úgy tűnik, hogy ez határozottan jó irányba halad, de a folyamatjelző sáv megvalósítása az a rész, ami engem kidob. Körülbelül 30 percben próbáltam játszani vele a kódolóban, de nem sikerült működésre bírnom :( Még a fehér sem jelenik meg. Bármilyen lökdösés a megfelelő irányba a haladási részhez, az segítene. 12.12.2017
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..