吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3055|回复: 10
收起左侧

[其他转载] 【吾赏美图】网站页面设计篇(二)

[复制链接]
香谢枫林 发表于 2020-5-5 14:22
本帖最后由 香谢枫林 于 2020-5-9 11:59 编辑

美图网站千千万,吾赏美图自己说了算!
图集列表展示页面:展示套图集的列表,点击图片可以跳转查看该图集下的所有美图(点击图片和文字跳转显示的方式不同)
此页面设计比较简单,只需用PHP把图片信息打印出来即可,此处用的table排列,对于竖图每行排列5个,横图每行排列4个。
注意:此处需要接收一个地址参数--图集名称(可以定位到图集)

图集列表

图集列表

核心代码如下:
[PHP] 纯文本查看 复制代码
<table><tr>
                    <td colspan="5" align="center" style="background-image: url('images/list top.jpg'); height:40px; width: 882px;"><span style="color: white">
                <?php
                $query = $db->query("select count(*) from ".$indexname);
                $row = $db->fetch_array($query);
                $index_count = $row[0];
                $query = $db->query("select count(*) from ".$tablename);
                $row = $db->fetch_array($query);
                $image_counts = $row[0];
                echo($beautyname." (总计".$index_count."套 ".$image_counts."张)</span></td></tr>");
                $query = $db->query("select * from ".$indexname." order by ID ");
                if($indextype == 1){
                    $icount = 1;
                    while($row=$db->fetch_array($query)){
                        if(($icount%5) == 1){
                            echo "<tr style='vertical-align: top'>";
                        }
                        $imageurl = $row['picpath'];
                        $flodername=$row['flodername'];
                        $avname = $row['girlname'];
                        $imagelink="imageshow.php?tablename=".$tablename."&flodername=".rawurlencode($flodername);
                        $imagelink1="imageshowd.php?tablename=".$tablename."&flodername=".rawurlencode($flodername);
                        echo ("<td><div class='newface'><div class='thum'><a href='".$imagelink."' target='_blank'>");
                        echo ("<img src='".$imageurl."' width='195' border='0'>");
                        echo ("</a></div><div class='open'><a href='".$imagelink1."' target='_blank'>".$avname."</a></div></div></td>");
                        if(($icount%5) == 0){
                            echo "</tr>";
                        }
                        $icount++;
                    }
                }elseif($indextype == 2){
                    $icount = 1;
                    while($row=$db->fetch_array($query)){
                        if(($icount%4) == 1){
                            echo "<tr>";
                        }
                        $imageurl = $row['picpath'];
                        $flodername=$row['flodername'];
                        $avname = $row['girlname'];
                        $imagelink="imageshow.php?tablename=".$tablename."&flodername=".rawurlencode($flodername);
                        $imagelink1="imageshowd.php?tablename=".$tablename."&flodername=".rawurlencode($flodername);
                        echo ("<td><div class='newface'><div class='thum'><a href='".$imagelink."' target='_blank'>");
                        echo ("<img src='".$imageurl."' width='250' border='0'>");
                        echo ("</a></div><div class='open'><a href='".$imagelink1."' target='_blank'>".$avname."</a></div></div></td>");
                        if(($icount%4) == 0){
                            echo "</tr>";
                        }
                        $icount++;
                    }
                }
                ?>
            </table>

套图展示页面:一次显示套图集下的所有图片,考虑到有的套图数量太多,所以设置了下拉加载更多的功能
设计思路:在网页加载时,首先一次获取套图下所有的图片信息,存入一个list数据列表中;然后加载一次图片;后续再判断拉下函数,继续加载数据。
需要设定的参数如下:
[JavaScript] 纯文本查看 复制代码
var tablename;       //套图表名
var flodername;      //套图目录名称
var num_count;       //总记录数
var num_pages;       //总页数
var current_page = 1;   //当前页数,不能超过总页数
var pagesize = 20;   //每页显示的数量
var icount = 1;          //第几张图片
var timers = null;  //定义一个定时器
var srcoll_flag = true; // 定义一个开关,等会用来控制多次触发
var image_json = {};    //存放获取的图片预览信息

