美文网首页我爱编程
2018-01-30 HTML5 移动页面自适应手机屏幕四类方

2018-01-30 HTML5 移动页面自适应手机屏幕四类方

作者: 胡諾 | 来源:发表于2018-01-31 08:48 被阅读0次

    第一组:杨昊 HTML5 移动页面自适应手机屏幕四类方法

    1、使用meta标签:viewport

    H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。

    viewport 是用户网页的可视区域。翻译为中文可以叫做"视区"。

    手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。

    viewport标签极其属性:

    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
    

    每个属性的详细介绍:

    属性名 取值 描述
    width 正整数 或 device-width 定义视口的宽度,单位为像素
    height 正整数 或 device-height 定义视口的高度,单位为像素,一般不用
    initial-scale [0.0-10.0] 定义初始缩放值
    minimum-scale [0.0-10.0] 定义缩小最小比例,它必须小于或等于maximum-scale设置
    maximum-scale [0.0-10.0] 定义放大最大比例,它必须大于或等于minimum-scale设置
    user-scalable yes/no 定义是否允许用户手动缩放页面,默认值yes
    2、使用css3单位rem

    rem是CSS3新增的一个相对单位(root em,根em),使用rem为元素设定字体大小时,是相对大小,但相对的只是HTML根元素。通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

    目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子:

    p {font-size:14px; font-size:.875rem;}
    

    默认html的font-size是16px,即1rem=16px,如果某div宽度为32px你可以设为2rem。

    通常情况下,为了便于计算数值则使用62.5%,即默认的10px作为基数。当然这个基数可以为任何数值,视具体情况而定。设置方法如下:

    Html{font-size:62.5%(10/16*100%)}
    

    具体不同屏幕下的规则定义,即基数的定义方式:可以通过CSS定义,不同宽度范围里定义不同的基数值,当然也可以通过js一次定义方法如下:

    <script type="text/javascript">
       (function (doc, win) {
          var docEl = doc.documentElement,
            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
            recalc = function () {
              var clientWidth = docEl.clientWidth;
              if (!clientWidth) return;
              docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
            };
          if (!doc.addEventListener) return;
          win.addEventListener(resizeEvt, recalc, false);
          doc.addEventListener('DOMContentLoaded', recalc, false);
        })(document, window);
    </script>
    
    3、使用媒体查询

    媒体查询也是css3的方法,我们要解决的问题是适应手机屏幕,这个媒体查询正是为解决这个问题而生。
    媒体查询的功能就是为不同的媒体设置不同的css样式,这里的“媒体”包括页面尺寸,设备屏幕尺寸等。

    例如:如果浏览器窗口小于 500px, 背景将变为浅蓝色:

    @media only screen and (max-width: 500px) {
        body {
            background-color: lightblue;
        }
    }
    
    4、使用百分比

    百分比指的是父元素,所有百分比都是这样的。子元素宽度50%,那么父元素的宽度就是100%;

    所以body默认宽度是屏幕宽度(PC中指的是浏览器宽度)子孙元素按百分比定位(或指定尺寸)就可以了,这只适合布局简单的页面,复杂的页面实现很困难。

    转载自:http://www.cnblogs.com/wenzheshen/
    http://zypj01.b2b.qieta.com/


    第二组:冯佳丽 关于bootstrap datetimepicker的用法以及小箭头消失的问题

    ——转载
    首先,抛出问题,日历可以正常使用,就是左右箭头包括禁止填写的图标都不能显示(功能存在),如图:


    于是就各种百度各种寻求解决办法,大海中捞到一条很重要的信息:

    需要在input框中class类form-control 原因如下:

    如果没有加form-control这个类就会造成读的是版本2,也就是这个图标是icon-arrow-left这个类(bs版本2才有的),加了它这个图标是glyphicon-arrow-left这个类,此类版本三才有!

    解读一下就是说:在对应的input框中class中假日form-control这个类

    [html] view plain copy 
    1.  <input type="text" class="time-input form-control" id="startTime" placeholder="起始日期" name="begin_time" readonly class="form_datetime">  
    

    然后来看神奇的效果:


    其实这个插件真的很好用,现在来总结一下用法:

    1,官网下载压缩包 http://www.bootcss.com/p/bootstrap-datetimepicker/index.htm
    2, 在css和js包中将非min文件加载到页面中去。
    3,写好html界面,代码如上所示(记得class中加入form-control)
    4,最重要的一步(实现效果):在页面后面用jquery实现效果:

    [javascript] view plain copy 
    1.  <script type="text/javascript">  
    2.    $('#startTime').datetimepicker({  
    3.      format: 'yyyy-mm-dd  hh:00',//定义时间格式  
    4.      autoclose: true,//选择好自动关闭  
    5.      minView: 1,//只选择到小时  
    6.      language: 'zh-CN', //汉化   
    7.    });  
    8.  </script>  
    

    总结了一下minView几个数字的意思:

    等于0时,表示显示时,分;1表示显示时;2表示显示日;3表示显示到月。


    第三组: 好书推荐

    梵高传 : 对生活的渴求

    "罗素认为一切伟大的生活皆有无趣的片段组成。叔本华认为痛苦是一种常识,将痛苦视为人生永恒的主题。梵高则实实在在地告诉了我们:伟大的来源,一个是对爱的渴求,一个是对痛苦的体验。因为他告诉我们:艺术即生活,正如书的副标题所书:lust for life."

    留传世间的《向日葵》和《星夜》是怎么诞生的?真的是他亲手结束了热烈的一生吗?依托梵高博物馆档案和学术研究,取材自数千封书信和海量文献,《梵高传》收录了近200幅代表画作及照片,珍贵图片首次发表;20余位梵高研究专家参与幕后创作,评注超28000条,打印稿逾5000页;首创特别软件解析10万张数码卡片,数字技术引领传记写作和艺术史研究,更加真实可靠;开设持续更新的全面支持网站,深度整合参考文献、文本注释、画作和照片。

    这是一幅关于梵高的巨细靡遗、令人心碎的肖像画。两位作者以精致的细节、畅达的文字为我们描绘出梵高充满英雄主义的传奇一生。与阿姆斯特丹梵高博物馆的倾力合作下,以往从未触碰过的素材浮出水面,让我们更加接近这位伟大而又神秘的艺术家:早年渴望在世界立足;与弟弟提奥激烈的情感拉扯;来到普罗旺斯后,绘出西方艺术中备受珍爱的画作……梵高的内心世界也展现出异样的光芒:爱情生活的迷乱与癫狂;轮番上阵的抑郁症与心理病痛;三十七岁死亡时的重重疑云……

    上帝怜惜天才,才让梵高有了提奥。没有提奥,没有梵高。


    第四组:李俊 dev gridview的单元格取值,取列名,赋值

    1、不指定具体列名,动态取焦点所在单元格的字段值

    gridView1.FocusedValue;
    gridView1.GetFocusedValue();
    gridView1.GetFocusedRowCellValue(gridView1.FocusedColumn);
    gridView1.GetFocusedRowCellValue(gridView1.FocusedColumn.FieldName);
    如按钮1名称取 焦点所在单元格的字段值
    simpleButton1.Text = gridView1.GetFocusedRowCellValue(gridView1.FocusedColumn.FieldName).ToString();

    2、不指定具体列名,动态取焦点所在单元格的列名

    gridView1.FocusedColumn.FieldName
    如按钮1名称取 焦点所在单元格的列名
    simpleButton1.Text = gridView1.FocusedColumn.FieldName.ToString();

    3、单元格赋值
    一种不能在单元格值变动的事件中写,否则陷入死循环
        int zj = Convert.ToInt32(tdQty / kunzs / zzl);
        decimal sj = tdQty % (kunzs * zzl);
        decimal kunZl = kunzs * zzl;
        this.gridView1.SetRowCellValue(handle, gridView1.Columns["整件"], zj.ToString());
        this.gridView1.SetRowCellValue(handle, gridView1.Columns["散件"], sj.ToString());
        this.gridView1.SetRowCellValue(handle, gridView1.Columns["kunZl"], kunZl.ToString());            
    
    一种可以在单元格变动的事件中写
        int zj = Convert.ToInt32(tdQty / kunzs / zzl);
        decimal sj = tdQty % (kunzs * zzl);
        decimal kunZl = kunzs * zzl;
          this.gridView1.GetDataRow(handle)["整件"] = zj.ToString();
          this.gridView1.GetDataRow(handle)["散件"] = zj.ToString();
          this.gridView1.GetDataRow(handle)["kunZl"] = zj.ToString();
    

    第五组:周倩宇 AngularJS文件上传

    ed-uploader使用了angular-file-upload来进行上传。

    一 使用方法:
    <div ed-uploader class="ng-uploader list" ng-model="files" data-options="accept: 'image/*', multiple: true" ed-upload-dir="自定义目录"></div>
    

    ed-uploader:定义文件上传指令,文件会上传到服务器配置文件中project.nginxControl所指定的目录下。

    通过data-options设置的属性:
    multiple:单选还是多选,默认false单选。单选时ng-model绑定的值为一个json,多选时为array
    accept:允许上传文件类型,默认为*,用法同input file
    ed-upload-dir:指定attachment.path下特定的目录,上面实例会保存在attachment.path下“自定义目录”目录下

    json格式为:

    {
        author: "admin"
        name: "安全规范V1.2.docx"
        size: "2823324"
        time: "2016-01-29 17:29:29"
        type: "docx"
        path: "文件保存路径,不包含文件统一的文件夹,数据库应该保存这个路径"
        url: "文件下载完整路径"
    }
    

    多选情况下,通过class='list'来控制多选时显示文件列表,单选和不加list则不显示文件列表(自己通过{{}}方式来绑定)。如图:


    如需上传导入,则可以监听绑定scope.watch的值来再次提交导入。

    相关文章

      网友评论

        本文标题:2018-01-30 HTML5 移动页面自适应手机屏幕四类方

        本文链接:https://www.haomeiwen.com/subject/jmxkzxtx.html