如何利用vw+rem进行移动端布局

利用vw+rem进行移动端布局,可以实现网页在不同设备上的自适应布局,使得页面在任何尺寸的屏幕上都能够完美展示。下面是利用vw+rem进行移动端布局的详细攻略:

1. 使用视窗单位

视窗单位有两种:vw 和 vh。它们的意思是 viewport width 和 viewport height。1vw 等于视窗宽度的 1%,1vh 等于视窗高度的 1%。在这里我们只考虑 vw,因为使用 vw 可以更好的实现移动端布局。

html {
  font-size: 1vw;
}

通过将 html 的 font-size 设置为 1vw,我们使得 1 个视窗宽度被均分成了 100 个部分。比如,如果我们现在将 html 的 font-size 设置为16px,那么 1vw 就等于 16 * 1% = 0.16px。

2. 将rem作为计算单位

CSS 中的 absolute 单位,比如 px,其大小与设备有关,而 rem 则是相对于根元素 html 的 font-size 而言的。由于 html 的 font-size 已被设置成 1vw,因此我们可以将 rem 作为相对长度单位,从而实现对移动端设备的适配。

/* 设计稿宽度为 750px */
@media screen and (max-width: 750px) {
  html {
    font-size: 50px;
  }
}

在上述代码中,我们将 html 的 font-size 设置成 50px,从而使得 1vw = 0.5rem。接下来,我们可以根据设计稿的宽度,选择适当的 font-size,从而实现对移动设备的布局。

示例一

假设我们的设计稿宽度为 750px,我们可以将 font-size 设置为 50px,这样我们可以将设计稿上的尺寸直接除以 50 得到对应的 rem 值。

/* 设计稿尺寸为 150px * 150px */
/* 在样式表中可以这样写 */
.box {
  width: 3rem;
  height: 3rem;
}

在上述代码中,我们将 .box 的宽度和高度都设置为 3rem,这样就可以完美展示在设计稿的大小中。如果在不同尺寸的设备上,html 的 font-size 发生改变,那么我们所设置的尺寸也会跟着改变。

示例二

在实际应用中,我们通常需要对不同尺寸的设备做出不同的布局,下面是一个简单示例,假设我们要实现一个简单的排版,我们想在 iPad 竖屏时,将一排放 3 个 卡片。而在 iPhone4s 竖屏时,我们想将卡片排序成一列。

/* 设计稿宽度为 750px */
@media screen and (max-width: 750px) {
  html {
    font-size: 50px;
  }
  /* 在 iPhone4s 上将卡片排成一列 */
  @media screen and (max-width: 320px) {
    .card {
      width: 280px;
      margin: 15px auto;
    }
  }
}
/* 在 iPad 上将卡片排成3列 */
@media screen and (min-width: 750px) {
  html {
    font-size: 16px;
  }
  .card {
    width: 30%;
    margin: 15px;
    float: left;
    display: inline-block;
  }
}

在上述代码中,我们首先设置了 iPad 的尺寸,将 font-size 设置成 16px,这样可以使得 1vw = 0.16px = 0.01rem。在设置 .card 的宽度时,我们将其设置成 30%,这样就可以让 3 个卡片在 iPad 上平分一排,并使用 float 和 inline-block 属性实现排列。接下来,在 iPhone4s 的尺寸中,我们将 font-size 再次修改为 50px,从而使得 1vw = 0.5rem。然后,我们可以将 .card 的宽度设置为 280px,从而实现一列排列。此外,为了实现居中排列,我们可以设置 margin 为 auto。