获取数据时要用同步加载方式,否则不仅图片顺序会乱,还要用定时器判断数据什么时候获取完成:
[JavaScript] 纯文本查看 复制代码
    $.ajaxSettings.async = false;
    $sql = "select * from "+tablename+" where flodername='"+flodername+"' order by imageid";
    $.getJSON("server.php",{pagetype:8,sql:$sql,sid:Math.random()},function (json) {
        for(i in json){
            image_json[i] = {"imageid":json[i].imageid,"imagepath":json[i].imagepath,"beautyname":json[i].beautyname,"flodername":json[i].flodername,"tablename":json[i].tablename,"jpnname":json[i].jpnname,"imagename":json[i].imagename};
        }
    });
    $.ajaxSettings.async = true;

下拉加载设计思路:

下拉判断

下拉判断

代码如下:
[JavaScript] 纯文本查看 复制代码
$(window).scroll(function() {
    var scrollTop = $(this).scrollTop();//浏览器可视窗口顶端距离网页顶端的高度(垂直偏移)
    var scrollHeight = $(document).height();//整个文档高度
    var windowHeight = $(this).height();//浏览器可视窗口高度
    // alert("窗口顶端距离网页顶端高度:"+scrollTop+"\n浏览器可视窗口高度:"+windowHeight+"\n整个文档高度:"+scrollHeight);
    if (scrollTop + windowHeight + 60 >= scrollHeight) {
        // 此处是滚动条距离底部60px时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
        if(srcoll_flag == true){
            srcoll_flag = false;
            if(current_page <= num_pages){
                $("#img_load").css('display','block');
                clearTimeout(timers);
                timers = setTimeout(function(){
                    page_loadmore();
                },500);
                // page_loadmore();// 发现拉下操作,执行下拉函数
            }
        }
    }
});

function page_loadmore() {
    $("#img_load").css('display','none');
    var page_a = (current_page - 1) * pagesize;
    var page_b = current_page * pagesize;
    for(i=0;i<num_count;i++){
        if(i >= page_a && i < page_b){
            $("#ph").append("<lable>ID:<a style='text-decoration: none;' href='"+image_json[i].imagepath+"' target='_blank'>"+image_json[i].imageid+"</a> Folder:<span style='color:blue'>"+image_json[i].flodername+"</span> Girl:<span style='color:fuchsia'>"+image_json[i].jpnname+"</span> Picture:<span style='color:red'>"+image_json[i].imagename+"</span> Num:<span style='color:DeepPink'>"+(i+1)+"/"+num_count+"</span> (<a style='text-decoration: none;' href='javascript:void(0)'><span style='color: dodgerblue' id='sp_"+image_json[i].imageid+"' onclick='pic_collect("+image_json[i].imageid+");'>收藏</span></a>)</lable><br>");
            $("#ph").append("<img width='750'id='"+image_json[i].imageid+"' src='"+image_json[i].imagepath+"'><br><p>");
        }
    }
    current_page++;
    clearTimeout(timers);
    timers = setTimeout(function(){
        srcoll_flag = true;
    },1000);
}

套图显示方式一

套图显示方式一


