GBin1教程:使用jQuery Mobile快速开发一个手机阅读网站

日期:2011/10/25      来源:GBin1.com

jQuery mobile已经慢慢进入了web开发人员的视野,随着jQuery mobile框架的发展,使用jQuery mobile开发手机端应用将会成为一个趋势,今天GBin1带给大家一个入门级的jQuery mobile开发,将讲解如何使用jQuery快速生成一个手机端的网站,你不需要写任何一行JS代码。

GBin1教程:使用jQuery Mobile快速开发一个手机阅读网站

 

在线演示

 

手机版页面效果如下:

GBin1教程:使用jQuery Mobile快速开发一个手机网站

HTML代码

<html> 
<head>
<title>GBin1中文互联</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b3/jquery.mobile-1.0b3.min.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0b3/jquery.mobile-1.0b3.min.js"></script>
</head>
<body>
...
</body>
</html>

以上代码定义了jQuery Mobile需要倒入的类库。

这个例子我们将只使用一个jQuery Mobile页面来显示所有的网站内容。 页面定义如下:

    <div data-role="page"  data-theme="a"> 
        <div data-role="header">
               <h1>GBin1中文互联</h1>
                <div data-role="navbar" data-theme="b">
                <ul>
                    <li><a href="m.jsp?root=/" class="ui-btn-active" data-icon="grid">全部</a></li>
                    <li><a href="m.jsp?root=/technology" class="ui-btn-active" data-icon="search">互联开发</a></li>
                    <li><a href="m.jsp?root=/internet" class="ui-btn-active" data-icon="search">互联动态</a></li>
                    <li><a href="m.jsp?root=/tools" class="ui-btn-active" data-icon="search">软件工具</a></li>
                </ul>
            </div><!-- /navbar -->
        </div>
        <div data-role="content">
            <div data-role="collapsible-set" data-theme="g">           
            <div data-role="collapsible">
                <h3>
                    GBin1教程:使用jQuery Mobile快速开发一个手机网站
                </h3>
                <p>
                    jQuery mobile已经慢慢进入了web开发人员的视野,随着jQuery mobile框架的发展,使用jQuery mobile开发手机端应用将会成为一个趋势,今天GBin1带给大家一个入门级的jQuery mobile开发,将讲解如何使用jQuery快速生成一个手机端的网站,你不需要写任何一行JS代码。
                    <a rel="external" href="http://www.gbin1.com/technology/jquerymobile/20111025quickdevelopeamobilerappswithjquerymobile/">
                    更多内容
                    </a>
                </p>
            </div>
            <div data-role="collapsible">
                <h3>
                    GBin1推荐:分享2011年8个最新的jQuery Mobile在线教程
                </h3>
                <p>
                   jQuery Mobile目前已经发布了RC1, 随着类库的完善,jQueryMobile必将成为移动端开发的利器之一,今天我们收集了2011年最新的8个jQuery移动开发教程,包含最简单的入门介绍,到高级的开发应用案例,希望大家喜欢!
                    <a rel="external" href="http://www.gbin1.com/technology/jquerymobile/20111018best8jquerymobiletutorialfor2011/index.html">
                    更多内容
                    </a>
                </p>
            </div>
            </div>
        </div>
        <div data-role="footer">
            <p>&nbsp; &copy; Copywrite 2011 gbin1.com</p>
        </div>
    </div>

以上代码定义了一个页面中的头导航,中间内容,及其页脚内容。

在jQuery Mobile中,定义一个单独手机页面使用如下CSS定义:

<div data-role="page"  data-theme="a">

这行代码中定义了数据角色为页面,数据使用的主题为a,在目前版本的jQuery中,框架自己提供了5种缺省的主题,分别使用不同颜色,如下:

GBin1教程:使用jQuery Mobile快速开发一个手机网站

如果你不指定theme,那么缺省会使用“c”主题。 接下来定义了一个导航条,同样可以定义主题,注意导航条可以定义在页首也可以定义在页脚,我们这个例子中定义在页首,如下:

        <div data-role="header">
               <h1>GBin1中文互联</h1>
                <div data-role="navbar" data-theme="b">
                <ul>
                    <li><a href="m.jsp?root=/" class="ui-btn-active" data-icon="grid">全部</a></li>
                    <li><a href="m.jsp?root=/technology" class="ui-btn-active" data-icon="search">互联开发</a></li>
                    <li><a href="m.jsp?root=/internet" class="ui-btn-active" data-icon="search">互联动态</a></li>
                    <li><a href="m.jsp?root=/tools" class="ui-btn-active" data-icon="search">软件工具</a></li>
                </ul>
            </div><!-- /navbar -->
        </div>

