搜索
首页web前端css教程适配各种尺寸的设备的实现

有时候我们会有让内容恰好占一屏,并且适配各种尺寸的设备的需求。我们先不谈这样做会导致在一些设备上的显示不尽人意,直接谈如何实现。

我们会第一个想到的可能是,页面内所有块级元素的宽度,高度,边距值(margin,padding)都用百分数呗。
在水平方向,宽度,水平方向的间距值如果为百分数的值,其值是相对于其父元素的宽度来计算的,可以实现水平方向适配不同尺寸的设备。
在垂直方向,高度值如果为百分数,其值是相对于父元素的高度来计算的。但垂直方向的间距值如果为百分数的话,其值是相对与父元素宽度(而非高度)来计算的,呵呵(无奈~~~)。

因此,水平方向我们可以用百分数的方案来做适配。垂直方向需要其他方案。

我们能不能用 CSS3 的 Media Queries 呢?做不到。虽然 Media Queries 支持对设备高度的查询,但我们不可能列举所有设备的高度,为每种不同高度的设备写一套 CSS 吧。如果只需兼容几种高度的设备,可以考虑这个方案。

下面介绍几个解决方案。

JS 来实现

原理是,在元素上设置高度用 data-style-height 属性,其值为在父元素高度中占的份数。页面初始化时,JS 会根据该值,父元素的高度,父元素的高度的总份数,给该元素的高度赋值。如

<p>
  <p id="a" data-style-height="1"></p>
  <p id="b" data-style-height="2"></p>
</p>

在上面代码中,父元素的高度的总份数为 3,a 的高度占 1 份,b 的高度 占 2 份。假设父元素的高度是 100px, 那么 a 的高度为 (1 / 3 * 100)px,b 的高度为 (2 / 3 * 100)px

同样的,设置间距用这些属性: data-style-margin-top, data-style-margin-bottom, data-style-padding-top, data-style-padding-bottom。页面初始化时,JS 会根据属性值给元素的对应的间距赋值。

具体实现代码见这里。

用 flex 实现

原理和用 JS 实现基本一致。用 flex 实现只是用 flex-grow 的值大于 0 的 flex 元素在父空间很大时,会自动变大的特性来代替 JS 的计算。

具体的原理是,在元素上设置高度用 data-style-height 属性,其父元素设置样式 <a href="http://www.php.cn/wiki/927.html" target="_blank">display</a>:flex;flex-<a href="http://www.php.cn/wiki/873.html" target="_blank">direction</a>: column;。页面初始化时,JS 会根据该值给该元素设置 flex-grow:属性值。间距用带 data-style-height 属性并且元素内容为空的元素来实现。

具体实现代码见这里。

图片实现

如果内容不需要交互,可以将整个页面做成一张图片来实现。当然,这样做后期维护会比较坑爹。

HTML:

<img class="fullpage" src="...">

CSS:

html,body{
  height: 100%;
}
.fullpage{
  width: 100%;
  height: 100%;
}


以上是适配各种尺寸的设备的实现的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Draggin&#039;和droppin&#039;在反应中Draggin&#039;和droppin&#039;在反应中Apr 17, 2025 am 11:52 AM

React生态系统为我们提供了许多库,所有库都集中在拖放的相互作用上。我们有反应,反应,可爱dnd,

快速软件快速软件Apr 17, 2025 am 11:49 AM

最近有一些关于快速软件的完美互连的事情。

带有背景折叠的嵌套梯度带有背景折叠的嵌套梯度Apr 17, 2025 am 11:47 AM

我可以说我经常使用背景折叠。 IT Wager IT几乎从未在日常CSS工作中使用。但是在斯特凡·朱迪斯(Stefan Judis)的帖子中,我想起了它,

使用React Hooks使用requestAnimationFrame使用React Hooks使用requestAnimationFrameApr 17, 2025 am 11:46 AM

使用RequestAnimationFrame进行动画化应该很容易,但是如果您还没有彻底阅读React的文档,那么您可能会遇到一些事情

需要滚动到页面顶部吗?需要滚动到页面顶部吗?Apr 17, 2025 am 11:45 AM

向用户提供此链接的最简单方法是针对元素上的ID的链接。如此...

最好的(GraphQl)API是您编写的API最好的(GraphQl)API是您编写的APIApr 17, 2025 am 11:36 AM

听着,我不是GraphQL专家,但我确实喜欢与之合作。作为前端开发人员,它向我曝光数据的方式非常酷。它就像一个菜单

在保留边框半径的同时,扩展盒子的各种方法在保留边框半径的同时,扩展盒子的各种方法Apr 17, 2025 am 11:19 AM

我最近注意到Codepen的一个有趣的更改:在悬停在主页上的笔时,有一个矩形,圆角在后面扩展。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中