由css reset想到的深入理解margin及em的含义
由css reset想到的深入理解margin及em的含义
原文地址:http://www.ymblog.net/content_189.html
经常看到这样语句,*{ margin:0px;padding:0px; },用起来很方便吧?
由于学习前端的门槛低,我一直找不到区别于那些用DW的前端的所在点,我总觉得我是用记事本写代码的,我的水平及理解绝对比那些用DW的人呀更胜一筹。但区别在哪里呢?最近,我似乎明白了,拿css来说,前面的很长一段时间,我都是在横向学习css,不断的学习新的东西,制作新的美的页面,我还洋洋得意的说我前端css学的good了,最近我才恍然大悟到,这个阶段,这种表现只不过是学习CSS的一个初级阶段,我并没有进阶,并没有有多大的提高,这也正是,别人问我你能说说你在学习css这方面有哪些深刻的见解?我有吗?我没有,学习几个新属性制作几个炫酷页面就叫做深刻了吗?错的,谁都可以做出很炫很美很清爽的页面,这也就是,当你面对*{ margin:0px;padding:0px; }这行语句的时候,你会觉得非常好用,在哪里用都特别方便,特别的顺手,而你说不出个所以然来,说不出为什么要这么用,说不出你这样用了,浏览器做了哪些事情。
这个道理也是昨天晚上才想明白的,作为立志与前端工程师的我们,你应该清楚,*{ margin:0px;padding:0px; }这样写真的好么?
页面默认的margin值
首先要知道,默认的只具有margin值的元素有哪些,
body,h1-h6,p,div,dl,dd,pre,form,hr,blockquote
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------



默认同时具有margin和padding的元素有哪些

至于这里的em是什么意思,请看这篇文章。
至此,我们应该明白,*{ margin:0px;padding:0px; }耗费了多少资源?一个HTML文档有多少标签?每个标签都需要浏览器来渲染一遍这个值,多浪费是不是?
________________________________________________________________________________________
说完了CSS RESITE 来讨论说说margin。
默认的块状元素是可以随意设置margin的上下左右边距。但你是否出现类似的情况,如图,

很简单的结构

样式


