zoukankan      html  css  js  c++  java
  • H5页面项目的思路整理

    这是H5项目完成后的一些整理,有些理解不能非常准确,希望大家能帮忙指出。

    移动端的适配


    一些名词解释

    • visual viewport 可视视图
    • layout viewport 布局视图
    • vm 可视视图的宽度,最大为100.类似一个百分比的值
    • vh 可视视图的高度
    • points 独立像素点。抽象的单位,在数学的坐标空间才有意义
    • dpr = 物理像素/独立像素点。
    • display zoom 在苹果设置中显示有 标准和 放大。
    • rendered Pixels = points*dpr
    • physical pixels 物理像素,在display zoom 模式下 设备的分辨率可能会更低。
    • PPI 每英寸上的像素个数。这里的像素是 rendered pixels 逻辑像素。
    • DIPs or dp device independent pixel 设备无关的独立像素,比如css 的px单位

    githubusercontent
    图片来源 githubusercontent

    我们采用的是淘宝的 lib-flexible 方案,该方案的总体思路为模拟vm和vh。

    比如750*1334的设计图 通过插件webpack px2rem(remUnit:75px) 来模拟vm。这样1rem就等于1vm.

    比如代码

    .selector {
         150px;
        height: 64px; /*px*/
        font-size: 28px; /*px*/
        border: 1px solid #ddd; /*no*/
    }
    

    px2rem处理后

    .selector {
         2rem;
        border: 1px solid #ddd;
    }
    [data-dpr="1"] .selector {
        height: 32px;
        font-size: 14px;
    }
    [data-dpr="2"] .selector {
        height: 64px;
        font-size: 28px;
    }
    [data-dpr="3"] .selector {
        height: 96px;
        font-size: 42px;
    }
    

    样式


    • 引用normalize.css
    • 确定变量
    	/*背景色*/
    	$body-bg: #fff;
    	$component-bg:#ddd;
    	
    	/*常用灰色*/
    	$gray-darker: #222;
    	$gray-dark: #333;
    	$gray:#666;
    	$gray-light:#999;
    	$gray-lighter:#ccc;
    	$gray-lightest: #eee;
    	
    	/*主色调*/
    	$brand-primary: #c71628;
    	$brand-xxx:#ddd;//其他的颜色
    	
    	/*行高*/
    	line-height-base: 2; // 行高/字体
    	line-height-large:2.4; //更高
    	
    	/*字体*/
    	$font-size: 28px;
    	$font-size-large: 34px;
    	$font-size-small: 24px;
    	
    	/*... 其他项目涉及的变量*/
    	
    
    • mixins

    因为我平常有搜集一些不错的mixins,比如:

    --buttons
    生成buttons,focus、hover都对应的背景色的改变

    @mixin button-variant($color, $background, $border) {
      color: $color;
      background-color: $background;
      border-color: $border;
    
      &:focus,
      &.focus {
        color: $color;
        background-color: darken($background, 10%);
            border-color: darken($border, 25%);
      }
      &:hover {
        color: $color;
        background-color: darken($background, 10%);
            border-color: darken($border, 12%);
      }
      &:active,
      &.active{
        color: $color;
        background-color: darken($background, 10%);
            border-color: darken($border, 12%);
    
        &:hover,
        &:focus,
        &.focus {
          color: $color;
          background-color: darken($background, 17%);
              border-color: darken($border, 25%);
        }
      }
      &:active,
      &.active{
        background-image: none;
      }
      &.disabled,
      &[disabled],
      fieldset[disabled] & {
        &:hover,
        &:focus,
        &.focus {
          background-color: $background;
              border-color: $border;
        }
      }
    }
    

    --brightness
    通过背景色获取字体颜色

    // Brightness math based on:
    //   http://www.nbdtech.com/Blog/archive/2008/04/27/Calculating-the-Perceived-Brightness-of-a-Color.aspx
    
    $red-magic-number: 241;
    $green-magic-number: 691;
    $blue-magic-number: 68;
    $brightness-divisor: $red-magic-number + $green-magic-number + $blue-magic-number;
    @function sqrt($r) {
      $x0: 1; // initial value
      $solution: false;
    
      @for $i from 1 through 10 {
        @if abs(2 * $x0) < 0,00000000000001 { // Don't want to divide by a number smaller than this
      $solution: false;
      }
    
      $x1: $x0 - ($x0 * $x0 - abs($r)) / (2 * $x0) !global;
    
      @if ( abs($x1 - $x0) / abs($x1)) < 0,0000001 { // 7 digit accuracy is desired
      $solution: true;
      }
    
      $x0: $x1;
      }
    
      @if $solution == true {
        // If $r is negative, then the output will be multiplied with <a href="http://en.wikipedia.org/wiki/Imaginary_number">i = √-1</a>
        // (√xy = √x√y) => √-$r = √-1√$r
        @if $r < 0 {
          @return $x1 #{i};
        }
        @else {
          @return $x1;
        }
      }
      @else {
        @return "No solution";
      }
    }
    @function brightness($color) {
      // Extract color components
      $red-component: red($color);
      $green-component: green($color);
      $blue-component: blue($color);
    
      // Calculate a brightness value in 3d color space between 0 and 255
      $number: sqrt((($red-component * $red-component * $red-magic-number) + ($green-component * $green-component * $green-magic-number) + ($blue-component * $blue-component * $blue-magic-number)) / $brightness-divisor);
    
      // Convert to percentage and return
      @return $number / 255 * 100%;
    }
    
    @function contrasting-color($color, $light, $dark) {
      @if brightness($color) < 65% {
        @return $light;
      } @else {
        @return $dark;
      }
    }
    
    

    等等mixins 方便

    • 写基础的scss 代码
    body{
    	font-size:$font-base;/*px*/ 启动post-css px2rem
    	color: $gray; //基础字体颜色
    	 background: $body-bg;
    }
    /*字体颜色*/
    .gray-darker{
    	color:$gray-darker;
    }
    .gray-dark{
      color: $gray-dark;
    }
    
    .gray{
      color: $gray;
    }
    .gray-light{
      color: $gray-light;
    }
    .gray-lighter{
    	color:$gray-lighter
    }
    
    /*字体*/
    .text-base{
    	font-size:$font-size;
    }
    .text-large{
    	font-size:$font-size-large
    }
    .text-small{
    	font-size:$font-size-small
    }
    /*按钮*/
    
    
    /*helper*/
    .pull-right{
      float: right;
    }
    .pull-left{
      float: left;
    }
    .clearfix{
    	@include clearfix();
    }
    
    

    动画


    //todo 使用心得

    https://daneden.github.io/animate.css/

    animate.css

    手势


    //todo 使用心得

    vue-gesture

    文章引用

  • 相关阅读:
    强化训练1
    强化训练2
    变量的本质
    抽象层
    安装vs2015
    解决思路
    分析栈的缺点
    (转)使用yuicompressor-maven-plugin压缩js及css文件(二)
    (转)yuicompressor 与 maven结合,打包,压缩js,css (一)
    (转)Properties Editor为你解除通过native2ascii进行Unicode转码的烦恼
  • 原文地址:https://www.cnblogs.com/yoable/p/7568800.html
Copyright © 2011-2022 走看看