套图展示页面二:一次显示套图集下的所有图片,考虑到第一种方式看的不够过瘾,本次密集显示图片,增加观赏性;考虑到有的图片数量太大,此处也用了下拉加载方式;
设计思路:每行最多显示3张照片,正常显示方式有4种:竖竖竖、竖竖横、竖横、横;最后1~3张要判断,显示方式有:竖、竖竖
此处关键是算出图片的比例,每行图片的高度一致,并且宽度加起来刚好等于页面宽度(我设计是99%,留1%的空白),计算方式如下:
图片宽度计算.jpg
核心代码如下:
[JavaScript] 纯文本查看 复制代码
//第一步:加载图片
function img_load() {
    $("#img_load").css('display','block');
    var page_a = (current_page - 1) * pagesize;
    var page_b = current_page * pagesize;
    img_url.forEach(function (value,index) {
        // $("#ph").append("icount:"+icount+"<br>");
        if(index >= page_a && index < page_b){
            var img = new Image();
            img.src = value;
            var timer_info = setInterval(
                function () {
                    if(img.width > 0||img.height >0){
                        clearInterval(timer_info);
                        // $("#ph").append("index:"+index+"<br>");
                        image_json[index] = {"index":index,"width":img.width,"height":img.height,"image_url":value,"image_id":imageid[index]};
                        image_json_arr.push(index);
                    }
                },40);
        }
    });

    //检查图片加载情况,等加载结束再显示图片
    var timer_check = setInterval(
        function () {
            var page_a = (current_page - 1) * pagesize;
            var page_b = current_page * pagesize;
            var progress = 0;
            if(num_count <= page_b && current_page == 1){
                progress = ((image_json_arr.length - page_a)/num_count).toFixed(2)*100;
            }else if(current_page < num_pages){
                progress = ((image_json_arr.length - page_a)/pagesize).toFixed(2)*100;
            }else if(current_page == num_pages){
                progress = ((image_json_arr.length - page_a)/(num_count-page_a)).toFixed(2)*100;
            }
            $("#img_loadd").css({'min-width':''+progress+'em','width':''+progress+'%'});
            $("#img_loadd").text(progress+'%');
            if(image_json_arr.length == pagesize*current_page || image_json_arr.length == num_count){
                clearInterval(timer_check);
                view_json();
            }
        }
        ,100);
}
//第二步:将加载的图片信息压入堆栈
function view_json() {
    $("#img_load").css('display','none');
    $("#img_loadd").css({'min-width':'0em','width':'0%'});
    $("#img_loadd").text('0%');
    var page_a = (current_page - 1) * pagesize;
    var page_b = current_page * pagesize;
    image_json_arr.forEach(function (value, i) {
        if(i >= page_a && i < page_b){
            // $("#lk").append('i:'+i+' index:'+image_json[i].index+' image_id:'+image_json[i].image_id+' width:'+image_json[i].width+' height:'+image_json[i].height+' image_url:'+image_json[i].image_url+'<br>');
            // alert(image_json[i].index+"<br>"+image_json[i].width+"<br>"+image_json[i].height);
            if(image_json[i].width < image_json[i].height){
                if(image_url.length < 2){
                    imgage_info_push(image_json[i].image_id,image_json[i].image_url,image_json[i].width,image_json[i].height);
                    if(num_count == (image_json[i].index+1)){
                        img_view(image_url,image_width,image_height,image_id,0);
                    }
                }else{
                    imgage_info_push(image_json[i].image_id,image_json[i].image_url,image_json[i].width,image_json[i].height);
                    img_view(image_url,image_width,image_height,image_id,1);
                }
            }else if(image_json[i].width >= image_json[i].height && image_json[i].width < image_json[i].height*2){
                imgage_info_push(image_json[i].image_id,image_json[i].image_url,image_json[i].width,image_json[i].height);
                img_view(image_url,image_width,image_height,image_id,1);
            }
        }
    });

    current_page++;
    clearTimeout(timers);
    timers = setTimeout(function(){
        srcoll_flag = true;
    },1000);
}

