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

yizhihongxing

移动端自适应布局问题是在不同屏幕尺寸的移动设备上保持网页布局始终合适的问题。常见的解决方案包括响应式、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日

相关文章

  • JS表格组件神器bootstrap table详解(强化版)

    下面详细讲解“JS表格组件神器bootstrap table详解(强化版)”的完整攻略。 一、Bootstrap Table介绍 Bootstrap Table是一个强大的在线表格组件,它基于Bootstrap框架进行开发,具有快速、高效、简单易用等优点。Bootstrap Table支持异步加载、本地数据、数据排序、分页、新增和修改数据等多种功能,是高级开…

    css 2023年6月10日
    00
  • div css 滚动条样式 DIV滚动条属性及样式设置方式

    下面我将为您详细讲解“div css 滚动条样式 DIV滚动条属性及样式设置方式”的完整攻略。 简介 在网页设计中,滚动条是非常常见的组件之一。然而,浏览器默认的滚动条样式并不美观,甚至会影响您网页的大气和美观。为此,我们需要自定义滚动条样式,在这里我们就要介绍DIV滚动条属性及样式设置方式。 初步准备 先设定一个网页布局模板,并在其中加入一个 div 元素…

    css 2023年6月9日
    00
  • box-shadow和drop-shadow实现不规则投影实例代码

    首先我们来了解一下box-shadow和drop-shadow两种方式实现阴影的不同之处: box-shadow属性是在目标元素的边框外侧形成一个矩形的投影效果。 drop-shadow属性是在目标元素和背景之间产生一个投影效果,投影效果是会根据目标元素的不规则形状进行调整的。 接下来我们分别来看一下如何使用box-shadow和drop-shadow实现不…

    css 2023年6月9日
    00
  • js、css、html判断浏览器的各种版本

    关于JS、CSS、HTML判断浏览器的各种版本的攻略,我会和你分享一些实用的方法和示例。具体来说,我们可以从以下几个方面来介绍: 判断浏览器类型和版本号 通过 navigator.userAgent 判断浏览器类型和版本号 。这是浏览器自身提供的属性,我们可以通过navigator.userAgent来访问。具体代码示例如下: var ua = naviga…

    css 2023年6月10日
    00
  • 利用CSS3的checked伪类实现OL的隐藏显示的方法

    下面是“利用CSS3的checked伪类实现OL的隐藏显示的方法”的完整攻略。 1. 需求分析 在网页中,我们时常需要对一些内容进行展开和隐藏。比如说,一个FAQ页面上展示了很多问题,我们需要点击问题才能展开答案。而 <ol> 标签本身就会自带序号,如果想要对其中的某些序号进行展开和隐藏,我们可以使用 CSS3 的伪类 :checked 来实现。…

    css 2023年6月9日
    00
  • 原生js+css调节音量滑块

    下面是具体的攻略流程: 1. 原生JS实现音量滑块 1.1 HTML模板 首先,我们需要创建需要的HTML模板结构,包括音量滑块的整体容器,以及音量条、拖动块、静音按钮等子元素。 <div class="volume-wrap"> <div class="volume-bar"></div…

    css 2023年6月10日
    00
  • 10 套华丽的CSS3 按钮小结

    很高兴为您详细讲解“10 套华丽的CSS3 按钮小结”的完整攻略。 简介 在这篇文章中,我们将会学习到如何使用 CSS3 创建华丽的按钮。本文提供了 10 种不同样式的按钮,每一种样式都有相应的代码和效果演示。这些按钮可以应用于各种不同的网站,并且非常酷炫。下面让我们开始进入正题。 步骤 第一步:下载所需代码 首先,您需要下载所需的代码。在本文中,我们将使用…

    css 2023年6月10日
    00
  • css3个性化字体_动力节点Java学院整理

    CSS3个性化字体攻略 1. 引入字体文件 首先,需要引入自定义字体文件,常见的字体文件格式有.woff、.eot、.ttf、.otf等。可以使用@font-face规则将自定义字体文件引入到网页中: @font-face { font-family: myFont; /*自定义字体名称*/ src: url(‘myFont.woff’) format(‘w…

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