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

  • 正常流: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. 【JavaScript】关于delete

    delete 只能删除属性,不能删除变量 比如 var m = "haha"; delete m; //false m = "haha";----->wi ...

  2. [Angular 2] Generate and Render Angular 2 Template Elements in a Component

    Angular 2 Components have templates, but you can also create templates inside of your templates usin ...

  3. 利用yum工具安装应用程序

    在安装gtk+编译环境的过程中,你会发现,RPM软件包之间的依赖关系非常复杂.在实际管理过程中,这种依赖关系可能会更加复杂.因此非常有必要寻找一种自动化安装工具,让安装工具自己处理这些关系复杂的依赖关 ...

  4. 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列

    出处 http://segmentfault.com/blog/exploring/ 本章讲解:1. LCS(最长公共子序列)O(n^2)的时间复杂度,O(n^2)的空间复杂度:2. 与之类似但不同的 ...

  5. Linux 的启动流程

    转载:http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 更多文档参见:http://pan.baidu.com/s/1hqo ...

  6. nmon的安装以及使用

    在做性能的时候都需要监控服务器的各项资源,这里使用的是nmon,小巧,而且比较好用,记录安装过程 在linux下创建nmon目录 方便放文件 mkdir /usr/local/nmon cd /usr ...

  7. 适配iOS9遇到的一些问题_Scheme白名单_ Bitcode及解决办法

    升级Xcode7 运行项目发现报错如下: 1.Scheme白名单问题 -canOpenURL: failed for URL: “weixin://app/wxdaae92a9cfe5d54c/” - ...

  8. CSS 之 控制图片与文字对齐

    文字旁边搭配图片时,发现图片比文字靠上,原来默认的情况是图片顶对齐而文字底对齐,通过设置css属性可以使得图片与文字对齐. 设置各对象的vertical-align属性,属性说明: baseline- ...

  9. 用HashSet的add方法谈hashcode和equals方法重写

    本文主要通过用HashSet的add方法讲一下hashCode和equals方法重写.错误的地方望指正. 1.了解HashSet的add方法 了解一个方法的好办法是看源码,所以先看源码 private ...

  10. C#面向对象(三)接口实现多态

    一.如何用接口实现多态? 1.定义一个接口. using System; using System.Collections.Generic; using System.Linq; using Syst ...