zoukankan      html  css  js  c++  java
  • 前端小知识(5)--响应式页面实现

    响应式页面实现

    注意:不考虑IE8以下的浏览器。

    设置 Meta 标签

    大多数移动浏览器将html页面放大为宽的视图(viewport)以符合屏幕分辨率。你可以使用视图的meta标签来进行重置。下面的视图标签告诉浏览器,使用设备的宽度作为视图宽度并禁止初始的缩放。当年,iPhone出现的时候,因为大多数网站没有移动端的解决方案,移动端会自动缩放页面,设置viewpoint就是告诉设备,该网页支持响应式,无需缩放网页。

    width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)
    height:和 width 相对应,指定高度,基本上不会用到
    initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例
    maximum-scale:允许用户缩放到的最大比例,可以为小数
    minimum-scale:允许用户缩放到的最小比例,可以为小数
    user-scalable:用户是否可以手动缩放,值为”no”或”yes”,no 代表不允许,yes代表允许

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

    通过媒介查询来设置样式

    @media

    @media mediatype and|not|only (media feature) {
        CSS-Code;
    }
    

    mediatype的具体值可以参考 w3c

    例如:

    /** iPad **/
    @media only screen and (min- 768px) and (max- 1024px) {}
    /** iPhone **/
    @media only screen and (min- 320px) and (max- 767px) {}
    

    字体

    如果将字体大小设置为固定px的话,那么显然无法兼容PC端和移动端,建议使用相对字体大小。

    解决方案

    在html中设置字体大小,然后其余地方全部采用rem,在适应不同像素屏幕的时候,修改html中的font-size就可以了。可以参看demo中的代码。当然,IE8以下不兼容rem。

    Demo

    <!DOCTYPE html>
    <html lang="en" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>自适应列表</title>
        <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/5.13.0/css/all.css" rel="stylesheet">
        <style>
          * {
            padding: 0;
            margin: 0;
            font-family: 'montserrat', sans-serif;
            background: #333;
            color: #ddd;
            box-sizing: border-box;
          }
          html {
            font-size: 10px;
          }
          body {
            min- 250px;
          }
          h1 {
            text-align: center;
            margin-top: 40px;
            font-size: 3.6rem;
          }
          .content{
            display: flex;
             100%;
            flex-wrap: wrap;
            justify-content: left;
            padding: 30px 40px;
          }
          .item{
            max- 25%;
            padding: 10px;
            text-align: center;
            color: #ddd;
          }
          .item-icon{
            display: inline-block;
             70px;
            height: 70px;
            border: 3px solid #82ccdd;
            color: #82ccdd;
            transform: rotate(45deg);
            margin-bottom: 30px;
            margin-top: 16px;
            transition: 0.3s linear;
          }
          .item:hover .item-icon{
            background: #82ccdd;
            color: #ddd;
          }
          .item-icon i {
            line-height: 6rem;
            transform: rotate(-45deg);
            font-size: 2.6rem;
            background: none;
          }
          .item-text{
            font-size: 1.6rem;
            overflow: hidden;
            display: -webkit-box;
            -webkit-line-clamp: 4;
            -webkit-box-orient: vertical;
            text-align: left;
          }
          @media only screen and (min- 768px) and (max- 1024px) {
            .item{
              max- 33.3%;
            }
          }
          @media only screen and (min- 500px) and (max- 767px) {
            .item{
              max- 50%;
            }
            html {
              font-size: 9px;
            }
          }
          @media only screen and (max- 499px) {
            .item{
              max- 100%;
            }
            html {
              font-size: 8px;
            }
          }
        </style>
      </head>
      <body>
        <h1>自适应布局</h1>
        <div class="content">
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-dolly-flatbed"></i>
            </div>
            <div class="item-text">
              唱彻《阳关》泪未干,功名馀事且加餐。浮天水送无穷树,带雨云埋一半山。
              今古恨,几千般,只应离合是悲欢?江头未是风波恶,别有人间行路难!
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-directions"></i>
            </div>
            <div class="item-text">
              少年不识愁滋味,爱上层楼。爱上层楼,为赋新词强说愁。
              而今识尽愁滋味,欲说还休。欲说还休,却道“天凉好个秋”!
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-location-arrow"></i>
            </div>
            <div class="item-text">
              何处望神州?满眼风光北固楼。千古兴亡多少事?悠悠。不尽长江滚滚流。
              年少万兜鍪,坐断东南战未休。天下英雄谁敌手?曹刘。生子当如孙仲谋。
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-dog"></i>
            </div>
            <div class="item-text">
              一轮秋影转金波,飞镜又重磨。把酒问姮娥:被白发,欺人奈何?
              乘风好去,长空万里,直下看山河。斫去桂婆娑,人道是,清光更多。
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-mail-bulk"></i>
            </div>
            <div class="item-text">
              晚日寒鸦一片愁。柳塘新绿却温柔。若教眼底无离恨,不信人间有白头。
              肠已断,泪难收。相思重上小红楼。情知已被山遮断,频倚阑干不自由。
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-dove"></i>
            </div>
            <div class="item-text">
              醉里且贪欢笑,要愁那得工夫。近来始觉古人书,信著全无是处。
              昨夜松边醉倒,问松我醉何如。只疑松动要来扶,以手推松曰去。
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-archway"></i>
            </div>
            <div class="item-text">
              壮岁旌旗拥万夫,锦襜突骑渡江初。燕兵夜娖银胡䩮,汉箭朝飞金仆姑。
              追往事,叹今吾,春风不染白髭须。却将万字平戎策,换得东家种树书。
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-dumbbell"></i>
            </div>
            <div class="item-text">
              绿树听鹈鴂。更那堪、鹧鸪声住,杜鹃声切。啼到春归无寻处,苦恨芳菲都歇。算未抵、人间离别。马上琵琶关塞黑,更长门、翠辇辞金阙。看燕燕,送归妾。
              将军百战身名裂。向河梁、回头万里,故人长绝。易水萧萧西风冷,满座衣冠似雪。正壮士、悲歌未彻。啼鸟还知如许恨,料不啼清泪长啼血。谁共我,醉明月。
            </div>
          </div>
          <div class="item">
            <div class="item-icon">
              <i class="fa fa-swimmer"></i>
            </div>
            <div class="item-text">
              绕床饥鼠,蝙蝠翻灯舞。屋上松风吹急雨,破纸窗间自语。
              平生塞北江南,归来华发苍颜。布被秋宵梦觉,眼前万里江山。
            </div>
          </div>
        </div>
      </body>
    </html>
    
    

    一个响应式的数据面板demo https://nju_clc.gitee.io/big-data-integration-and-application/#/

    参考:

    1.http://caibaojian.com/356.html

    2.https://www.bilibili.com/video/BV1pb411J7aT

  • 相关阅读:
    npm依赖版本变动引发的惨案
    Flutter ListTile
    操作系统的发展史(科普章节)
    操作系统的发展史(科普章节)
    如何在电脑上保存微信公众号文章封面图片?
    如何在电脑上保存微信公众号文章封面图片?
    操作系统(科普章节)
    操作系统(科普章节)
    前端面试之前要准备的那些事
    前端面试之前要准备的那些事
  • 原文地址:https://www.cnblogs.com/njuclc/p/12968705.html
Copyright © 2011-2022 走看看