//第三步:显示堆栈图片
function img_view(image_url,image_width,image_height,image_id,flag) {
    var imgx;
    var img_width =[];
    if(image_url.length == 1 && flag == 1){
        image_id.forEach(function (v,k){
            $("#ph").append("<img id='"+image_id[k]+"' title='"+image_id[k]+"' width='100%' onclick='pic_collect("+image_id[k]+")' src='"+image_url[k]+"'>");
        });
    }else if(image_url.length == 2 && flag == 1){
        imgx = 99/(image_width[0]*image_height[1]/image_height[0]+image_width[1]);
        img_width[0] = image_width[0]*image_height[1]/image_height[0]*imgx;
        img_width[1] = image_width[1]*imgx;
        image_id.forEach(function (v,k){
            $("#ph").append("<img id='"+image_id[k]+"' title='"+image_id[k]+"' width='"+img_width[k].toFixed(2)+"%' onclick='pic_collect("+image_id[k]+")' src='"+image_url[k]+"'>");
        });
    }else if(image_url.length == 3 && flag == 1){
        imgx = 99/(image_width[0]*image_height[2]/image_height[0]+image_width[1]*image_height[2]/image_height[1]+image_width[2]);
        img_width[0] = image_width[0]*image_height[2]/image_height[0]*imgx;
        img_width[1] = image_width[1]*image_height[2]/image_height[1]*imgx;
        img_width[2] = image_width[2]*imgx;
        image_id.forEach(function (v,k){
            $("#ph").append("<img id='"+image_id[k]+"' title='"+image_id[k]+"' width='"+img_width[k].toFixed(2)+"%' onclick='pic_collect("+image_id[k]+")' src='"+image_url[k]+"'>");
        });
    }else if(image_url.length == 1 && flag == 0){
        image_id.forEach(function (v,k){
            $("#ph").append("<img id='"+image_id[k]+"' title='"+image_id[k]+"' width='33%' onclick='pic_collect("+image_id[k]+")' src='"+image_url[k]+"'>");
        });
    }else if(image_url.length == 2 && flag == 0){
        image_id.forEach(function (v,k){
            $("#ph").append("<img id='"+image_id[k]+"' title='"+image_id[k]+"' width='33%' onclick='pic_collect("+image_id[k]+")' src='"+image_url[k]+"'>");
        });
    }
    //清空堆栈图片信息
    image_id.length = 0;
    image_url.length = 0;
    image_width.length = 0;
    image_height.length = 0;
}
//将图片信息压入堆栈
function imgage_info_push(image_ids,image_urls,image_widths,image_heights) {
    image_id.push(image_ids);
    image_url.push(image_urls);
    image_width.push(image_widths);
    image_height.push(image_heights);
}

图片显示2.jpg
收藏列表页面:显示收藏图片
设计思路:取出收藏表中的数据,然后设计下拉显示即可,代码与图集列表展示页面相似,只是表名不同而已。

待我用户组晋级到前途无量时,我会将网站搭建到云服务器上共享给大家测试!
待我用户组晋级到出类拔萃时,我会开源整个网站代码!

上一篇:网站页面设计(一)
下一篇:网站数据爬取篇

免费评分

参与人数 5吾爱币 +10 热心值 +5 收起 理由
威武霸气帅V5 + 1 + 1 希望开源
4125891 + 1 + 1 我是一个没有思想的回复机器人
请输入密码 + 1 + 1 来一份?
huzpsb + 1 最后会开源吗?或者50CB卖吗?
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

戒心 发表于 2020-5-5 14:25
赞一个 完美
大侠在路上 发表于 2020-5-5 14:29
baimaokeji 发表于 2020-5-5 14:33
谢谢楼主 ,大言不惭的提个建议,我非常喜欢网站开发的东西,楼主如果有时间,能开个网页编写视频教程,我一定会关注支持,谢谢楼主
 楼主| 香谢枫林 发表于 2020-5-5 15:17
baimaokeji 发表于 2020-5-5 14:33
谢谢楼主 ,大言不惭的提个建议,我非常喜欢网站开发的东西,楼主如果有时间,能开个网页编写视频教程,我 ...

写代码太耗时间了,而且没有观赏性,实际上写代码时候经常查询各种资料,有时遇到一个问题要大半天才能找到解决办法的
请输入密码 发表于 2020-5-5 15:18
前排,做个记号
THMZ 发表于 2020-5-5 15:23
支持一下,点个赞!
shaunkelly 发表于 2020-5-5 15:38
厉害了哦,不错,妹子很正
qinghg2013 发表于 2020-5-5 16:43
赞一个 完美
17771425895 发表于 2020-5-6 11:48
就佩服你们有思想敢干的人
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 06:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表