Автор оригинала: David Wong.
Как говорится, программист, который не любит красивых женщин, не является хорошим водителем! мм:http://mm.luckyw.cn/ Карта-сестра: http://mzt.luckyw.cn/ Яичница-глазунья: http://jd.luckyw.cn/
В эти дни я занимался в учебнике для новичков. php и mysql Я хочу подвести итоги своих собственных учебных достижений. мм Станции с картинками также появились естественным образом, в основном использовались. Изображение Водопадного потока 、 Загрузка данных Ajax , Статические страницы PHP 、 Подкачка изображений Методы осуществления
Изображение Водопадный Поток
Существует два метода водопадного потока, первый из которых-статическая домашняя страница. index.html ): Сначала достаньте все коробки с картинками коробки Ширина каждой графической коробки box_w Ширина документа W Итак, мы получаем количество столбцов. число Затем настройте контейнер $('#imgBox') Ширина равна Номеру столбца * ширина каждого графического поля 。 Затем определите массив arr Сохраните высоту каждого столбца и обойдите все графические поля. Если индекс на данный момент меньше, чем количество столбцов, добавьте в поле высоту поля изображения. Если индекс больше, чем количество столбцов в данный момент, сначала получите массив. об Минимальная высота Мин Индекс этого столбца minIndex Затем определите местоположение графического поля в контейнере, потому что мой контейнер imgBox Это было определено. положение:относительно Установите поле для изображения в положение:абсолютное Поле изображения расположено абсолютно относительно контейнера. слева и верхнее Значение, а затем добавьте значение самого нижнего столбца в массиве к высоте поля picturebox, которое реализует эффект водопада изображений, запускаемый прокруткой страницы. ajax Загрузите данные, затем добавьте поля с картинками одно за другим в контейнер.
function waterfall() {
var boxes = $('.box');
var box_w = boxes.eq(0).outerWidth(true);
var W = document.body.clientWidth || document.documentElement.clientWidth;
var num = Math.floor(W / box_w); //5
$('#imgBox').width(num * box_w);
$('.w').width(num * box_w);
var arr = [];
boxes.each(function(index, ele) {
var h = $(ele).outerHeight(true);
if (index < num) {
arr.push(h);
} else {
var minH = Math.min.apply(null, arr);
var minIndex = getMinIndex(arr, minH);
$(ele).css({
'position': 'absolute',
'left': box_w * minIndex,
'top': minH
});
arr[minIndex] += h;
}
});
}
function getMinIndex(arr, h) {
for (var i in arr) {
if (arr[i] == h) {
return i;
}
}
}Второй способ (разбиение на страницы изображений): Это в основном то же самое, что и выше. Это также касается получения всех коробок с картинками. коробки Ширина каждой графической коробки box_w Ширина документа W Итак, мы получаем количество столбцов. число Затем настройте контейнер $('#imgBox') Ширина равна Номеру столбца * ширина каждого графического поля 。 Но разница в том, что я использую здесь определение. число Колонки div Box, установите его ширину равной ширине picturebox box_w , отображение с помощью встроенного блока Затем добавьте его в контейнер, а затем возьмите все коробки с картинками из dom Удаляйте и добавляйте один за другим в самый короткий столбец
Загрузка данных Ajax
Я использую его здесь. python Возьмите ссылки на фотографии из Интернета и сохраните их в mysql В базе данных, затем создайте интерфейс для доступа к данным, ссылки на интерфейс: http://luckyw.cn/api/load_img… Срабатывает, когда страница прокручивается ajax Методом загрузки данных, в это время ajax Запрашивает данные через интерфейс, затем добавляет в контейнер одно графическое поле за другим, а затем применяет поток водопада изображений для достижения эффекта загрузки изображений потоком водопада. ajax Код для запроса данных изображения выглядит следующим образом:
/**
* Ajax requests image data
*@ Params: Start Position
*@ Param n: Number of pages per page
*/
function ajax(s, n) {
$.ajax({
url: 'http://luckyw.cn/api/load_img.php?start=' + s + '&num=' + n,
method: 'GET',
dataType: "json",
success: function(data) {
var imgs = data.list;
for (var i in imgs) {
var box = $('Статические страницы PHP
Здесь я просто сказал следующий принцип: он используется. php Механизм кэширования output_buffering Затем используйте file_put_contents Запишите кэш в файл для достижения статичности страницы, код ключа выглядит следующим образом:
// Index.php file
Ob_start();//If `php.ini'does not open the cache, open the cache here.
Require [once ('temp. PHP '); // load the template file
If (file_put_contents('index.html', ob_get_clean()) {// Write the cache into the file and empty the cache
Header ("location: index. html"); here is the implementation of page Jump to static files
}else{
echo 'error';
}После этого мы навещаем друг друга каждый раз. index.php Файл будет сгенерирован и перенесен в index.html Статические файлы
Подкачка изображений
Интерфейс в основном похож на интерфейс, и интерфейс предназначен для возврата данных, и вот основа. url Ключевым моментом является реализация подкачки. Логика хорошо понятна. Здесь я не буду подробно останавливаться на этом. Посмотрите на код просто:
$start = 1;
$end = $totalPage;
$showPageNum = 5;
$pageOffset = ($showPageNum-1)/2;
$page_navigation = '';
if($page>1){
$page_navigation. =" Home page ";
$page_navigation. =" < previous page ";
}
if($totalPage>$showPageNum){
if($page>$pageOffset+1){
$page_navigation .= '...';
}
if($page>$pageOffset){
$start = $page-$pageOffset;
$end = $totalPage>$page+$pageOffset?$page+$pageOffset:$totalPage;
}else{
$start = 1;
$end = $showPageNum;
}
if($page+$pageOffset>$totalPage){
$start = $start - ($page+$pageOffset-$end);
}
}
for($i=$start;$i<=$end;$i++){
if($i==$page){
$page_navigation.="$i";
}else{
$page_navigation.="$i";
}
}
if($totalPage>$showPageNum&&$totalPage>$page+$pageOffset){
$page_navigation.='...';
}
if($page<$totalPage){
$page_navigation. =" next page & gt; ";
$page_navigation. =" tail page ";
}
$page_navigation. = "There are {$total Page} pages in common";Оригинал: “https://developpaper.com/summary-of-beauty-picture-station-construction/”