一个div中,一个p标签,设置p标签margin-top:50px;后,并没有想象中的效果,而是父元素margin-top了一个值。这是为什么呢?
(这种情况在IE67中不会出现,因为IE的hasLayout渲染导致了这个“表现良好”的外观。详细请看这篇文章)
其实你应该想想在这里为什么要用margin,而不用padding,我想你认为这2个效果实现是一样的,,请看这篇文章,何时用margin,何时用padding。首先你得明白,默认的块状元素都是包含有margin,border,padding的,而margin的含义,是指在存在border和padding的基础上,与外部元素的间距。那么我们这里是没有border或者padding的,如果在这里你这只border-top:1px red solid;则正常了。但真的是那样吗?如果这样,那我们每次都要附加一个border或者padding,增加代码量,多不好。其实你应该想到,这里应该使用padding-top,效果将会非常好。那么何时用margin,何时用padding?
何时应当使用margin:
1、需要在border外侧添加空白时。
2、空白处不需要背景(色)时。
3、上下相连的两个盒子之间的空白,需要相互抵消时。如15px + 20px的margin,将得到20px的空白。(注:当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。你可以查看W3Shool CSS外边距合并了解这个基本知识。)
何时应当时用padding:
1、需要在border内测添加空白时。
2、空白处需要背景(色)时。
3、上下相连的两个盒子之间的空白,希望等于两者之和时。如15px + 20px的padding,将得到35px的空白。
仔细对比下,在这里我们应该用padding吧?总结一下,margin是用来分开互不相干的元素,在这里p是div的子元素,而padding,用于元素与内容之间的间隔。
另外默认的行内元素
span,a,strong,label margin-top/margin-bottom对内联元素没有多大实际效果,但可影响左右边距
img|input|select|textarea|button|虽然是内联元素,也称之为置换对象,因为他们具有inline-block的属性,有自己的宽高,还可以定义margin的上下左右边距。
参考:
由css reset想到的深入理解margin及em的含义的更多相关文章
- CSS Reset的相关概念及实例
原文 简书原文:https://www.jianshu.com/p/fdb79010895c 大纲 1.什么是css reset? 2.CSS reset的实例 1.什么是css reset? 个人理 ...
- 【27前端】CSS Reset
CSS reset就像是一种宁可错杀三千不可放过一个的做法. 一个最简单粗暴的css reset解决方案 *{ margin:0; padding:0; } 多余的话我就不再累赘,想要更多可以参考我的 ...
- css reset 以及哪些元素有默认margin padding值
很多网站在css reset 的时候有如下做法: body, ul, ol, li, p, h1, h2, h3, h4, h5, h6, form, label, dl, dt, dd,fields ...
- ife任务刷题总结(一)-css reset与清除浮动
本文同时发布于本人的个人网站www.yaoxiaowen.com 百度创办的前端技术学院,是一个面向大学生的前端技术学习平台.虽然只有大学生才有资格报名,提交代码进行比赛排名.但是这并不妨碍我们这些初 ...
- HTML常用命名和CSS reset代码【收集总结】
CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...
- css reset重置样式有那么重要吗?
在以前写html代码的时候,一般都会在head里添加重置样式reset.css,其内容如下: @charset "utf-8"; html, body, div, span, ap ...
- 这 30 类 CSS 选择器,你必须理解!
CSS 选择器是一种模式,用于选择需要添加样式的元素.平时使用最多也是最简单的就是 #id..class 和标签选择器,在 CSS 中还有很多更加强大更加灵活的选择方式,尤其是在 CSS3 中,增加了 ...
- css reset的重置作用(可取还是不可取,取决于你)
一.重置的理由 当今流行的浏览器中,有些都是以自己的方式去理解css规范,这就会到只有的浏览器对css的解释与设计师的css定义初衷相冲突,使得网页的样子在某些浏览器下能正确按照设计师的想法显示.,但 ...
- CSS中盒模型的理解
今天突然看到一篇关于CSS中盒模型的文章,忽然觉得自己竟然遗忘了很多小的地方,所以写一篇文章来记忆一下 (摘抄于千与千寻写的CSS盒子模型理解,并在自己基础上添加了一些东西,希望更完善,对大家有帮助) ...
随机推荐
- 关于这段时间学习 EntityFramework的 一点感悟
Ado.Net,用了N多年,Entity Framework也关注了很多年. 每当项目转型的时候,就花费大巴的时间,学习一番,潮流的东西. 这个Orm很多,这个EF很火,这么多年了,我还是不敢用,虽然 ...
- Yeoman 官网教学案例:使用 Yeoman 构建 WebApp
STEP 1:设置开发环境 与yeoman的所有交互都是通过命令行.Mac系统使用terminal.app,Linux系统使用shell,windows系统可以使用cmder/PowerShell/c ...
- nodejs中获取时间戳、时间差
Nodejs中获取时间戳的方法有很多种,例如: new Date().getTime() Date.now() process.uptime() process.hrtime() 平时想获取一个时间戳 ...
- iOS逆向工程之Hopper中的ARM指令
虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...
- so 问题来了,你现在值多少钱?
年底了一大帮人都写着年底总结,总结一年做过的事.错过的事和做错的事.增长了多少本事,找没找到女朋友……来年做好升职加薪,要么做跳槽的准备,程序猿又开始浮躁了……. so 问题来了,你现在值多少钱? 这 ...
- C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置
用于永久化对象,什么程序都行,依赖NewtonSoft.用于json序列化和反序列化. using Newtonsoft.Json; using System; using System.Collec ...
- 纸箱堆叠 bzoj 2253
纸箱堆叠 (1s 128MB) box [问题描述] P 工厂是一个生产纸箱的工厂.纸箱生产线在人工输入三个参数 n, p, a 之后,即可自动化生产三边边长为 (a mod P, a^2 mod p ...
- BPM嵌入式流程解决方案分享
一.需求分析由于企业业务的独特性或者企业高层独特的管理思想,很多客户选择了自行开发业务系统的方式来实现独有的竞争力. 这类信息系统通常经过了多年的开发,伴随着企业的发展一直在不断优化,与企业的业务非常 ...
- 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business
建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...
- Java 教程整理:基础、项目全都有
Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...