让jQuery Tools Scrollable控件在Mobile Web里面支持resize功能

简介:

项目中有两份代码,一份是Main Site,一份是Mobile Site.Main Site里面主页使用到jQuery Tools Scrollable功能,让多张图片循环显示。但是这个功能移植到Mobile Site中,出现了一些问题。

 

因为本身要实现scrollable功能,必须有特定的html结构和css。然后调用scrollable()方法才能实现这个功能。一个基本scrollable实现代码可以参考jQuery Tools的官方文档。参考地址:http://jquerytools.org/demos/scrollable/

.scrollable{
    position:relative;
    overflow:hidden;
    width:660px;
    height:90px;
}

可以看出我们必须设置最后可显示区域 的宽和高。其实这个高度也就是所包含的图片的宽和高。在Mobile Site开发过程中,为了适应手机拥有不同的分辨率和大小尺寸。在开发过程必须对图片的width设置为100%,图片的height不设定。当用户使用 不同的分辨率的手机查看站点时,浏览器自动缩放图片。但是问题就来了,我们要实现scrollabel功能,必须设置可见区域的宽度和高度。

 

所以需要在页面load之后就进行 resize操作。基本解决办法是在调用scrollable()方法之前就进行图片的resize操作。但是这个解决方案有一个很的问题就是如何去判定 当前要显示的三张图片的第一章显示的默认宽高。因为我们将图片的width设置为100%,height需要等浏览器解析完成才能取得。如果本身图片不是 放在应用程序的目录,是从第三方或者云存储平台过来的话,取得图片的height都是为0,所以我们在项目代码中加入1秒的延时,通过延时1秒才去读取浏 览器默认使用width:100%显示的图片的高度。

 

效果如下:

image1

代码如下:  

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Scrollable with resizing for mobile web</title>


    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, width=device-width" />
    <style type="text/css">
        #mainContainer
        {
            margin: 0 auto;
            width: 100%;
            height: 100%;
        }
        #scrollable
        {
            /* required settings */
            position: relative;
            overflow: hidden;
        }
        .scrollable .items
        {
            /* this cannot be too large */
            width: 20000em;
            position: absolute;
        }
        .items div
        {
            float: left;
        }
    </style>
    <!-- jQuery Library + UI Tools -->
    <!--<script type="text/javascript" src="http://cdn.jquerytools.org/1.2.7/jquery.tools.min.js"></script>-->
    <script src="jquery.tools.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="mainContainer">
        <a class="prev browse left"></a>
        <!-- root element for scrollable -->
        <div class="scrollable" id="scrollable">
            <!-- root element for the items -->
            <div class="items">
                <!-- 1-->
                <div>
                    <img id="originalImg" src="http://farm1.static.flickr.com/143/321464099_a7cfcb95cf.jpg"
                        width="100%" />
                </div>
                <!-- 2 -->
                <div>
                    <img src="http://farm1.static.flickr.com/30/37446217_14bc95631a.jpg" width="100%" />
                </div>
                <!-- 3 -->
                <div>
                    <img src="http://farm1.static.flickr.com/200/507751258_5f13e3d802.jpg" width="100%" />
                </div>
            </div>
        </div>
        <!-- "next page" action -->
        <a class="next browse right"></a>
    </div>
    <div>
        Hello World.
    </div>
    <script type="text/javascript">
function widthUpdate() {
            //$("body").width()即取得当前viewport的宽度
            $("#scrollable .items div img").css("width", $("body").width());

            var ModuleHeight = $("#scrollable .items div img").outerHeight();


            if (ModuleHeight != 0) {
                $("#scrollable").css("height", ModuleHeight);
            }
        }
        $(window).resize(function () {
            widthUpdate();
        });
        $(function () {
            setTimeout(function () {
                widthUpdate();
            }, 1000);

            //scrollable for images
            setTimeout(function () {
                $(".scrollable").scrollable({ speed: 400, circular: true }).navigator().autoscroll();
            }, 2000);
        });
    </script>
</body>
</html>

 

