em rem vw vh

2023-11-05 15:20
文章标签 em rem vh vw

本文主要是介绍em rem vw vh,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一直想写一个关于em和rem的总结,无奈最近因为毕业论文还有工作原因耽搁了!

刚抽出时间,笔者就想起来博客园估计是要长草了!

不怕!今天就是来除草的!

每次写页面的时候,笔者总是手机页面居多,由于工作量不多计算简单,所以我就直接以100%设计页面布局,尽管我知道一旦页面复杂就尴尬了!做到pc端呢,由于美工小姐姐也没有想到自适应,反而就没有要求自适应,所以pc笔者一直也没有做自适应,虽然事实是这样,可是自适应这种东西,早晚都要用得着啊!

有一次笔者尝试着用rem写个页面,本来以为挺简单,后来发现···并没有阿喂!

好吧!既然你这么变态!就更加坚定了我要学习rem的决心!

首先我是觉着,这个rem是针对于字体大小而存在,虽然他真正的广泛用处把笔者整个人打肿了,不过我还是要坚持这个理念的!只要笔者还有一口气,我就要坚持到死!

在学习之前,我觉着首先要明白的是什么叫弹性布局?

我们都知道,我们的浏览器默认的字体的大小是16px,也就是说,一般情况下:body{font-size:16px},当然啦,如果想要改变是可以通过UI控件改变的!想改变直接ctrl+或者ctrl-就可以啊!

又知道em是一个相对单位,而且可以指定到小数点后三位,如:0.134em;不过这只是一个相对单位,相对的sei呢?就是他的父元素的font-size!不过这里只是说字体大小,其他的也是一样的!

既然默认字体是16px了,那接下来就方便多了,只要你学过加减乘数,都不事儿!不过这个em在IE下面可能会有毛病!为了避免这个毛病,我们要一个设置:html{font-size:100%;}

举个最简单的栗子:

这里就是设置了一个960px的容器;

笔者看过无数人对于em的总结,不过总体来看,其实很简单,就是计算的时候,只有字体的公式是:自身字体em大小=1/父元素字体大小 x 自身字体的大小;

                                   而其他属性的公式则是:自身em大小=1/自身字体大小 x 自身像素大小;

 

 栗子如上

但是!但是!!但是!!!要知道,如果自身没有设置大小,那么就是继承父元素的字体大小,换句话说,这种情况下,也是按照父元素来的!总而言之,其实都是依照自己的字体大小而设置的其他元素的大小的!

但是你知道吗?这样做只能说是你在放大小的时候不会把布局弄乱,但是字体什么的根本没有自适应!

所以我总结的就是:em根本和px比没有什么特别大的优势,非要说一个的话,就是它可以牵一发而动全身,这对于不做相应设计的来讲,基本就是没什么用的!因为它到底还是计算成了像素!

··························································································没错!我是华丽的分割线!···············································································

em暂时到这里!下面讲述rem!

先来一个关于不同分辨率下调整html的font-size的函数:

(function (doc, win) {

   var  docEl = doc.documentElement,
     resizeEvt =  'orientationchange'  in  window ?  'orientationchange'  'resize' ,
     recalc =  function  () {
       var  clientWidth = docEl.clientWidth;
       if  (!clientWidth)  return ;
       docEl.style.fontSize = 20 * (clientWidth / 320) +  'px' ;
     };
   if  (!doc.addEventListener)  return ;
   win.addEventListener(resizeEvt, recalc,  false );
   doc.addEventListener( 'DOMContentLoaded' , recalc,  false );
})(document, window);
针对于rem,其实他和em是一样的,只不过他是针对于根元素来计算的。
有的时候,我们想着方便,会把html的font-size设置成62.5%,这样就是10px的大小,其实这样反而是弄巧成拙了,怎么说呢》要知道,人家chrome的最小字体大小是12px,一旦小于这个限制,人家就按12px计算了,你还嘚瑟啥啊?后面跟个智障一样一通算,最后全部错了,就问你尴不尴尬?尴尬死了!
而且要记住,即便是你用了rem,也要考虑到人家的兼容性啊,最好在每一个rem前面都写一些px的,这样起码可以保证优雅降级啊!
所以我的最终方案就是:当我想要写一个自适应的页面时,不让字体去自适应屏幕,而是让外面的自适应字体,比如我们把元素设置为宽度为50em,不管字体设置为多大,都只能容纳50个字。这仅限于同一级别,千万别父元素设置宽,子元素再设置字体大小,那样是不对的!

 

 ·················································································没错!我是华丽的分割线!·············································································