通过以上两个简单示例,我们可以看到,利用 vw+rem 进行移动端布局可以极大的简化页面的开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何利用vw+rem进行移动端布局 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • Javascript jquery css 写的简单进度条控件

    下面我将详细讲解如何使用JavaScript、jQuery和CSS编写一个简单的进度条控件的攻略。 1. 设计进度条界面 首先,我们需要设计进度条的界面,可以使用HTML和CSS来实现。在HTML文件中创建一个 元素,用于表示进度条。例如: <div class="progress-bar"> <div class=&q…

    css 2023年6月10日
    00
  • css 优先级关系

    CSS 优先级关系决定了当多个 CSS 规则同时作用于同一个元素时,哪一条 CSS 规则会被优先应用。具体来说,CSS 优先级关系是根据优先级值进行比较的,优先级值越大的 CSS 规则越具有优先权。下面我将一步步为您介绍 CSS 优先级关系的完整攻略。 一、优先级值的计算规则 优先级值是由选择器中的各个组成部分共同组成的。下面是各个部分的优先级值: 选择器部…

    css 2023年6月10日
    00
  • 手把手教你实现一个canvas智绘画板的方法

    手把手教你实现一个canvas智绘画板的方法 Canvas是HTML5中新增加的绘图标签,可以通过JavaScript脚本动态绘制图形,图形包括线条、路径、矩形、圆形、字符和图片等。本文将手把手教你实现一个canvas智绘画板的方法。 1. 准备工作 在编写代码之前,需要先准备好开发环境。我们需要一个文本编辑器,例如Visual Studio Code,以及…

    css 2023年6月9日
    00
  • 再谈javascript 动态添加样式规则 W3C校检

    当我们使用JavaScript动态地添加样式时,我们有两种方法可以使用:创建一个新Style标签,并在其中添加CSS规则,或者直接在已有的Style标签中添加新规则。 创建新Style标签并添加CSS规则 我们可以通过以下步骤创建新Style标签并添加CSS规则: 创建一个新的Style标签元素。 创建一个包含新规则的CSS规则文本。 将CSS规则文本添加到…

    css 2023年6月10日
    00
  • php提高网站效率的技巧

    当涉及到提高网站效率时,PHP程序员可以采取一些技巧来优化代码,减少响应时间和服务器负载。以下是具体的攻略: 1.使用缓存来减少数据库查询和页面渲染时间 使用缓存可以大大减少服务器负载并显著提高网站效率。针对PHP网站的缓存解决方案有很多。其中最流行的两种是文件缓存和内存缓存。 示例 作为一个例子,我们可以通过缓存数据库查询来加快网站的响应时间,因为对数据库…

    css 2023年6月9日
    00
  • CSS背景图拉伸效果兼容FF/Chrome/IE等主流浏览器(亲测)

    首先我们来讲一下如何用CSS实现背景图的拉伸效果,这个效果可以让背景图随着浏览器窗口大小的变化而自动拉伸,从而达到更好地适应不同设备的效果。具体步骤如下: 首先,需要设置html和body元素的高度为100%。这可以通过以下CSS样式实现: html, body { height: 100%; } 这个设置是为了保证后面的背景图能够充满整个窗口。 接下来,需…

    css 2023年6月9日
    00
  • AngularJS 指令详细介绍

    AngularJS 是一个功能强大的 JavaScript 框架,它提供了大量的指令来扩展 HTML。这些指令可以用于创建自定义标记、重写元素和属性行为,以及组合来构建功能丰富的应用程序。在这篇文章中,我们将全面介绍 AngularJS 指令,涵盖所有类型的指令及其用法,以及如何在应用程序中使用它们。 指令类型 AngularJS 中的指令被分为四种类型。它…

    css 2023年6月9日
    00
  • 从零学CSS系列之文本属性

    接下来我将详细讲解“从零学CSS系列之文本属性”的完整攻略。 一、文本属性介绍 在CSS中,可以通过文本属性来控制文本的样式,包括字体、字号、颜色、粗细、行高等等。下面是直接应用文本属性的列表: font:设置字体,包括字体族、字号、字体粗细、风格等 color:设置字体颜色 text-align:设置文本对齐方式 text-indent:设置段落首行缩进 …

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部