Gxl网
  • 首页
  • 编程
    PHP基础 PHP教程 php框架 JavaScript asp.net AJAX 正则表达式 ASP html代码 css 前端框架 Python 服务器
  • 数据库
    mysql mssql redis 数据库问题
  • 系统教程
    window10教程 window8教程 window11教程 window7教程 windowxp教程 linux教程 U盘教程
  • 操作系统
    Windowsxp windows7 windows8 windows10 其他操作系统
  • 程序下载
    企业程序 小说/有声 网站模板 第三方软件 新闻资讯 第三方源码 小程序 商城源码
  • 框架书籍
    前端开发 服务器端开发 数据库 开发软件 其他手册
  • jquery插件库
    输入 banner图 图片脚本 导航/分类 播放器 css3 jQuery脚本 jqueryhtml5 进度条 贴图/客服
  • 在线工具
    编码转换工具 在线IDE编码工具
  • 开发手册
    linux命令大全 Bootstrap HTML参考手册 css手册/教程 ThinkPHP5.0 ThinkPHP3.2
当前位置:Gxlcms > css > CSS中的长度单位以及宽度自适的实例分析

CSS中的长度单位以及宽度自适的实例分析

时间:2021-07-01 10:21:17 帮助过:60人阅读

CSS 单位

作者:Chinaxiang 来源:互联网 2015-12-01 23:36



CSS中的长度单位有很多,觉得有必要整理备忘。

概览

CSS中的长度单位有很多,觉得有必要整理备忘。

网上介绍的也比较多和全,详见参考资料。

单位大体分为两大类:

  • 绝对单位 ,不会因为其他元素的尺寸变化而变化。

  • 相对单位 ,没有一个固定的度量值,而是由其他元素尺寸来决定的相对值。


单位类型简介
pxAbsolute像素 (计算机屏幕上的一个点),1px = 1/96in
ptAbsolutePoints, 1pt = 1/72in
pcAbsolutePicas, 1pc = 12pt
inAbsoluteInches, 1in = 96px = 2.54cm
cmAbsoluteCentimeters, 1cm = 96/2.54px
mmAbsoluteMillimeters, 1mm = 1/10cm
qAbsoluteQuarter-millimeters, 1q = 1/4mm
%Relative相对于父元素的宽度或字体大小
emRelative相对于父元素的字体大小
remRelative(即root em) 相对于html标签的字体大小
exRelative当前字体环境中 x 字母的高度
chRelative当前字体环境中 0 数字的高度
vwRelative1% 视口(浏览器可视区域)的宽度
vhRelative1% 视口(浏览器可视区域)的高度
vminRelative1% 视口(浏览器可视区域)的宽度和高度中较小的尺寸
vmaxRelative1% 视口(浏览器可视区域)的宽度和高度中较大的尺寸

由于绝对单位是固定值,没什么要介绍的,下面主要介绍相对单位。

%

相对于父元素的相同属性的大小。这个其实谈不上单位,但它毕竟可以作为长度单位来使,所以在此列出。

如果用来设置字体,则相对的就是父元素的字体大小。

大多数浏览器中<html> 和<body> 标签中的默认字体尺寸是100%.

html {font-size: 100%;}body {font-size: 100%;}

100% = 1em = 16px = 12pt

如果用来设置宽和高等非字体尺寸,则以百分比为单位的长度值是基于具有相同属性的父元素的长度值。

<!DOCTYPE html><html><head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style type="text/css">
  p.parent {    margin:150px;    width: 200px;    height: 200px;    border: 1px solid blue;  }
  p.child {    width: 50%;    height: 50%;    border: 1px dashed black;  }
  </style></head><body>
  <p class="parent">
    <p class="child"></p>
  </p></body></html>


再啰嗦一点关于父元素的问题:何为父元素,相对定位(relative),绝对定位(absolute),浮动(float),固定(fixed)中如何找寻父元素?

由于HTML是树形结构,标签套标签,一般情况下的父子关系很明朗。

<p class="parent">
    <p class="child"></p>
</p>

相对定位元素,它的父元素符合标签嵌套。

绝对定位元素,它的父元素是离它最近的定位元素(绝对定位,相对定位,固定,但不包括浮动)或者视窗尺寸(没找到定位元素时)。

浮动元素,它的父元素也符合标签嵌套。

固定元素(特殊的绝对定位),它的父元素是视窗(浏览器默认用来展示内容的区域的尺寸,不是html 或body 的尺寸)。