导航条定义后,我们将定义具体显示内容,这里我们使用内容格式中的collapsible-set组件,它会给标题生成一个隐藏内容,点击将显示文章说明,及其具体链接地址,如下:

        <div data-role="content">
            <div data-role="collapsible-set" data-theme="g">           
            <div data-role="collapsible">
                <h3>
                    GBin1教程:使用jQuery Mobile快速开发一个手机网站
                </h3>
                <p>
                    jQuery mobile已经慢慢进入了web开发人员的视野,随着jQuery mobile框架的发展,使用jQuery mobile开发手机端应用将会成为一个趋势,今天GBin1带给大家一个入门级的jQuery mobile开发,将讲解如何使用jQuery快速生成一个手机端的网站,你不需要写任何一行JS代码。
                    <a rel="external" href="http://www.gbin1.com/technology/jquerymobile/20111025quickdevelopeamobilerappswithjquerymobile/">
                    更多内容
                    </a>
                </p>
            </div>
更多需要显示的内容 ...
</div>
</div>

以 上代码中,data-role="content"定义了页面内容, data-role="collapsibl-set"定义了一组可扩展单元,而data-role="collapsible"定义了具体的可以扩展的 内容单元,如果大家使用PHP或者其它服务器端语言,可以动态生成以上内容,这里我使用纯HTML生成俩个样例文章。具体的组件使用,请大家参考 jQuery mobile的文档,地址如下:

Content formatting: http://jquerymobile.com/demos/1.0rc2/#/demos/1.0rc2/docs/content/index.html

最后我们定义页角内容,非常简单,如下:

        <div data-role="footer">
            <p>&nbsp; &copy; Copywrite 2011 gbin1.com</p>
        </div>

以上我们没有使用一行js代码,很快的就可以把一个文章类型的网站转换为一个手机阅读的网站,是不是很简单? 当然,我们还可以扩展功能,比如,在手机中显示网站每一个页面的内容。这些我们将再以后的教程之中和大家分享。希望大家喜欢我们的文章。请留言支持我们!