最后说一下vw和vh!其实这两个笔者觉得是相当好用的,起码他是适用于屏幕大小的,对于手机端来讲,这无疑是雪中送炭,笔者心中的朱砂痣啊!但是它的兼容性还是有毛病的,并不针对于所有浏览器!无奈摊手,还是不行啊!因为我们平常开发,还是要考虑一下普通人的感受的啊!
不过用法还是要记载一下的,万一那一天,人家翻身农奴把歌唱了呢!
vw和vh都是百分比的用法,假如你的屏幕宽度是100mm,那10vw就是10mm,也就是10%的宽度,是不是很简单的用法!
唉···  如果这个兼容性调好了该有多好!也不用这么愁了···  怪自己能力不够啊!
而且我发现一件非常神奇的事情,这个事情只发生在安卓手机上,奏四!人家的高100%都是针对于整个手机的100%。但是假如你在做一个登录注册页面吧,那里不是有input框吗?一点点击文本框,背景图的100%就会默认为除了键盘之外的100%,这一点很鸡肋!以至于我做的时候直接把html{background:#自己的颜色;height:100vh;}了!
············································································ 没错!我是华丽的分割线!················································································
所以笔者最后得出结论,当我们需要手机字体大小自适应的时候,最好的办法就是:用 媒体查询啊!下面是合适的分布,可以借鉴哦~

@media only screen and (max-width:300px) {
}
@media only screen and (max-width:310px) and (min-width:300px) {
}
@media only screen and (max-width:320px) and (min-width:310px) {
}
@media only screen and (max-width:350px) and (min-width:320px) {
}
@media only screen and (max-width:360px) and (min-width:350px) {
}
@media only screen and (max-width:400px) and (min-width:360px) {
}
@media only screen and (max-width:470px) and (min-width:400px) {
}
@media only screen and (max-width:480px) and (min-width:470px) {
}
@media only screen and (max-width:540px) and (min-width:480px) {
}
@media only screen and (max-width:560px) and (min-width:540px) {
}
@media only screen and (max-width:570px) and (min-width:560px) {
}
@media only screen and (max-width:630px) and (min-width:570px) {
}
@media only screen and (max-width:640px) and (min-width:630px) {
}
@media only screen and (max-width:710px) and (min-width:640px) {
}
@media only screen and (max-width:720px) and (min-width:710px) {
}
@media only screen and (min-width:720px) {
}

转载于:https://www.cnblogs.com/yimei/p/7009625.html

这篇关于em rem vw vh的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/350729

相关文章

simulink中rem模块

在Simulink中,Rem模块用于计算两个数相除后的余数,即求模运算。它的功能非常简单,但在许多应用中非常有用,特别是在数字信号处理和控制系统中。 使用Rem模块的步骤 添加模块: 打开Simulink模型,在Simulink库浏览器中找到“Math Operations”下的“Rem”模块,将其拖放到模型中。 连接输入: Rem模块有两个输入端口: 第一个输入端口(上)是被除数(分子)。

高斯混合模型(GMM)的EM算法实现

在 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut一文中我们给出了GMM算法的基本模型与似然函数,在EM算法原理中对EM算法的实现与收敛性证明进行了详细说明。本文主要针对如何用EM算法在混合高斯模型下进行聚类进行代码上的分析说明。 GMM模型: 每个 GMM 由 K 个 Gaussian 分布组成,每个 Gaussian 称为一个“C

sass px转vw

如今移动端对 vw/vh 的尺寸单位基本兼容,对代码有洁癖的开发者们不想用js去计算rem的值了。 网上有许多有关在 sass 中 px转rem的文章了,今天小编带来一个简单实用的 px转vw的方法 sass方法源码 /*750:设计稿宽度$px:元素在设计稿上的宽度*/@function px2vw($px) {@return $px/750*100vw;} 使用方式 由上图所

探索 MATLAB 中的 rem 函数:余数计算与应用

在 MATLAB 中,rem 函数用于计算除法的余数,这是一个非常实用的函数,尤其在需要处理循环、周期性数据或判断整除关系时。本文将深入探讨 rem 函数的用法、常见的应用场景以及与其他相关函数的比较。 1. rem 函数的基本语法 rem 函数的基本语法如下: r = rem(a, b); a:被除数,可以是标量、向量或矩阵。b:除数,可以是标量、向量或矩阵,通常与 a 的尺寸相同或为

前端面试:title与h1的区别、b与strong的区别、i与em的区别?

在前端开发中,理解 HTML 标签的区别和语义非常重要,以便更好地组织内容和优化搜索引擎优化(SEO)。以下是 title 与 h1、b 与 strong、i 与 em 的区别: 1. title 与 h1 title: 位置:位于 <head> 标签中。目的:定义文档的标题,通常在浏览器标签页显示,搜索引擎结果页面中也使用该标题。语义:表示文档的主题。示例: <head>  <title

rem自适应布局-移动端自适应必备

原文链接:http://caibaojian.com/flexible-js.html 由于移动端特殊性,本文讲的是如何使用rem实现自适应,或叫rem响应式布局,通过使用一个脚本就可以rem自适应,不用再为各种设备宽度不同而烦恼如何实现自适应的问题。 rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个px字号,则可以来算出元素的宽高。1rem=16px(浏览器h

移动web适配之rem

前言 提到rem,大家首先会想到的是rm,px这类的词语,大多数人眼中这些单位是用于设置字体的大小的,没错这的确是用来设置字体大小的,但是对于rem来说它可以用来做移动端的响应式适配哦。   兼容性 先看看兼容性,大部分主流浏览器都支持,可以安心的往下看了。   rem设置字体大小 rem是(font size of the root element),官方解释

POJ 2993Emag eht htiw Em Pleh(模拟)

题目地址:http://poj.org/problem?id=2993 这个题以前做过一遍。。当时居然没写博客。。这题其实也算不上模拟吧,我只是用了几套公式。。 #include <stdio.h>#include <string.h>char map[50][50];int main(){char s1[200], s2[200];int i, j, len1, len2, x,

B,strong,I,em的区别

很多网页编写者不明白b和strong以及i和em具体含义,写文章的时候只是用网站后台的编辑器排版文章,需要加粗的时候点击编辑器上面的B按钮就行了。因为两者所达到的效果一样,所以人们就没有太在意这两个到底有什么区别,那么今天我来告诉大家,是有区别的。   它们的区别就再于一个是物理元素,一个是逻辑元素。 什么是物理元素?什么是逻辑元素?   物理元素所强调的是一种物理行为,比如说我把一段文字用b标记

GMM与EM算法(一)

EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法。在之后的MT中的词对齐中也用到了。在Mitchell的书中也提到EM可以用于贝叶斯网络中。 下面主要介绍EM的整个推导过程。 1. Jensen不等式       回顾优化理论中的一些概念。设f是定义域为实数的函数,如果对于所有的实数x,,那么f是凸函数。当x是向量