注意一下绝对定位就行了,其他的相对简单。

<!DOCTYPE html><html><head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style type="text/css">
    html {        width:1000px;    }
    body {        width:800px;    }
    #box {        width:50%;        height:300px;        position: absolute;        margin-left: 200px;        border: 1px solid red;    }
    #can {        position:absolute;        top:100px;        left:100px;        width:50%;        height:50%;        border:1px solid black;    }
  </style> </head>  <body>
    <p id="box">
        <p id="can"></p>
    </p>
    </body>  </html>

box 宽度为视窗的一半,can 的宽高是 box 的宽高的一半。

将 can 设置为 position: fixed; 则其父元素将不再是 box 而是浏览器视窗。


can 的宽高是视窗宽高的一半。

浮动元素的父元素跟普通元素的父元素是一样的。

<!DOCTYPE html><html><head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style type="text/css">
    html {        width:1000px;    }
    body {        width:800px;    }
    #box {        width:50%;        height:300px;        position: absolute;        margin-left: 200px;        border: 1px solid red;    }
    #can {        float:left;        width:50%;        height:50%;        border:1px solid black;    }
  </style> </head>  <body>
    <p id="box">
        <p id="can"></p>
    </p>
    </body>  </html>


注意: padding、 margin 如果设置了百分比,上,下,左,右 用的都是父元素宽度 的值为标准去计算。

em 和 rem

两者都是基于字体尺寸的,区别在于 em 是相对于当前父元素的字体大小为标准,而 rem 是相对于 html 元素的字体大小为标准。

举个例子你就明白了。

<!DOCTYPE html><html><head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style type="text/css">
  html {    font-size: 30px;  }
  body {    font-size: 14px;  }
  p.em {    font-size: 1.2em;  }
  p.rem {    font-size: 1.2rem;  }
  </style></head><body>
  <p class="em">
    Test <!-- 14 * 1.2 = 16.8px -->
    <p class="em">
      Test <!-- 16.8 * 1.2 = 20.16px -->
      <p class="em">
        Test <!-- 20.16 * 1.2 = 24.192px -->
      </p>
    </p>
  </p>
  <p  class="rem">
    Test <!-- 30 * 1.2 = 36px -->
    <p  class="rem">
      Test <!-- 30 * 1.2 = 36px -->
      <p  class="rem">
        Test <!-- 30 * 1.2 = 36px -->
      </p>
    </p>
  </p></body></html>

ex 和 ch

ex 和ch 单位,依赖于当前字体font-family 和字体大小 font-size。 ex 指当前字体环境中小写字母x 的高度,ch指当前字体环境中数字 0 的宽度。


IE9+ 和现代浏览器都已经支持。

vw 和 vh

响应式网页设计技术很大程度上依赖于比例规则。然而,CSS比例不总是每个问题的最佳解决方案。如果想使用显示窗口的宽度或高度而不是父元素的宽度将会怎么样?这正是vh 和vw 单位所提供的。

vh 等于视窗高度的 1/100.例如,如果浏览器的高是 900px, 1vh 求得的值为 9px 。同理,如果显示窗口宽度为750px, 1vw 求得的值为 7.5px。

IE10+ 和现代浏览器都支持这两个单位。

vmin 和 vmax

这两个单位是针对vw和vh

vmin 是vw和vh中比较 小 的值

vmax 是vw和vh中比较 大 的值

.box {    height: 100vmin;    width: 100vmin;}


.box {    height: 100vmax;    width: 100vmax;}


IE10+ 和现代浏览器都已经支持 vmin

webkit浏览器之前不支持vmax,现在已经支持,所有现代浏览器已经支持,但是IE不支持 vmax.

总结

尺寸单位虽然说不是很难的内容,但能够做到精准理解和熟练使用也是极其难得的,也许随着CSS的发展会有更多有用的单位引进。

对单位斤斤计较是一个优秀CSS使用者应该具备的品质,赶紧去挑选合适的单位去开发你的NB产品吧。

下面的代码用来检测您的浏览器是否支持常用单位:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style type="text/css">
    body {
      padding: 20px;
    }
    div {
      background: #99ff99;
      padding: 5px;
      margin-bottom: 10px;
      white-space: nowrap;
      width: 0;
    }
    div:after {
      content: " (supported)";
    }
    div.fail {
      width: 100% !important;
      background: #ff6666 !important;
    }
    div.fail:after {
      content: " (NOT supported)";
    }
  </style> 