原文来自:GBin1教程:使用jQuery Mobile快速开发一个手机网站

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好,以下是用 C 语言详细重写的代码,并附上注释: ```c #include <stdio.h> #include <stdlib.h> #include "esp_system.h" #include "driver/gpio.h" #include "driver/spi_master.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #define LED_NUM 1 // LED 灯数量 #define LED_BRIGHT 255 // LED 灯亮度 #define LED_R 255 // LED 灯红色通道值 #define LED_G 128 // LED 灯绿色通道值 #define LED_B 63 // LED 灯蓝色通道值 #define SPI_SPEED 2500000 // SPI 传输速率 spi_device_handle_t spi; // 定义 SPI 设备句柄 /** * @brief 将一个字节转换成 8 位二进制字符串 * * @param b 要转换的字节 * @return char* 转换后的二进制字符串 */ char* byte2bin(uint8_t b) { char *str = (char*) malloc(sizeof(char) * 9); // 分配内存空间,存储二进制字符串 for (int i = 7; i >= 0; i--) { // 从高位到低位依次处理 str[7 - i] = ((b >> i) & 1) + '0'; // 将二进制位转换成字符 '0' 或 '1' } str[8] = '\0'; // 字符串结尾添加 '\0' return str; // 返回二进制字符串 } /** * @brief 将 RGB 颜色通道的值转换成一个字节序列 * * @param r 红色通道的值 * @param g 绿色通道的值 * @param b 蓝色通道的值 * @return uint8_t* 转换后的字节序列指针 */ uint8_t* rgb2byte(uint8_t r, uint8_t g, uint8_t b) { uint8_t *rgbdim = (uint8_t*) malloc(sizeof(uint8_t) * 9); // 分配内存空间,存储字节序列 char *rbin = byte2bin(r); // 将红色通道值转换成二进制字符串 char *gbin = byte2bin(g); // 将绿色通道值转换成二进制字符串 char *bbin = byte2bin(b); // 将蓝色通道值转换成二进制字符串 char *str = (char*) malloc(sizeof(char) * 25); // 分配内存空间,存储 24 位二进制字符串 for (int i = 0; i < 8; i++) { // 将三个颜色通道的二进制字符串连接起来,得到 24 位的二进制字符串 str[i] = gbin[i]; str[8 + i] = rbin[i]; str[16 + i] = bbin[i]; } free(rbin); // 释放内存 free(gbin); free(bbin); str[24] = '\0'; // 字符串结尾添加 '\0' for (int i = 0; i < 9; i++) { // 将 24 位二进制字符串转换成 9 位字符串,用于控制 RGB LED 灯 uint8_t val = (str[i * 3] - '0') * 4 + (str[i * 3 + 1] - '0') * 2 + (str[i * 3 + 2] - '0'); rgbdim[i] = val; } free(str); // 释放内存 return rgbdim; // 返回字节序列指针 } void app_main() { esp_err_t ret; // 定义系统错误码 spi_bus_config_t spi_bus_cfg = { // 定义 SPI 总线配置 .miso_io_num = -1, // 不使用 MISO 引脚 .mosi_io_num = 13, // MOSI 引脚为 13 .sclk_io_num = 14, // SCLK 引脚为 14 .quadwp_io_num = -1, // 不使用 QuadWP 引脚 .quadhd_io_num = -1, // 不使用 QuadHD 引脚 .max_transfer_sz = 24, // 最大传输长度为 24 字节 }; spi_device_interface_config_t dev_cfg = { // 定义 SPI 设备配置 .clock_speed_hz = SPI_SPEED, // SPI 传输速率为 2.5 MHz .mode = 0, // SPI 传输模式为模式 0 .spics_io_num = -1, // 不使用 CS 引脚 .queue_size = 1, // 队列长度为 1 }; ret = spi_bus_initialize(HSPI_HOST, &spi_bus_cfg, 1); // 初始化 SPI 总线 ESP_ERROR_CHECK(ret); // 检查错误 ret = spi_bus_add_device(HSPI_HOST, &dev_cfg, &spi); // 添加 SPI 设备 ESP_ERROR_CHECK(ret); // 检查错误 uint8_t *rgbbyte = rgb2byte(LED_R, LED_G, LED_B); // 将 RGB 颜色通道值转换成字节序列 uint8_t *rstbyte = (uint8_t*) malloc(sizeof(uint8_t) * 16); // 分配内存空间,存储重置字节序列 for (int i = 0; i < 16; i++) { // 初始化重置字节序列 rstbyte[i] = 0xff; } uint8_t *outbyte = (uint8_t*) malloc(sizeof(uint8_t) * 24); // 分配内存空间,存储输出字节序列 memcpy(outbyte, rstbyte, 16); // 将重置字节序列复制到输出字节序列前 16 个字节 memcpy(outbyte + 16, rgbbyte, 8); // 将 RGB 字节序列复制到输出字节序列后 8 个字节 while (true) { // 进入无限循环 spi_transaction_t trans = { // 定义 SPI 传输结构体 .length = 24 * 8, // 传输长度为 24 字节 .tx_buffer = outbyte, // 发送缓冲区为输出字节序列 }; ret = spi_device_polling_transmit(spi, &trans); // 发送数据 ESP_ERROR_CHECK(ret); // 检查错误 vTaskDelay(10 / portTICK_PERIOD_MS); // 暂停 10 毫秒 } } ``` 1. 头文件中包含了一些 ESP32 系统的库和驱动程序的头文件。 2. 定义了一些常量,包括 LED 灯数量、LED 灯亮度和 LED 灯 RGB 三个颜色通道的值等。 3. 定义了 byte2bin 函数和 rgb2byte 函数,分别用于将一个字节转换成 8 位二进制字符串和将 RGB 颜色通道的值转换成一个字节序列。 4. 在 main 函数中,先进行了一些初始化操作,包括初始化 SPI 总线、添加 SPI 设备、将 RGB 颜色通道值转换成字节序列等。 5. 进入一个无限循环,在每次循环中通过 spi_device_polling_transmit 函数将数据写入 SPI 总线,从而控制 RGB LED 灯的颜色和亮度。每次写入数据之后,通过 vTaskDelay 函数暂停 10 毫秒,以免太快刷新导致 LED 灯闪烁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值