CSS中的那点事儿(一)--- CSS中的单位1

单位主要用在规定元素的数值性css属性的,这里主要讨论应用的比较多的是width height  padding margin font-size,而单位中应用最广泛就是%、px、em

百分比

百分比,关键就是参考的父元素,在正常流和浮动时,就是包裹着当前元素的元素;在相对定位、绝对定位时,就是当前元素相对于的定位的元素,其实这个很好理解,在这种情况下元素框从文档流完全删除,和原来的文档流没有关系,其包含块可能是文档中的另一个元素或者是初始包含块。下文中提到的父元素都是基于这些知识上,因此不再强调。严格意义上来说,百分比不能算是一种单位,可以理解为包含数值和单位的数据,不管父元素的该属性是什么单位,都是将数值*百分比+单位计算出child的属性值。

html代码如下:

<body>
  <div class="container">
    <div class="child"></div>
  </div>
</body>

css代码如下:

.container{
   width: 800px;
   height: 400px;
   padding: 10px;
   background-color: #228F45;
 }
.child{
   width: 80%;
   height: 80%;
   background-color: #D5DED8;
 }
width height

1.border-sizing为默认值content-box时,container(图1)与child的box model(图2)如下


图1


图2


图3


图4

container的内容宽度和高度为800、400,child的width=800*80%=640,heigth=400*80%=320,在这种情况下,container(图3)与      child的box model(图4)如上,由于设置box-sizing为border-box,所以container的内容宽度和高度分别为780、380,child的width=780*80%,height=380*80%;由此可见,元素的height或width设置成百分比,是相对于父元素的内容高度。

padding和margin

padding和margin的值为百分比是相对于父元素的width计算的,不管是padding-left,还是padding-top。将.container中添加padding:10%,child 的box model如下图


图5

padding = width*800,这是在box-sizing为默认的情况下计算的。margin同理。

font-size

设置container的font-size : 20px,.child的font-size:80%,则浏览器计算出来的结果为child 的font-size为16px.

em

em是相对单位长度,官方是这样描述的:相对于当前对象内文体的字体尺寸。官方说得比较含糊,但可以明确的是跟字体尺寸相关,具体到css属性就是font-size。

在正常情况下,浏览器的默认字体大小为16px(排除修改了浏览器的默认设置的)。所以在例子中,对于container的包含块body来说,由于没有设置body的font-size,因此body的font-size为16px,等同于1em,body的子元素如果没有设置font-size的情况下,都默认为            1em=16px来计算。

还是用上面的html做例子来说明,css代码如下:

.container{
      width: 20em;
      height: 10em;
      padding: 10px;
      background-color: #228F45;
}
.child{
      width: 10em;
      height: 5em;
      background-color: #D5DED8;
 }

查看container (图6)和 child(图7)的盒模型如下


图6


图7


图8


图9

container: width=20*16,height=10*16.child同理。这种情况比较简单。现在我们在.container中添加font-size:1.5em,child中添加font-size: 0.8em。body中还是1em=16px,container的font-size=16*1.5=24px,child的font-size=24*0.8=19.2px,所以在container一个字的宽度为24px, 即1em=24px,相对应地计算出宽和高为480*240,在child一个字的宽度为19.2px,即1em=19.2px,相对应地计算出宽和高为192*96。container (图8)和 child(图9)的盒模型见上方。以上可得知em为单位的换算会继承父元素,有累积效果。padding和margin的计算方式同width、height。

px

px是相对长度单位,指屏幕上的一个像素点,而每英寸的像素是dpi,dpi值越高越清晰。width、height、padding、margin、font-size属性值用这个为单位没有什么特殊的,目前在web上使用的比较广泛。其他几种单位在browser上也是转换成px来表现的。

总结

em和百分比比较类似,都是相对于父元素,有累积效果,em与px的换算并不是固定的。IE无法调整使用px为单位的字体大小,因此对于响应式变得如此流行的今天,当web应用移植到手机上时,显得不太合适。使用em作为字体单位,可以使页面字体得到恰当地缩放,效果也会好很多。

时间: 2024-10-07 02:58:35

CSS中的那点事儿(一)--- CSS中的单位1的相关文章

css样式布局中position的那些事儿

哎,页面布局及设计开发,对于一个一直从事后台开发来说屌丝来说,确实是件很费时.费力,很艰难的一件事. 今晚是想实现把多张重叠在一起,或是标记一张图片中不同的位置然后赋以超链接.花了一晚上的时间,才算初步搞定,大致明白了以下几个css属性用法. [1]将标签设置为float,和同事讨论: html的标签有块级和行级(至于那些是块级,可百度之),每个块级会占用html文档的一行(之所以是一行,是因为块级后面会带有换行).如果把块级标签设置为float时,则标签:(1)脱离原来父级标签.(2)可以在一