</head>  
<body>

<div id="percentage">50% - percentage</div>
<div id="pixel">400px - pixels (device pixels)</div>
<div id="em">20em - relative unit</div>
<div id="rem">20rem - root em</div>
<div id="vw">15vw - viewport width</div>
<div id="vh">60vh - viewport height</div>
<div id="vmin">60vmin - smaller of vw or vh</div>
<div id="vmax">60vmax - larger of vw or vh</div>
<div id="inch">4in - inches</div>
<div id="cm">20cm - centimeters</div>
<div id="mm">200mm - millimeters</div>
<div id="pt">120pt - points</div>
<div id="pc">40pc - picas</div>
<div id="ex">60ex - x-height</div>
<div id="ch">60ch - based on width of zero (0) character</div>

<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.js"></script>
<script>
// 给指定元素设置宽度
var percentage = $("#percentage").css("width", "50%");
// 如果宽度值为0,即不支持,为此元素添加fail类
if (percentage.width() == 0) percentage.addClass("fail");

var pixel = $("#pixel").css("width", "400px");
if (pixel.width() == 0) pixel.addClass("fail");

var em = $("#em").css("width", "20em");
if (em.width() == 0) em.addClass("fail");

var rem = $("#rem").css("width", "20rem");
if (rem.width() == 0) rem.addClass("fail");

var vw = $("#vw").css("width", "15vw");
if (vw.width() == 0) vw.addClass("fail");

var vh = $("#vh").css("width", "60vh");
if (vh.width() == 0) vh.addClass("fail");

var vmin = $("#vmin").css("width", "60vmin");
if (vmin.width() == 0) vmin.addClass("fail");

var vmax = $("#vmax").css("width", "60vmax");
if (vmax.width() == 0) vmax.addClass("fail");

var inch = $("#inch").css("width", "4in");
if (inch.width() == 0) inch.addClass("fail");

var cm = $("#cm").css("width", "20cm");
if (cm.width() == 0) cm.addClass("fail");

var mm = $("#mm").css("width", "200mm");
if (mm.width() == 0) mm.addClass("fail");

var pt = $("#pt").css("width", "120pt");
if (pt.width() == 0) pt.addClass("fail");

var pc = $("#pc").css("width", "40pc");
if (pc.width() == 0) pc.addClass("fail");

var ex = $("#ex").css("width", "60ex");
if (ex.width() == 0) ex.addClass("fail");

var ch = $("#ch").css("width", "60ch");
if (ch.width() == 0) ch.addClass("fail");
</script>
</body>  
</html>

以上就是CSS中的长度单位以及宽度自适的实例分析的详细内容,更多请关注Gxl网其它相关文章!

  • < 上一篇

    CSS3中介绍最新的几种长度单位

  • 下一篇 >

    css绝对定位居中技术优缺点图表详解

人气教程排行

  • 107次 1 css文本属性有哪些?css文本属性的总结
  • 107次 2 css实现弹出对话框的同时出现遮罩层
  • 107次 3 cssword-wrap属性的使用详解
  • 107次 4 csstarget-new属性怎么用
  • 106次 5 cssletter-spacing属性怎么用
  • 106次 6 HTML5中的picture元素响应式处理图片方法
  • 106次 7 CSS实现自适应导航菜单
  • 106次 8 全部汇总函数定义与用法汇总
  • 106次 9 用CSS制作聊天框小尖角、气泡效果
  • 106次 10 详解CSS的overflow属性防止float撑开div的使用方法
  • 105次 11 cssbackground-color属性怎么用?
  • 105次 12 关于动画和变换的详细介绍
  • 105次 13 CSS中z-index属性是什么意思?
  • 105次 14 css修改下拉列表select默认样式的实例
  • 105次 15 CSS3中关于box-shadow属性的使用详解
  • 105次 16 CSS3transition和transform实现跑马灯效果
  • 105次 17 input[type=file]打开时慢、卡顿问题的解决办法
  • 105次 18 区别input框和按钮的方法
  • 105次 19 css使用relative模仿百度首页top
  • 105次 20 CSS网格布局(Grid)的两种方式介绍(附代码)
本站所有资源全部来源于网络,若本站发布的内容侵害到您的隐私或者利益,请联系我们删除!
登录

忘记密码?

登录

看不清楚换一张

注册