不 知道园子里面有人是否遇到过相同的问题。这个bug在本地测试问题好像不大,并且我们使用asp.net页面缓存。所以开发的时候根本发现不了这个问题。 上线之后,用户可能是第一次访问我们的站点,那么我们之前的代码获得图片的高度为0,所以根本不显示图片,但是我们resize浏览器窗口时,图片就显示 正常。本来想通过判断加载第一张图片是否完成的。使用的代码如下,但是依旧解决不了这个问题。不知道大家是否有更好的解决办法。

 

 
目录
相关文章
|
1月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
48 4
|
3月前
HDFS web Interfaces功能解读
HDFS web Interfaces功能解读
|
2月前
|
前端开发 API
(WEB前端编辑DWG)在线CAD如何实现图形识别功能
mxcad 提供的图形识别功能可帮助用户快速识别和提取 CAD 图纸中的各种图形,如直线、多段线、弧线、圆及图块,显著提升设计效率。此功能不仅适用于图形分类,还能进行数量统计和快速定位,减少手动操作。用户可通过 API 进行二次开发,自定义识别逻辑。具体步骤包括打开在线示例、选择识别功能、设置识别参数并开始识别。更多开发文档请关注公众号:梦想云图网页 CAD。
|
1月前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
171 0
|
1月前
|
云安全 SQL 安全
数字时代下的Web应用程序安全:漏洞扫描服务的功能与优势
在当今这个数字化时代,Web应用程序不仅是企业与用户之间互动的桥梁,更是企业展示服务、传递价值的核心平台。然而,随着技术的不断进步,Web应用程序的复杂性也在不断增加,这为恶意攻击者提供了可乘之机。安全漏洞的频发,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等,严重威胁着企业的数据安全、服务稳定性乃至经济利益。在这样的背景下,漏洞扫描服务作为一道重要的安全防线,显得尤为重要。本文将深入探讨漏洞扫描服务在面对Web应用程序安全问题时,所具备的功能优势。
|
1月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
17 0
|
2月前
|
JavaScript 前端开发 UED
jQuery日历控件与假日显示
【9月更文挑战第1天】
|
3月前
|
开发者 Java Spring
JSF 牵手社交登录,如魔法风暴席卷 Web 世界,开启震撼便捷登录之旅!
【8月更文挑战第31天】在互联网时代,便捷登录成为用户的核心需求。社交登录凭借其便捷性、安全性和社交化的特点,在各类Web应用中广泛应用。JavaServer Faces(JSF),作为一款流行的Java Web框架,能够轻松集成社交登录功能,显著提升用户体验。本文详细介绍社交登录的优势,并提供两种JSF集成社交登录的常见方法:一是利用Spring Social等第三方库简化开发;二是自行实现社交登录流程。开发者可根据项目需求选择适合的方案。
43 0
|
3月前
|
开发者 C# UED
如何轻松将WinUI控件引入Web应用?Uno Platform实战攻略——从环境搭建到性能优化,一探究竟!
【8月更文挑战第31天】Uno Platform 通过支持 WebAssembly,将 WinUI 控件无缝带入 Web,为多平台开发提供了新途径。本文介绍如何在 Web 中使用 WinUI 控件,包括环境搭建、控件使用、性能优化、样式调整及测试调优,助力开发者打造高质量跨平台应用。
58 0
|
3月前
|
数据采集 前端开发 开发者
Angular表单控件详解:掌握模板驱动与响应式表单的精髓,让Web应用中的数据采集工作变得高效又简单,彻底告别繁琐的表单处理流程
【8月更文挑战第31天】表单是 Web 应用的关键组件,用于用户登录、注册及信息提交。Angular 作为成熟前端框架,提供了强大的表单处理功能,包括模板驱动与响应式表单。本文通过技术博客形式,详细介绍这两种表单控件,并提供示例代码,展示如何利用它们简化表单处理流程,提高开发效率。首先介绍简单的模板驱动表单,然后讲解基于 RxJS 的响应式表单,适用于复杂逻辑。通过本文,你将学会如何高效地使用 Angular 表单控件,提升应用的用户体验。
42 0

热门文章

最新文章