分类目录归档:Web 开发

CityWeather小程序问答

城市天气 CityWeather,一个简约风格的世界主要城市的天气查询小程序,是微信讨论组中分享天气的极佳途径,下面来看看这款小程序的开发过程吧~

城市天气 CityWeather 是我开始学习微信小程序开发的第一款 Mini Program,选择从一个简单的天气小程序入手。你也可以从 Udacity 上学习次小程序:点击查看

天气程序需要什么样的功能?

市面上的天气应用或小程序很多很多,但随着应用/小程序不断更新,这些天气应用变得就比较臃肿了,比如一些天气应用/小程序还添加了广告、应用推荐、打赏、账号登录等七七八八但功能,完全脱离了应用/小程序本身。一个好的应用/小程序,就应该在它该出现的时候出现,不需要的时候就不出现。

城市天气 CityWeather 就是这么一款简单的天气小程序,专注于天气本身,一款插画风格的可爱天气小程序,给你每个季节、每个天气应有的“温度”。开发者 Mickey Wu

社么样的天气显示最直观呢?

整体UI设计,当然是插画风格啦!简约、可爱的天气插画背景,让你直接看图片就能直观的看到当天的天气。

因为天气情况很多,最基础的天气就是譬如 多云小雨中雪 等常规天气,还有 微风和风大风 等刮风天气,当然还有一些极端天气 沙尘暴浮沉,甚至是代号为999的,只有会在世界末日中才会出现的 未知天气。目前的部分天气素材来自于Udacity以及网络。

小程序如何内容布局?

第一页UI采用上下两栏设计,上部将近60%的区域用来显示当前天气以及最具特色的天气背景插画;第二页UI采用列表样式布局,显示未来7天天气预报。

当然,未来可能会在增加一个页面用来显示当前天气的风速日出日落时间空气质量紫外线强度等内容。

如何设计好的图标?

应用/小程序 的图标可谓第一脸面,用户最先看到的必然是小图标,所以一个好的图标对于应用/小程序的推广有着举足轻重的作用。如何在众多天气应用/小程序图标中脱颖而出?

当然是在明确主题的同时,美观、简约、有特点,这样能让人第一眼留有印象。

小程序开发

这一步骤是坑最多的,尤其是微信小程序开发工具的bug也非常多,经常代码是正常的,但是模拟器卡死或没有应用的效果,macOS原生中文输入法有时也会出问题,输不进入字符等一系列问题。

我也非常建议学习小程序开发的你,去Udacity上跟着一起制作:开始学习

还有一些历史问题,一些淘汰的函数和接口也得自己排查,比如跳转页面的 wx.openSetting 接口:

 

小程序推广与分享

城市天气 Weather City 的官方页面:点击进入

城市天气 Weather City Github 项目:点击进入

更新日志

v1.1.1版增加小程序分享功能?

更新分享功能,并且直接点击进入即可查看天气,查看完后可以直接关闭,就跟查看聊天图片一样简单,用时打开,不用时则静静的推出,增加城市天气在群聊中的互动性。

未来也会重新绘制天气背景,增加一个当日详细信息页面,用于查看 空气质量、风速、紫外线强度、日出日落时间等;再或者,加入一个夜间模式也说不定哦,白天打开时显示白天的天气插画,夜晚打开时夜晚的天气插画,当然这都是未来需要做的事情啦。

 

继续阅读CityWeather小程序问答

PHP基于Linux服务器的随机选择

和朋友们一起聚会、参加活动,有时候想制作一个小小的抽奖程序来分法纪念品?不知道午饭或晚餐吃什么?你需要一个随机选择工具,来帮助解决你的困难选择症 🙂

展示效果:Demogithub_link

为了基于Linux服务器实现可以实时调取摄像头并上传照片的效果,编写时采用了PHP嵌套HTML的方法,在HTML主页面框架的先前插入了以下的PHP代码:

<?php
 $dir = "images/";
 $img = "";
 if (is_dir($dir)){
     if ($dh = opendir($dir)){
         while (($file = readdir($dh))!= false){
         if( $file<>'' && strlen($file)>2 ){
             $img .= '"'.$file.'",';
                                            }
                                                }
                             }
  $img = substr($img, 0, ( strlen($img)-1));
                  }
