そこで私は、CodeIgniter のライブラリとして phpFlickr を使用して、Flickr API からのデータを表示できるフィルター システムに取り組んできました。私は現在それをうまく機能させており、アニメーションは私が望んでいる場所ではありませんが、完全に機能しています. 私が抱えている問題は、コンテンツを別の画像セットに切り替えると、所定の位置にぎくしゃくしてスムーズなアニメーションが表示されないことです。私はアニメーションにかなり慣れていないので、このアニメーションにアプローチする最善の方法が何であるかはわかりません。さらに、コードをクリーンアップできる方法があれば、それは素晴らしいことです。これが私が持っているコードです。
コントローラ
$sets = $this->phpflickr->photosets_getList('66096679@N07');
$recent = $this->phpflickr->photos_search(array('privacy_filter' => 5, 'user_id' => '66096679@N07'));
foreach ($sets['photoset'] as $key => $value) {
$setid = $value['id'];
$photos_in_set = $this->phpflickr->photosets_getPhotos($setid, 'original_format', NULL);
$set_array[$key] = str_replace(' ', '-', $value['title']);
foreach ($photos_in_set['photoset']['photo'] as $key2 => $value2) {
$photo_array[$key][$key2]['set'] = str_replace(' ', '-', $value['title']);
$photo_array[$key][$key2]['title'] = $value2['title'];
$photo_array[$key][$key2]['photo_url_thumb'] = $this->phpflickr->buildPhotoURL($value2, "large");
$photo_array[$key][$key2]['photo_url_large'] = $this->phpflickr->buildPhotoURL($value2, "original");
}
}
$data['photos'] = array_reverse($photo_array);
$data['sets'] = $set_array;
意見
<div id="filter">
<a href="#" data-id="show-all" onclick="return false">All</a>
<?php foreach($sets as $key => $value): ?>
<a href="#" data-id="<?= $value ?>" onclick="return false"><?= str_replace('-', ' ', $value) ?></a>
<?php endforeach; ?>
</div>
<section id="photos">
<?php foreach($photos as $photoset): ?>
<?php foreach($photoset as $key): ?>
<a class="fancybox-media" href="<?= str_replace('http:', '',$key['photo_url_large']) ?>" data-filter="<?= $key['set'] ?>">
<img src="<?= str_replace('http:', '', $key['photo_url_thumb']) ?>" />
</a>
<?php endforeach; ?>
<?php endforeach; ?>
</section>
Javascript
$(document).ready(function(){
$( '#filter a' ).click(function() {
var set = $(this).data('id');
$("#photos a[data-filter='"+ set +"']").fadeIn('20');
$("#photos a[data-filter!='"+ set +"']").fadeOut('0');
if($(this).data('id') === 'show-all') {
$('#photos a'). fadeIn('20');
}
});
});
上記のコードの実際の例へのリンクを次に示します。アニメーションを滑らかにするのを手伝っていただければ、非常にありがたいです。データの設定方法に関しては、すべての画像が非公開としてリストされているため、Web サイトでのみ使用できるため、これが最良の方法のようです。これについてはまだ立っているだけで、どんな助けや指示も大歓迎です。ご不明な点がございましたら、それに応じて質問を更新していただければ幸いです。事前に助けてくれてありがとう!