Day13:vw 和 vh 基本使用

目标:使用 vw 和 less 完成移动端的布局。


一、vw 适配方案

1、vw 和 vh 基本使用

vw 和 vh 是相对单位,相对视口尺寸计算结果。

  • vw:viewport width(1vw = 1/100视口宽度 )
  • vh:lviewport height ( 1vh = 1/100视口高度 )
<head>
  <title>vw 和 vh 基本使用</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    /* vw 和 vh 是相对视口宽高计算结果,可以直接实现移动端适配效果 */
    /* .box {
        width: 50vw;
        height: 30vw;
        background-color: pink;
      } */

    .box {
      width: 20vh;
      height: 50vh;
      background-color: green;
    }
  </style>
</head>

<body>
  <div class="box"></div>
</body>
2、px 转换为 vw 和 vh

vw单位的尺寸 = px 单位数值 / ( 1/100 视口宽度 )

vh单位的尺寸 = px 单数数值 / ( 1/100 视口高度 )

以主流设计稿尺寸(375 * 667)为例子,则:

  • 1vw = xxx px / 3.75
  • 1vh = xxx px / 6.67

举一个简单的例子,帮助大家理解:

  1. index.html 代码
<head>
    <title>px 转换为 vw 和 vh</title>
    <link rel="stylesheet" href="./demo.css">
</head>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
  1. less 代码
.box1 {
  width: (68 / 3.75vw);
  height: (29 / 3.75vw);
  background-color: pink;
}

.box2 {
  width: (68 / 6.67vh);
  height: (29 / 6.67vh);
  background-color: green;
}

// px单位尺寸 / 1/100视口的宽度或高度
  1. css 代码
.box1 {
  width: 18.13333333vw;
  height: 7.73333333vw;
  background-color: pink;
}

.box2 {
  width: 10.19490255vh;
  height: 4.34782609vh;
  background-color: green;
}
3、vw 和 vh 混合使用的问题

vw 和 vh 不混合使用, 一般使用 vw 作为单位尺寸。

比如:375 * 667 的设计稿有一个 100 * 100 的正方形,如果混合使用 width: (100 / 3.75vw),height: (100 / 6.67vh),在 375 * 667 屏幕下是个正方形,如果换成其他像素的手机,就可能不再是正方形了。

所以我们在使用 vw 或 vh 布局时,只使用是一个单位,width: (100 / 3.75vw),height: (100 / 3.75vw)width: (100 / 6.67vh),height: (100 / 6.67vh),这样就能保证在所有屏幕上都是一个正方形。一般我们使用 vw 开发。


二、综合案例-酷我音乐

结合之前所学,使用 vw 完成如下移动端页面布局:

在这里插入图片描述

想要完整代码的,点击这里获取Day13综合案例完整代码。完全免费,仅供学习参考使用。



在这里插入图片描述

乾坤未定,你我皆是黑马


<template> <a-flex vertical="true" style="background-color: white"> <div style="display: flex; align-items: center"> <!-- 新增日期选择范围确定按钮 --> <a-form :model="m_from_data" layout="inline" :disabled="true"> <a-form-item label="项目名称" name="project_name" style="width: 36vw"> <a-input v-model:value="m_from_data.project_name" /> </a-form-item> <a-form-item label="计划时间" name="m_date"> <a-range-picker v-model:value="m_from_data.m_date" style="width: 300px" /> </a-form-item> </a-form> <!-- <a-button type="primary" @click="handleAdd1"> 添加实点 </a-button> <a-button type="primary" @click="handleAdd2"> 添加虚点 </a-button> --> <a-button type="primary" @click="handleDataSave"> 保存 </a-button> <a-button type="primary" @click="highlightCriticalPath" style="margin-left: 8px"> 标记关键路径 </a-button> </div> <div> <div vertical> <Ruler ref="m_ruler" :key="dateRangeKey" :start-date="startDate" :end-date="endDate" color="#f8f9fa" :day-width="dayWidth" :day-step="1" /> <div ref="m_container1" style="width: auto; height: 78vh; overflow: hidden auto"> <div ref="m_container" class="x6-container" style="width: 100vw; height: 63vh"> <div ref="graphContainer" class="x6-graph"></div> <!-- 添加编辑框 --> <a-modal v-model:visible="showEditor" title="任务信息" @ok="handleConfirm" @cancel="handleCancel" @keydown.enter="handleConfirm" :width="400" > <a-form layout="vertical"> <a-form-item label="任务名称" required> <a-input ref="nameInput" v-model:value="formData.taskName" placeholder="请输入任务名称" autoFocus @keydown.enter.
最新发布
04-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值