zoukankan      html  css  js  c++  java
  • 2015.3.10(自适应屏幕和弹性布局)

         今天做的练习是自适应屏幕大小,遇到了一些困难,困难在于我以前用CSS布局的时候都是使用PX作为单位来进行定位布局。

    但今天把网页拓展实验到了我家的电视(42寸)上,此时就出现了问题,问题之一就是:没有办法填充满屏幕,只能出现一个屏中屏,看起来非常的别扭。

    试验了纯CSS来做到自适应屏幕和用JS获取屏幕大小然后计算比例填写在CSS中两种方法均不是很满意,问题直到现在也没有解决,在问题解决之前先把这个问题解决过程记录下来。

    html部分的代码是这样的

    CSS部分的代码是这样的:

    body
    {
    font-size: 100%;
    overflow: -Scroll;
    overflow-y: hidden;
    100%;
    }
    html, body
    {
    height: 100%;
    margin: 0em;
    padding: 0em;
    }
    #main
    {
    position: absolute;
    100%;
    font-size: 1.5em;
    }
    #main img
    {
    position: relative;
    padding: 0;
    99.7%;
    margin: 0 auto;
    height: 90px;
    }
    #content
    {
    99.7%;
    height: 30%;
    margin-top: 0.5em;
    border-style: inset;
    position: relative;
    }
    #lbox
    {
    17em;
    height: 17em;
    background-color: #CCCCCC;
    border-radius: 1em;
    position: relative;
    margin-left: 9em;
    margin-top: 3em;
    margin-right: 4em;
    }
    #rbox
    {
    20em;
    height: 20em;
    background-color: #CCCCCC;
    border-radius: 1em;
    position: relative;
    margin-top: 1em;
    margin-left: 3em;
    top: -20em;
    left: 25em;
    }
    .b1
    {
    position: relative;
    margin-left: 2em;
    font-weight: bolder;
    font-family: "黑体";
    }
    #select1
    {
    position: relative;
    left: 9em;
    top: -2.6em;
    font-size: 0.7em;
    }
    .p1
    {
    font-size: 0.8em;
    position: relative;
    margin-left: 3em;
    }

    效果如图:

        【在一个CSS选择器被写入时,浏览器就有了一个“16px”大小的默认字体。此时我们Web页面中的<body>就继承了这个“font-size:16px;”,除非你在CSS样式中显式的设置<body>的“font-size”值,来改变其继承的值。这样一来,“1em = 16px”、“0.5em = 8px”、“10em = 160px”等等,那么我们也可以使用“em”来指定任何元素的大小。】 (查了一下chrome的最小字体是12px)   我的目的是制作一个全屏的页面,可以自适应所有屏幕。竖滚动条用overflow: -Scroll;overflow-y: hidden;横滚动条也可以强制隐藏。

      现在的代码是在42寸屏幕上宽度可以自适应,高度还有一些问题,这也从侧面反映了CSS布局会受到很多因素的影响.

      还看到网上有一个解决办法是先判断屏幕属于哪一种尺寸(这里它把很多种情况罗列出来)然后用js选择一种情况然后执行相应的尺寸。感觉这个方法不太完美。

      目前想法是,通过js获取浏览器的可视大小然后定义一个基准的font-size;然后其他的元素通过计算公式用em来配合这个font-size。

      【解决办法】

        以我的笔记本屏幕大小(1366*627)为标准,然后计算出其他屏幕跟我的屏幕大小的比例。用这个比例去乘以16px设置每一个body的font-size做为标准。后续的所有CSS都可以用em来实现自适应的问题。核心代码如下:

          $(function () {

                             var ClientWidth = $(window).outerWidth();
                            var ClientHeight = $(window).outerHeight();
                            var ScaleWidth = parseInt(ClientWidth, 10) / 1366;
                            var ScaleHeight = parseInt(ClientHeight, 10) / 627;
                           var newFontSize = 16 * ScaleWidth + "px";
                          $(document.body).css("fontSize", newFontSize);
        });

        

  • 相关阅读:
    ROM、RAM、DRAM、SRAM和FLASH的区别
    寄存器读写为什么需要用位操作符
    不同变量存放在什么地方
    C语言中数据类型对变量的作用
    内存寻址、对齐,变量左值和右值
    位、字节、半字、字、内存位宽
    面试题10- II. 青蛙跳台阶问题
    509. 斐波那契数
    面试题10- I. 斐波那契数列
    面试题32
  • 原文地址:https://www.cnblogs.com/shijia-dreamhome/p/4328665.html
Copyright © 2011-2022 走看看