要用到的基本术语和概念:

  • 正常流:HTML文档的文本布局,在非西方语言中流的方向可能不同。大多数元素都在正常流中,浮动或定位可以让元素脱离正常流。
  • 块级元素:像p,div之类的元素在正常流中会在其框之前和之后生成“换行”,所以处于正常流中块级元素会垂直摆放。
  • 行内元素:strong,span之类的元素,这些元素不会在之前或之后生成“行分隔符”,它们是块级元素的后代。
  • 水平格式化的7大属性:margin-left,border-left,padding-left,width,padding-right,border-right,margin-right。
  1. 只有width,左右外边距可以设置为auto,其余属性必须为特定值或默认值或0
  2. width必须设置为auto或某种类型的非负值,padding,border不能设置为负值;但margin可以设置为负值,并且设置为负值后,元素内容框的左或右边界位置会移动并且内容框宽度增大,如下图

需要知道的画外音:

  • chrome下width默认为auto;border,padding,mar gin默认为0;所以以下所讲的auto除了width,margin的需要显式设置。
  • 正常流中块级元素框的水平部分总和(width+pdding+border+margin)等于父元素的width
  • 如果设置width,margin-left,margin-right中某个值为auto,而余下两个属性指定为特定值,那么设置为auto的属性UA会确定所需长度从而使元素框的宽度等于父元素的width。
  • 如果设置width,margin-left,margin-right都为非auto的某个值,此时总会把margin-right强制为auto。
  • 当不设置行内非替换元素如span的宽高时,即使它里面有文本内容,不管是在开发者工具看盒模型宽高还是用js获取宽高都为auto。而块级非替换元素不设置宽高里面有文本内容就可以获取具体像素宽高值。

margin: 0 auto 为啥可以居中 因为他的父元素的width始终等于子元素所有之和这个做限制着,而行级元素0 auto就不行因为一行中不止span一个没有父元素宽度限制

注意块级元素设margin:30px,其实相当于30 auto 30 30 因为要保证父元素的内容充斥着子元素所有之和。除非将块级元素设置为行内块级元素,这才可以30 30 30 30

当将元素margin-top,left设置为负数后是content在向上,左移动,margin-top,left的位置并不动

圣杯布局:设置为浮动是必要的,因为要margin为负转到前一个后面。right是跟着left移动的,但是right只移动left的width(+border+padding)这么宽,此时恰好left的margin-left和margin-right相逢,如果再继续左移的话,margin-right继续向左移超越maring-left的那条线位置。

当left拉回来了,但会覆盖middle内容的左端,要把middle内容拉出来,方法(1)所以在外围container加上 padding:0 220px 0 200px

方法二(2)或给middle添加box-sizing:border-box 设padding-left:220px这样也可以将内容拉过来。但是这样会使middle在底层,left和right在其上方 和双飞翼的效果类似(若设双飞翼的子元素的padding)

同理right

注意设置为relative是有原因的,若设成absolute,因为浮动和决定定位不能同时用,同时用会优先绝对定位。因为margin-left=100%作用下,看不见left了

参考:http://www.cnblogs.com/imwtr/p/4441741.html

https://segmentfault.com/q/1010000002709305

http://www.cnblogs.com/lyzg/p/5160570.html