css那些事儿1 css选择符与管理

结合当下作为一名net程序员,难以找到工作情况下,先学习前端知识,前端现在已成为web和app的一个交叉点,web前端化,app使用h5技术前端化,至于什么后台数据库 缓存 消息队列的路线如果没有大型项目平台的建设机会是很难能够大纵深的切入,恰恰前端通过编写微信公众号作为一个切入点,希望不会再也找不到工作,再也无法跳巢的尴尬境地. 1 css语法 选择符{属性:value}css的语法非常简单. 2 css常见简写 color:#ffffff ;color:rgb(255,255,255);rg

Web 开发中 20 个很有用的 CSS 库

转自:http://www.oschina.net/translate/css-libraries-for-developers 在过去的几年中,CSS已经成为一大部分开发者和设计者的最爱,因为它提供了一系列功能和特性.每个月都有无数个围绕CSS的工具被开发者发布以简化WEB开发.像CSS 库,框架,应用这样的工具能够为开发者做很多事,而且可以使开发者创造出创新立异的WEB应用. 在这篇文件章中我们找到了一系列对开发者有用的CSS库,它们能帮助开发者在一定的期限内取得有创造性和创新性的成果.我们

CSS雪碧的那些事儿

CSS雪碧 即CSS Sprite,也有人叫它CSS精灵,是一种CSS图像合并技术,该方法是将小图标和背景图像合并到一张图片上,然后利用css的背景定位来显示需要显示的图片部分. CSS雪碧的基本原理是把你的网站上用到的一些图片整合到一张单独的图片中,从而减少你的网站的HTTP请求数量.该图片使用CSS background和background-position属性渲染,这也就意味着你的标签变得更加复杂了,图片是在CSS中定义,而非<img>标签. 实现效果的实例: div { width:

[工具篇]eclipse 中设置 Java/JSP/JS/HTML/CSS 智能提示

Visual Studio 2010 中的智能提示很好用,在eclipse中是否也可以通过设置使得java代码文件.jsp文件.html文件.css文件.js文件时也能有这样方便的智能提示呢?应该是有的: 1.设置java代码智能提示 1)打开eclipse→Windows→Preferences→Java→Editor→Content Assist 2)修改Auto Activation triggers for java的值为:zjava   点击apply按钮.(zjava主要是用在后面替

Web开发中20个很有用的CSS库

来源: 微信公众号文章 在过去的几年中,CSS已经成为一大部分开发者和设计者的最爱,因为它提供了一系列功能和特性.每个月都有无数个围绕CSS的工具被开发者发布以简化WEB开发.像CSS库,框架,应用这样的工具能够为开发者做很多事,而且可以使开发者创造出创新立异的WEB应用. 在过去的几年中,CSS已经成为一大部分开发者和设计者的最爱,因为它提供了一系列功能和特性.每个月都有无数个围绕CSS的工具被开发者发布以简化WEB开发.像CSS 库,框架,应用这样的工具能够为开发者做很多事,而且可以使开发者

jQuery中添加/改变/移除改变CSS样式例子

在jquery中对于div样式操作我们会使用到CSS() removeClass() addClass()方法来操作了,下面我们就整理了几个例子大家一起来看看吧. CSS()方法改变CSS样式 css()方法在使用上具有多样性.其中有一种可接受两个输入参数:样式属性和样式值,两者之间用逗号分隔.比如要改变链接颜色,可以这样编写代码:  代码如下 复制代码 $("#61dh a").css('color','#123456');//选择器‘$("#61dh a")’表

css display Display:inline,我们常常在li中使用它。功能是让li排成一排

在一般的CSS布局制作时候,我们常常会用到display对应值有block.none.inline这三个值.下面我们来分别来认识和学习什么时候用什么值.这里通过CSS display知识加实例.图演示讲解方法来学习和了解DIV CSS display. 目录 CSS display使用 display的值有哪些 css display block显示 css display none隐藏 css display inline 一.CSS display使用     -   TOP 以下为DIV

iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ

iOS之在webView中引入本地html,image,js,css文件的方法 2014-12-08 20:00:16CSDN-sky_2016-点击数:10292 项目需求 最近开发的项目,需要一个webView,同时这个webView会需要引入一些项目中的资源: 一个本地的html文件,作为webView的模板 两张loading图片,在图片未加载的时候进行占位 jquery.js,scrollLoading.js 也是本地的,实现滚动加载图片功能 然后就开始了漫长的Google历程. 在w