浅谈移动端的自适应布局问题(响应式、rem/em、Js动态)

移动端自适应布局问题是在不同屏幕尺寸的移动设备上保持网页布局始终合适的问题。常见的解决方案包括响应式、rem/em以及Js动态。

响应式布局

响应式布局是指适配不同宽度的屏幕,使用CSS3的媒体查询(Media Query)来给不同尺寸的设备设置不同的样式。通常响应式布局可以分成三份(移动端、平板、PC端)设置不同的CSS样式。

以两列布局为例,代码如下:

<div class="container">
  <div class="col-1">Column 1</div>
  <div class="col-2">Column 2</div>
</div>
.container {
  display: flex;
  flex-wrap: wrap;
}

.col-1 {
  flex: 1;
  padding: 10px;
  background-color: blue;
  color: #fff;
}

.col-2 {
  flex: 1;
  padding: 10px;
  background-color: red;
  color: #fff;
}

@media screen and (max-width: 767px) {
  .col-1, .col-2 {
    width: 100%;
  }
}

在这段代码中,.container设置为flex布局,.col-1和.col-2设置为flex:1,使用flexbox实现两列布局。Media Query设置当屏幕宽度小于767px时,使.col-1和.col-2的宽度变为100%。

rem/em布局

rem和em都是相对长度单位,rem是相对HTML根元素的字体大小,而em是相对于自身父元素的字体大小。这两种相对长度单位可以让开发者根据不同屏幕的尺寸自适应地设置元素的大小。

以一个按钮为例,代码如下:

<button class="btn">Click me</button>
.btn {
  font-size: 1rem;
  padding: 0.5em 1em;
  border: solid 1px #eee;
  background-color: #fff;
  color: #333;
}

@media screen and (max-width: 767px) {
  .btn {
    font-size: 2rem;
  }
}

在这段代码中,.btn的字体大小设置为1rem,这个1rem相对于HTML根元素的字体大小。在Media Query设置中,当屏幕宽度小于767px时,.btn的字体大小变为2rem,即根据屏幕尺寸自适应地调整。

Js动态布局

使用JavaScript动态地设置元素的大小也是一种常用的自适应布局方式。

以设置元素高度为屏幕高度的一半为例,代码如下:

<div class="container">
  <div class="box"></div>
</div>
.container {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
}

.box {
  width: 50%;
  background-color: blue;
}

@media screen and (max-width: 767px) {
  .box {
    width: 100%;
  }
}
var box = document.querySelector('.box');
box.style.height = window.innerHeight / 2 + 'px';

window.addEventListener('resize', function () {
  box.style.height = window.innerHeight / 2 + 'px';
});

在这段代码中,.container设置为100vh高度的flex布局,.box的宽度设置为50%以及蓝色背景。JavaScript动态地设置.box的高度,通过window.innerHeight获取屏幕高度,将.box的高度设置为屏幕高度的一半。同时使用window.addEventListener监听resize事件,当屏幕尺寸发生变化时重新设置.box的高度。

总结

以上是移动端自适应布局的三种常见方式,每一种方式都有其适用的场景,可以根据实际需求选择。同时注意需要考虑不同分辨率的设备以及防止过多的代码导致性能问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈移动端的自适应布局问题(响应式、rem/em、Js动态) - Python技术站

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

相关文章

  • 标记语言——为文字指定CSS样式

    标记语言可以为文字指定CSS样式,这里我们主要讨论的是HTML语言,它是最常用的标记语言之一。通过HTML的标记,可以让浏览器知道如何显示文本和其他元素,同时也可以通过CSS样式来对文本进行格式化。 以下是详细的攻略过程: 步骤一:编写HTML代码 首先,需要编写一个HTML文件来呈现网页内容。在HTML文件中,可以使用标记来指定文本和其他元素的格式化方式。…

    css 2023年6月9日
    00
  • jQuery+CSS3实现四种应用广泛的导航条制作实例详解

    下面给出“jQuery+CSS3实现四种应用广泛的导航条制作实例详解”的完整攻略。 1.前言 导航条是Web页面中非常重要的组成部分,良好的导航条可以让用户更加方便快捷地进行网站浏览。以下攻略介绍了使用jQuery和CSS3制作四种常见的导航条的方法,包括菜单栏、列表导航、圆形导航和响应式导航。 2.实现方法 2.1菜单栏 菜单栏是Web页面中最常见的导航条…

    css 2023年6月10日
    00
  • CSS省略号text-overflow超出溢出显示省略号

    下面我将详细讲解“CSS省略号text-overflow超出溢出显示省略号”的完整攻略。 1. text-overflow的基本概念 text-overflow是CSS的一个属性,它用于控制当溢出的文本超出容器宽度时,如何显示文本,常用的的属性值有 “clip” 和 “ellipsis”。 clip: 溢出的文本会被裁剪,被预设宽度外的部分隐藏; ellip…

    css 2023年6月9日
    00
  • Vue中jsx不完全应用指南小结

    Vue中jsx不完全应用指南小结 什么是JSX? JSX是JavaScript的一种语法扩展,允许我们在JavaScript中编写类似HTML的代码,使得开发者可以使用一种更直观的方式去创建UI。类似于下面的代码: const element = <h1>Hello, world!</h1>; 在Vue的官方文档中提到,Vue可以使用…

    css 2023年6月9日
    00
  • 两种CSS3伪类选择器详细介绍

    我们来详细讲解一下“两种CSS3伪类选择器详细介绍”的攻略。 什么是CSS3伪类选择器? CSS3伪类选择器是选择网页中特殊状态下的元素,比如链接被悬浮时、复选框被选中时等等。使用CSS3伪类选择器可以让我们更加细致地对网页中的元素进行样式的设定。 两种CSS3伪类选择器详细介绍 1. :hover 伪类选择器 :hover是最常用的一种伪类选择器,它表示鼠…

    css 2023年6月9日
    00
  • 怎样用Photoshop设计漂亮的网页页脚模板实例教程

    以下是使用Photoshop设计漂亮的网页页脚模板的完整攻略: 一、准备工作 首先,打开Photoshop软件,创建一个新建文档。在新建文档对话框中设置文件宽度和高度,建议设置为1200像素宽和150像素高(根据需要可以做适当调整),分辨率建议设置为72像素/英寸,背景颜色可以选择透明。创建好文档后,就可以开始设计网页页脚模板了。 二、设计页脚背景 新建一个…

    css 2023年6月11日
    00
  • 详解Android端与JavaWeb传输加密(DES+RSA)

    详解Android端与JavaWeb传输加密(DES+RSA)攻略 前置知识 在学习本文之前,你需要掌握以下知识: Java语言基础 Android开发基础 JavaWeb开发基础 数据加密相关的概念和基础知识 加密方案简介 在本方案中,我们将采用DES和RSA算法分别对数据进行对称加密与非对称加密,保证通信过程的安全性。具体实现过程如下: 首先在Andro…

    css 2023年6月10日
    00
  • ajaxToolkit:ModalPopupExtender演示及实现代码

    请允许我详细讲解“ajaxToolkit:ModalPopupExtender演示及实现代码”的完整攻略。 什么是ModalPopupExtender? ModalPopupExtender 是 Ajax Control Toolkit 提供的一种扩展控件,可以实现弹出模态窗口的效果,且在模态窗口不同于常规窗口的背景模糊显示。这种扩展控件通常用于提示用户进行…

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