Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> galeria miniatury
john_doe
post
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


Witam,

chciałbym stworzyć galerie w taki sposób:

1. tworze div id="gallery"
2. wewnątrz tworzę div ( generowane z bazy ), class="mini" wewnątrz z miniaturą obrazu
3. napisałem przykładowy kod, który miniatury ustawia w pasku i po kliknięciu dostaniemy normalny obraz w stałych divie

  1. <!DOCTYPE HTML>
  2. <title>krystian gallery js</title>
  3. <script language="JavaScript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  4.  
  5. <style type="text/css">
  6. #gallery{ border: 2px solid green; overflow: hidden; width: 840px; height: 120px; }
  7. .mini{ float: left; border: 1px solid red; }
  8. #normal-pic-size{ width: 584px; height: 422px; border: 2px solid pink; }
  9. </style>
  10.  
  11. <script type="text/javascript">
  12.  
  13. $(document).ready(function(){
  14.  
  15. $('.mini').click(function(){
  16.  
  17. var fileName = $(this).children('img').attr('src');
  18.  
  19. $("#normal-pic-size").html('<img src="' + fileName.replace("mini_", "") + '" />');
  20.  
  21. });
  22.  
  23. });
  24.  
  25. </script>
  26.  
  27. </head>
  28.  
  29.  
  30. <div id="normal-pic-size"></div>
  31.  
  32. <div id="gallery">
  33.  
  34. <div class="mini">
  35. <img src="mini_zaraz.jpg" alt="" />
  36. </div>
  37. <div class="mini">
  38. <img src="mini_zaraz.jpg" alt="" />
  39. </div>
  40. <div class="mini">
  41. <img src="mini_zaraz.jpg" alt="" />
  42. </div>
  43. <div class="mini">
  44. <img src="mini_zaraz.jpg" alt="" />
  45. </div>
  46. <div class="mini">
  47. <img src="mini_zaraz.jpg" alt="" />
  48. </div>
  49. <div class="mini">
  50. <img src="mini_zaraz.jpg" alt="" />
  51. </div>
  52. <div class="mini">
  53. <img src="mini_zaraz.jpg" alt="" />
  54. </div>
  55. <div class="mini">
  56. <img src="mini_zaraz.jpg" alt="" />
  57. </div>
  58. <div class="mini">
  59. <img src="mini_zaraz.jpg" alt="" />
  60. </div>
  61. <div class="mini">
  62. <img src="mini_zaraz.jpg" alt="" />
  63. </div>
  64.  
  65. </div>
  66.  
  67. </body>
  68.  
  69. </html>
  70.  
  71.  


gdy w css mam ustawiony overflow: hidden nie wyświetla mi wszystkich obrazów w moim poziomym pasku miniatur.
proszę o wskazówki jak zrobić przesunięcie niewidocznej częsci divów za pomocą przycisku prawo-lewo

Ten post edytował john_doe 13.05.2012, 00:49:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
pczeglik
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 1
Dołączył: 14.05.2012

Ostrzeżenie: (0%)
-----


Hej,

Zasada jest taka. Pozycjonujesz relatywnie kontener, który przechowuje wszystkie zdjęcia, czyli #gallery. W nim umieszczasz jakiś sub-kontener np. div.gallery-content, który pozycjonujesz relatywnie.
Później, gdy wykryjesz kliknięcie w przycisk prawo / lewo zmieniasz wartość css left div.gallery-content na odpowiednio wyliczoną.

Zerknij na poniższy kawałek kodu. Napisałem to na szybko i pewnie sporo jest tutaj rzeczy wymagających poprawienia, optymalizacji, ale chciałem Ci pokazać zasadę, a dostosujesz sobie to już wg potrzeb.
Poza tym są biblioteki, pluginy jQuery, które ułatwiają robienie takich galerii.

  1. <div class="content">
  2. <div id="normal-pic-size"></div>
  3. <div id="gallery">
  4. <div class="gallery-content">
  5. <div class="mini">
  6. <div class="img"></div>
  7. </div>
  8. <div class="mini">
  9. <div class="img"></div>
  10. </div>
  11. <div class="mini">
  12. <div class="img"></div>
  13. </div>
  14. <div class="mini">
  15. <div class="img"></div>
  16. </div>
  17. <div class="mini">
  18. <div class="img"></div>
  19. </div>
  20. <div class="mini">
  21. <div class="img"></div>
  22. </div>
  23. <div class="mini">
  24. <div class="img"></div>
  25. </div>
  26. <div class="mini">
  27. <div class="img"></div>
  28. </div>
  29. <div class="mini">
  30. <div class="img"></div>
  31. </div>
  32. <div class="mini">
  33. <div class="img"></div>
  34. </div>
  35. </div>
  36. </div>
  37. <div class="nav">
  38. <a href="#" class="back">wstecz</a> | <a href="#" class="next">dalej</a>
  39. </div>
  40. </div>
  41.  
  42. #gallery{ border: 2px solid green; overflow: hidden; width: 600px; height: 100px; position:relative; }
  43. #normal-pic-size{ width: 600px; height: 422px; border: 2px solid pink; }
  44. .content {padding:20px;font:12px/16px Tahoma, Verdana, sans-serif;width:602px;margin:auto;}
  45. .gallery-content {position:absolute;}
  46. .mini{ float:left; width:150px;height:100px; }
  47. .mini .img {width:100%;height:100px;background:#CCC;}
  48. .nav {text-align:center;margin:20px 0 0;}
  49. (function($) {
  50. "use strict";
  51.  
  52. $('.img:odd').css('background', '#FF0000');
  53.  
  54. var next = $('.next'),
  55. back = $('.back'),
  56. galleryControl = {
  57. imgWidth: 0,
  58. imgCount: 0,
  59. galleryContent: '',
  60. current: 0,
  61. maxSteps: 0,
  62. init: function(options) {
  63. this.galleryContent = options.galleryContent || '';
  64. this.imgWidth = options.imgWidth || 100;
  65. this.imgCount = this.galleryContent.find('.img').length;
  66. this.maxSteps = this.imgCount - parseInt(parseInt(this.galleryContent.css('width'), 10) / this.imgWidth, 10);
  67. },
  68. move: function(dir) {
  69. if (dir === 'next') {
  70. if (this.current < this.maxSteps) {
  71. this.current += 1;
  72. }
  73. }
  74. if (dir === 'back') {
  75. if (this.current > 0) {
  76. this.current -= 1;
  77. }
  78. }
  79. if (this.galleryContent !== '') {
  80. this.galleryContent.css({
  81. 'left': ~ (this.current * this.imgWidth)
  82. });
  83. }
  84. }
  85. };
  86. // Inicjalizacja
  87. galleryControl.init({
  88. imgWidth: parseInt($('.img').css('width'), 10),
  89. galleryContent: $('.gallery-content')
  90. });
  91.  
  92. // obsługa zdarzeń
  93. back.on('click', function() {
  94. galleryControl.move('back');
  95. });
  96. next.on('click', function() {
  97. galleryControl.move('next');
  98. });
  99. }(jQuery));


Funkcjonujący przykład możesz zobaczyć tutaj: jsFiddle - przesuwanie zdjęć
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:00