一些常用css技巧的为什么(一)我所理解的margin的更多相关文章

  1. 一些常用css技巧的为什么(二)我所理解的line-height

    要用到的基本术语和概念: 替换元素:用作为其他内容占位符的一个元素,或说替换元素内容的部分并非由文档内容直接表示.比如img元素它由文档本身之外的一个图像来替换,比如input元素要由一个单选按钮,复 ...

  2. 常用CSS技巧资料收集

    1.重置浏览器的字体大小  重置浏览器的默认值 ,然后重设浏览器的字体大小你可以使用雅虎的用户界面重置的CSS方案 ,如果你不想下载9MB的文件,代码如下: body,div,dl,dt,dd,ul, ...

  3. 常用CSS Reset汇总

    什么是Css Reset呢? 在 HTML标签在浏览器里有默认的样式,不同浏览器的默认样式之间也会有差别.在切换页面的时候,浏览器的默认样式往往会给我们带来麻烦,影响开发效率.所以解决的方法就是一开始 ...

  4. 常用前端布局,CSS技巧介绍

    常用前端布局,CSS技巧介绍 对前端常用布局的整理总结,并对其性能优劣,兼容等情况进行介绍 css常用技巧之可变大小正方形的绘制 1:若通过设置width为百分比的方式,则高度不能通过百分比来控制. ...

  5. Css常用的技巧

    一.使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.  具体内容请浏览:CSS常用缩写语法 二.明确定义单位,除非值为0. 忘记定义尺寸的单位是CSS新手普遍的错误.在HTML中 ...

  6. 一些常用的 CSS 技巧和知识点

    作为一名前端工程师,CSS 是必备技能之一,然而在日常开发中,总有那么些时候,面对着炫酷的效果图,脑子里的 CSS 属性却一片空白,于是只能借助搜索引擎,在一堆复杂的介绍中找到需要的内容复制粘贴.有没 ...

  7. html5基础的常用的技巧

    html5基础的常用的技巧 1. 新的Doctype声明 XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明. <!DOCTYPE html PUBLIC &quo ...

  8. apache环境.htaccess设置301跳转及常用.htaccess技巧整理

    apache环境.htaccess设置301跳转及常用.htaccess技巧整理 无论是Nginx,还是Apache都各自有优势,对于我们普通用户而言基本上也没有多大的区别.在虚拟主机环境中,基本上都 ...

  9. 学无止境的CSS(xHTML+CSS技巧教程资源大全)

    本文里面收集一些有关CSS的技巧.教程.工具和观点等,其中一些你也许早就运用的炉火纯青,也可能有的你听都没听说过.不管是新手还是高手,大家都继续学习吧. 一,Web 标准 要玩游戏,就得先了解规则.要 ...

随机推荐

  1. Android语音搜索

    前言 在现有的软件的搜索框中基本上都会加上语音搜索的图标,以方便用户输入.我们xxxx的搜索框其实也可以借鉴这样的输入方式,提高用户体验.语音识别有3种方式实现①使用intent调用语音识别程序;②通 ...

  2. AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)

    AutoCompleteTextView具有输入提示的功能,但是它的这种提示不适合对股票列表的过滤,如果你玩过股票软件,就会知道只要输入股票名称的首字母或股票代码就会出现符合匹配的股票,这种过滤怎么实 ...

  3. nie题目-游戏排行榜设计

    一个mmorpg游戏,玩家众多,需要对玩家战斗力进行排行,并且战斗力变化时需要及时刷新.需要设计一个这样的排行榜. 关于海量数据排行榜的做法,云风在他的博客里给过思路,谈谈陌陌争霸在数据库方面踩过的坑 ...

  4. c++ 设计模式9 (Abstract Factory 抽象工厂模式)

    5.2 抽象工厂模式 动机:在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时,由于需求的变化,往往存在更多系列对象的创建工作. 代码示例: 实现利用数据库的业务逻辑,支持多数据库(Sq ...

  5. C# 之 System.Diagnostics.Process.Start的妙用

    经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 如何做呢? 方法:使用S ...

  6. Java_Web使用简单的批处理操作

    之前进行Web开发的时候使用的是myeclipse,但只用过的人都知道,由于其插件太多,而且有很多插件的功能根本就接触不到.所以导致一旦工程稍微大一点就会很卡,虽然之前也对其进行优化过,但还是觉得不太 ...

  7. Access to the path '' is denied.解决方案

    在本地测试正常,但一上传到服务器上的时候,那个就提示Access to the path ‘路径’ is denied.我在网上找了很多资料,最后终于解决了,原来是因为在该文件的上级文件夹没有修改权限 ...

  8. 如何写出好的Java代码?

    1. 优雅需要付出代价.从短期利益来看,对某个问题提出优雅的解决方法,似乎可能花你更多的时间.但当它终于能够正确执行并可轻易套用于新案例中,不需要花上数以时计,甚至以天计或以月计的辛苦代价时,你会看得 ...

  9. Android 高级UI设计笔记10:瀑布流控件PinterestLikeAdapterView的使用

    1. 首先我们看看瀑布流的效果,如下: 2. 今天要介绍的瀑布流控件是:PinterestLikeAdapterView 项目地址:https://github.com/GDG-Korea/Pinte ...

  10. [经典算法] 排列组合-N元素集合的所有子集(一)

    题目说明: 给定一组数字或符号,产生所有可能的集合(包括空集合),例如给定1 2 3,则可能的集合为:{}.{1}.{1,2}.{1,2,3}.{1,3}.{2}.{2,3}.{3}. 题目解析: 如 ...