Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][HTML] Pasek z buttonami scrolowany
Forum PHP.pl > Forum > Przedszkole
AQuatro
Witam.
Chcę stworzyć na stronie poziomy pasek, na którym jest dużo buttonów. Wszystko poukładane poziomo.
Buttonów jest oczywiście dużo więcej niż mieścić się może na stronie, ale za pomocą scrolla można przewijać i wybrać odpowiedni button.
Mój problem polega na tym, że chciałbym aby ten pasek sam się przewinął do pozycji klikniętego buttona, w ten sposób, żeby aktywny button był mniej więcej na środku.
Może dałoby się to jakoś zrobić używając:
<body onload="document.getElementById('in').focus()">
Ale mam jeszcze dodatkowy problem, chciałbym, żeby focusowało się na aktywnym polu formularza, gdzie będą wprowadzane dane a tę opcję można wykorzystać chyba tylko w jednym miejscu.
W związku z tym moje pytanie, czy znacie jakiś sposób przykład. Na stworzenie długiego, poziomego paska z buttonami, którego tylko fragment widoczny jest na stronie i sposób na jakieś przewinięcie go do wybranego pewnego elementu.
LowiczakPL
może coś w ten sposób

  1. #container {
  2. overflow-x: scroll;
  3. display: flex;
  4. justify-content: center;
  5. align-items: center;
  6. height: 100px;
  7. width: 200px;
  8. }
  9.  
  10. button {
  11. margin: 0 10px;
  12. height: 50px;
  13. width: 50px;
  14. }
  15. <div id="container">
  16. <button onclick="scrollToCenter(this)">Button 1</button>
  17. <button onclick="scrollToCenter(this)">Button 2</button>
  18. <button onclick="scrollToCenter(this)">Button 3</button>
  19. <button onclick="scrollToCenter(this)">Button 4</button>
  20. <button onclick="scrollToCenter(this)">Button 5</button>
  21. </div>
  22. function scrollToCenter(button) {
  23. var container = button.parentNode;
  24. var containerWidth = container.offsetWidth;
  25. var buttonWidth = button.offsetWidth;
  26. var buttonLeft = button.offsetLeft;
  27. var buttonHalfWidth = buttonWidth / 2;
  28. var buttonCenter = buttonLeft + buttonHalfWidth;
  29. var scrollLeft = buttonCenter - (containerWidth / 2);
  30. container.scrollTo({
  31. left: scrollLeft,
  32. behavior: 'smooth'
  33. });
  34. }
AQuatro
Dzięki. Działa to bez zarzutu i dokładnie jest to to co chciałem.
Jest tylko problem. Nie działa gdy div umieszczę wewnątrz '<form></form>' nie rozumiem dlaczego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.