?>

一、基于Linux服务器的实时采集图片

你可以访问演示Demo页面的下一个目录  /camera/index.php 来启用摄像头的功能。

二、JavaScript实现随机选择

原理上是使用了JavaScript来实现对 /images 目录下的所有照片参与随机的选择:

$(function(){
  
  var alldata = new Array(<?php echo $img;?>);
  var num = alldata.length - 1;
  var show = $("#show");
  var btn = $("#btn");
  var open = false;
 
  function change(){
   var randomVal = Math.round(Math.random() * num);
   var prizeName = alldata[randomVal];
   show.html("<img src='images/"+prizeName+"' />");
  }
  
  function run(){
   if(!open){
    timer=setInterval(change,50);
    btn.removeClass('start').addClass('stop').text('Stop');
    open = true;
   }else{
    clearInterval(timer);
    btn.removeClass('stop').addClass('start').text('Start');
    open = false;
   }
  }
  
  btn.click(function(){run();})
  
 })

以上代码中用深绿色标注出来的就是timer计时器,用这段代码来控制变换的速度;用红色标注出来的就是选择目录。

random-selection-page 继续阅读PHP基于Linux服务器的随机选择

使用视频做网页背景

使用简短的视频来替换以往的静态图片,可以使信息展现的更为丰富,也能给人们留下比较深刻的印象。

展示效果:Demogithub_link

 

注意考虑因素:
1) 视频应该设置为autoplay,但默认情况下应设为静音,或者不应该包括声音2) 视频应该显示是回落至浏览器不支持 HTML5 的静态背景图像的图像占位符。占位符图像也将在移动设备上使用背景,因为大多数的手机和平板电脑都不支持autoplay。Apple也在 WWDC17上 禁用了autoplay 属性。

3) 长度需要注意:太短视频能感觉到重复(像大多数这类的视频将设置为循环播放),时间太长而成为叙事归本身,因此值得要一个单独的设计元素。建议大约12-30秒的时长。

4) 可访问性是很重要:在视频上放置任何文本应在高对比度。用户应当能够轻松访问到 UI 控件以暂停视频;理想情况下,视频播放所要经过只有一次。 

5) 带宽是一个大问题视频需要较小,而且尽可能有效地压缩。同时,它需要在不同的设备和他们相关的屏幕之间进行缩放。尽量保持视频大小小于 5 MB,理想情况下500KB左右为佳。 

一、使用HTML5代码插入视频

<video autoplay loop poster="images/moon.jpg" id="moon"> 
<!--id保持一致-->
<source src="images/moon.webm" type="video/webm">
<source src="images/moon.mp4" type="video/mp4"> </video>

 二、全屏视频代码,引入CSS中

video#moon { /*id保持一致*/
    position: fixed;
    top: 50%;
    left: 50%;
    min-width: 100%;
    min-height: 100%;
    width: auto;
    height: auto;
    z-index: -100;
    -ms-transform: translateX(-50%) translateY(-50%);
    -moz-transform: translateX(-50%) translateY(-50%);
    -webkit-transform: translateX(-50%) translateY(-50%);
    transform: translateX(-50%) translateY(-50%);
    background: url(polina.jpg) no-repeat;
    background-size: cover; 
}

注意:

对于不支持 HTML5 的浏览器,使用判断:

<!--[if lt IE 9]> 
<script> 
     document.createElement('video'); 
</script>
<![endif]-->

 之后还需将 video 标签插入到CSS中,来声明 video 是元素:

video { display: block; }

三、对于移动端的优化

特别是 iOS系统的设备,会拒绝HTML5视频的播放,需要用图片缩放来处理

将以下代码插入至CSS:

@media screen and (max-device-width: 800px) {
    html {
         background: url(moon.jpg) #000 no-repeat center center fixed;
    }
    #bgvid {
        display: none;
    }
}

这样就完成视频做网页背景的任务了!

继续阅读使用视频做网页背景