此文根据Steven Bradley的《How Well Do You Understand CSS Positioning?》所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处还请同行朋友指点。

当人们刚接触布局的时候都比较倾向于使用定位的方式。因为定位的概念看起来好像比较容易掌握。表面上你确切地指定了一个块元素所处的位置那么它就会坐落于那里。可是定位比你刚看到的时候要稍微复杂一点。对于定位来说,有一些东西会绊倒新手,所以在它成为你的惯用技巧前你需要掌握它们。

一旦你更深入地了解了它是怎么运作的,你就能够做出一些更棒的事情来。

CSS盒模型和定位的类型

为了搞清楚定位首先你得了解CSS盒模型。在上一句中的链接是我写在InstantShift 中的一篇关于盒模型的文章。我在那篇文章做了详细的讲解并会在这篇文章中做一个快速的总结。

在CSS中,每一个元素都由一个矩形盒子所包含。每一个盒子都会具有一个内容区,内容区被一个内边距所包裹,内边距外是盒子的边框,并且在边框之外会有一个外边距用于与其他盒子分隔开来。这些你可以从下面这张图片看到。

aaarticlea/jpeg;base64,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UKQSzAAAg1zngf4++DPiDd6Ta6TqsDXWpaQusxwPcwl4oicNHIqyEiRCGDLyF2tzxUOtTTUXJXZ0xy3GzpyrRoy5YpNuzsk02n6NJs9FormbL4neDtT0O61qz8WaHd6PayrDcahBqUL28MjFQqPIG2qxLqACcksPUVFpXxZ8D67qFnYab4y8P6hfXoLWtraapBLLOBuBKKrktjY3TP3T6Gn7Wnp7y18zP6hi7SfsZe7v7r00vrpppr6HV0UUVqcIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFeCX/w08WahN4t0BvD+kx6ZrniSPWIvEC3QEkEaPE4Z4gu55lMJCYYDDKCRtOfe6Kwq0Y1rKT/pnrZfmVXLpSlSim3be+ji001ZrVNdbrumeI6F8MvEVvd+GdDudJ02307w/rk2sjxDDcZkuwxlOBCFDLJJ55VyzEfKxy2RWDp3wi8XX/gXQtAvNLtbKVPBsfhy5ee5SaFJoHG3eF5aKYRgHGSok5U4Ir6Morn+pU2rXf8AwNPLy9T1lxLjIvmUY3uns/ivJ3+Lq5NtbXSskrp+G6r8OPEnjbWJ9cvdBsPD0jPodsdOS7FwZ4bTU4ruWR2CquFQOqLgk/NnGQK2Y/hdfQytLHZ2iSN4z/t5nUqCYORuJx975jx15PrXrNFWsLC93v8A1/mc8s+xTj7OKSitkr6aRVtW29IrdsKKKK7D5sKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9k=" alt="" />

定位模式规定了一个盒子在总体的布局上应该处于什么位置以及对周围的盒子会有什么影响。定位模式包括了常规文档流,浮动,和几种类型的 position 定位的元素。

CSS position 属性可以取5种值:

  • position: absolute
  • position: relative
  • position: fixed
  • position: static
  • position: inherit

我会在下面对前三个值进行详细的阐述并简单地讲解一下最后两个值。

static 是 position 默认的属性值。任何应用了 position:static 的元素都处于常规文档流中。它处于什么位置以及它如何影响周边的元素都是由盒模型所决定的。

一个 static 定位的元素会忽略所有 top,right,bottom,left 以及 z-index 属性所声明的值。为了让你的元素能使用任何的这些属性,你需要先为它的 position 属性应用这三个值的其中之一: absolute,relative,fixed

position 值为 inherit 的元素和其他所有属性的继承值一样,元素只是简单地应用了与父元素一样的 position 值。

绝对定位(Absolute Positioning)

绝对定位的元素会完全地从常规文档流中脱离。对于包围它的元素而言,它会将该绝对定位元素视为不存在。就好像display 属性被设为 none 一样。如果你想要保持它所占有的位置而不被其他元素所填充,那么你需要使用其他的定位方式。

你可以通过 top, right, bottom, 和 left 四个属性来设置绝对定位元素的位置。但你通常只会设置它们其中的两个,top 或者 bottom,以及 left 或者 right。默认地它们的值都为 auto。

弄明白绝对定位的关键是知道它的起点在哪里。如果 top 被设置为20px那么你要知道这20px是从哪里开始计算的。

一个绝对定位的元素的起点位置是相对于它的第一个 position 值不为 static 的父元素而言的。如果在它的父元素链上没有满足条件的父元素,那么绝对定位元素则会相对于文档窗口来进行定位。哈!

关于“相对”这个概念你或许有点迷惑,尤其是还有一个叫相对定位的东西,这是我们还没有讲到的。

当你在一个元素的样式上设置 position:absolute 意味着需要考虑父元素,并且如果父元素的 position 值不为 static ,那么绝对定位元素的起点为父元素的左上角位置。

如果父元素没有应用除了 static 以外的 position 定位,那么它会检查父元素的父元素是否有应用非 static 定位。如果该元素应用了定位,那么它的左上角便会成为绝对元素的起点位置。如果没有则会继续向上遍历DOM直到找到一个定位元素或者寻找失败以到达最外层的浏览器窗口。

相对定位(Relative Positioning)

相对定位的元素也是根据 top, right, bottom, 和 left 四个属性来决定自己的位置的。但只是相对于它们原来所处于的位置进行移动。在某种意义上来说,为元素设置相对定位和为元素添加 margin 有点相似,但也有一个重要的区别。区别就是在围绕在相对定位元素附近的元素会忽略相对定位元素的移动。

我们可以把它看做是一张图片的重像从真实的图片的位置开始进行了一点移动。它原始图片所占据的位置仍然保留,但我们已经没法再看到它,只能看到它的重像。这样就让元素之间可以进行位置的重叠,因为相对定位元素能够移动到其他元素所占据的空间中。

相对定位元素离开了正常文档流,但仍然影响着围绕着它的元素。那些元素表现地就好像这个相对定位元素仍然在正常文档流当中。

我们无需再追问这个相对的位置是在哪里。因为这个相对位置很显然是正常的文档流。相对定位有点儿像为元素添加了 margin ,对相邻元素来说却像是什么都没发生过。但实际上并没有增加任何的 margin 。

固定定位(Fixed Positioning)

固定定位的行为类似于绝对定位,但也有一些不同的地方。

首先,固定定位总是相对于浏览器窗口来进行定位的,并且通过哪些属性的 top, right, bottom, 和 left 属性来决定其位置。它抛弃了它的父元素,它就是定位中表现地有点儿反叛。。

第二个不同点是其在名字上是继承的。固定定位的元素是固定的。它们并不随着页面的滚动而移动。你可以告诉元素它所处的位置并永远不再移动。噢~好像还挺乖巧的。

在某种意义上说固定定位元素有点儿类似固定的背景图片,只不过它的外层容器块总是浏览器窗口罢了。如果你在 body 中设置一个背景图片那么它与一个固定定位的元素的行为时非常像的,只不过在位置上的精度会略少一些。

背景图片也不能改变其在第三个维度的大小,也因而带来了 z-index 属性。

打破了平面的 Z-Index

这个页面是一个二维平面。它具有宽度和高度。我们活在一个用 z-index 作为其深度的三维的世界当中。这个额外的维度能够穿越一个平面。

aaarticlea/jpeg;base64,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" alt="" />

由上图可知,高的 z-index 位于低的 z-index 的上面并朝页面的上方运动。相反地,一个低的 z-index 在高的 z-index 的下面并朝页面下方运动。

没有的 z-index 的话,定位元素会有点儿麻烦。因为 z-index 能让一个定位元素位于另一个元素的上方或者下方,这或许能让你做出点创造性的东西。所有的元素的默认的 z-index 值都为0,并且我们可以对 z-index 使用负值。

z-index 实际上比我在这里描述的要更加地复杂,但细节写在了另一篇文章里。现在只需要记住这个额外维度的基本概念以及它的堆叠顺序,另外还要记住只有定位元素才能应用 z-index属性。

定位的问题

对于定位元素来说由几个比较常见的问题,都值得我们好好了解。

1.你不能在同一个属性当中应用定位属性和浮动。因为对使用什么样的定位方案来说两者的指令时相冲突的。如果你把两个属性都添加到一个相同的元素上,那么就期望在CSS中较后的那个属性时你想要使用的吧

2.Margin 不会在绝对元素上折叠。假设你具有一个 margin-bottom 为20px的段落。在段落后面是一个具有30px的 margin-top 的图片。那么段落和图片之间的空间不会是50px(20px+30px)而是30px(30px > 20px)。这就是所谓的 margin-collapse,两个 margin 会合并(折叠)成一个 margin。

绝对定位元素不会像那样进行 margin 的折叠。这会使它们跟预期的不一样。

3.IE在 Z-index 上有一些BUG。在IE 6中 select 元素总是处于堆叠层级的最上方而不管它的 z-index 和其他元素的 z-index 是多少。

IE 6和IE 7在堆叠层级上又有另外一个问题。IE 6由最外层的定位元素的层级来决定哪一组的元素处于层级的最上面,而不是每一个单独的元素自身的层级决定。

1 <div style="z-index: ">
2 <p style="z-index: 1"></p>
3 </div>
4 <img style="z-index: " />

对上面这段结构,你会预料段落元素处于堆叠层级的最上方。因为它具有最大的 z-index 值。但在IE 6和IE 7中,图片为处于段落的上方。因为 img 具有比 div 更加高的 z-index 层级。因此它会位于所有 div 的子元素的上方。

总结

一个元素上所设置的位置属性会根据其中的一种CSS定位模式来运作。你可以为定位元素设置 absolute, relative, fixed, static (默认), 和 inherit 中的其中一个值。

定位模式和CSS定位元素,定义了一个盒子在布局中应该处于什么位置以及围绕它的元素会受到定位元素带来的影响。

z-index 属性只能被应用与定位元素上。它为页面增加了第三个维度并设置了元素的层级上的顺序。

定位属性看起来好像很好理解,但它的运作与它在表面所看到的有点儿不一样。你可能会觉得的是相对定位更加类似绝对定位。当在做布局设计的时候你通常会想使用浮动并在指定的元素上应用定位来打破布局。

译者手语:整个翻译依照原文线路进行,并在翻译过程略加了个人对技术的理解。如果翻译有不对之处,还烦请同行朋友指点。谢谢!

白牙

互联网开发者,关注Web应用开发,前端交互设计。个人博客新浪微博欢迎交流探讨,愿与大家共同进步。

如需转载烦请注明出处:

英文原文:http://www.vanseodesign.com/css/css-positioning/

中文译文:http://www.cnblogs.com/WhiteCusp/p/3365543.html

 
 
分类: Html/CSS

DotNetZip封装类

DotnetZip是一个开源类库,支持.NET的任何语言,可很方便的创建,读取,和更新zip文件。而且还可以使用在.NETCompact Framework中。下载地址在这里:http://dotnetzip.codeplex.com/下载到的包里有很多个dll文件,一般引用Ionic.Zip.dll就可以:然后引用这个命名空间:using Ionic.Zip; 以下是我自己封装的一个类: 1 /// <summary>
/// Zip操作基于 DotNetZip 的封装
/// </summary>
public static class ZipUtils
{
/// <summary>
/// 得到指定的输入流的ZIP压缩流对象【原有流对象不会改变】
/// </summary>
/// <param name="sourceStream"></param>
/// <returns></returns>
public static Stream ZipCompress(Stream sourceStream, string entryName = "zip")
{
MemoryStream compressedStream = new MemoryStream();
if (sourceStream != null)
{
long sourceOldPosition = 0;
try
{
sourceOldPosition = sourceStream.Position;
sourceStream.Position = 0;
using (ZipFile zip = new ZipFile())
{
zip.AddEntry(entryName, sourceStream);
zip.Save(compressedStream);
compressedStream.Position = 0;
}
}
catch
{
}
finally
{
try
{
sourceStream.Position = sourceOldPosition;
}
catch
{
}
}
}
return compressedStream;
}

/// <summary>
/// 得到指定的字节数组的ZIP解压流对象
/// 当前方法仅适用于只有一个压缩文件的压缩包,即方法内只取压缩包中的第一个压缩文件
/// </summary>
/// <param name="sourceStream"></param>
/// <returns></returns>
public static Stream ZipDecompress(byte[] data)
{
Stream decompressedStream = new MemoryStream();
if (data != null)
{
try
{
MemoryStream dataStream = new MemoryStream(data);
using (ZipFile zip = ZipFile.Read(dataStream))
{
if (zip.Entries.Count > 0)
{
zip.Entries.First().Extract(decompressedStream);
// Extract方法中会操作ms,后续使用时必须先将Stream位置归零,否则会导致后续读取不到任何数据
// 返回该Stream对象之前进行一次位置归零动作
decompressedStream.Position = 0;
}
}
}
catch
{
}
}
return decompressedStream;
}

/// <summary>
/// 压缩ZIP文件
/// 支持多文件和多目录,或是多文件和多目录一起压缩
/// </summary>
/// <param name="list">待压缩的文件或目录集合</param>
/// <param name="strZipName">压缩后的文件名</param>
/// <param name="IsDirStruct">是否按目录结构压缩</param>
/// <returns>成功:true/失败:false</returns>
public static bool CompressMulti(List<string> list, string strZipName, bool IsDirStruct)
{
try
{
using (ZipFile zip = new ZipFile(Encoding.Default))//设置编码,解决压缩文件时中文乱码
{
foreach (string path in list)
{
string fileName = Path.GetFileName(path);//取目录名称
//如果是目录
if (Directory.Exists(path))
{
if (IsDirStruct)//按目录结构压缩
{
zip.AddDirectory(path, fileName);
}
else//目录下的文件都压缩到Zip的根目录
{
zip.AddDirectory(path);
}
}
if (File.Exists(path))//如果是文件
{
zip.AddFile(path);
}
}
zip.Save(strZipName);//压缩
return true;
}
}
catch (Exception)
{
return false;
}
}

/// <summary>
/// 解压ZIP文件
/// </summary>
/// <param name="strZipPath">待解压的ZIP文件</param>
/// <param name="strUnZipPath">解压的目录</param>
/// <param name="overWrite">是否覆盖</param>
/// <returns>成功:true/失败:false</returns>
public static bool Decompression(string strZipPath, string strUnZipPath, bool overWrite)
{
try
{
ReadOptions options = new ReadOptions();
options.Encoding = Encoding.Default;//设置编码,解决解压文件时中文乱码
using (ZipFile zip = ZipFile.Read(strZipPath, options))
{
foreach (ZipEntry entry in zip)
{
if (string.IsNullOrEmpty(strUnZipPath))
{
strUnZipPath = strZipPath.Split('.').First();
}
if (overWrite)
{
entry.Extract(strUnZipPath, ExtractExistingFileAction.OverwriteSilently);//解压文件,如果已存在就覆盖
}
else
{
entry.Extract(strUnZipPath, ExtractExistingFileAction.DoNotOverwrite);//解压文件,如果已存在不覆盖
}
}
return true;
}
}
catch (Exception)
{
return false;
}
}

} 使用方法:1.压缩文件 List<string> list = new List<string>();
list.Add(@"D:\Test\ss");
list.Add(@"D:\Test\test1.jpg");
list.Add(@"D:\公司文件.txt");
list.Add(@"D:\Test\ss.xml");
bool isSuc =ZipUtils. CompressMulti(list, "D:\\Test2.zip",true); 2.解压文件 bool isSuc = ZipUtils.Decompression("D:\\Test\\Test1.zip", "D:\\Teest", true); 更详细的例子在这里: http://dotnetzip.codeplex.com/wikipage?title=Examples&referringTitle=Home

CSS盒模型和定位的类型的更多相关文章

  1. 什么是CSS盒模型及利用CSS对HTML元素进行定位的实现(含h5/css3新增属性)

    大家好,很高兴又跟大家见面了!本周更新博主将给大家带来更精彩的HTML5技术分享,通过本周的学习,可实现大部分的网页制作.以下为本次更新内容. 第四章 css盒模型 <!DOCTYPE html ...

  2. 笔记《精通css》第3章 盒模型,定位,浮动,清理

    第3章    盒模型,定位,浮动,清理 1.盒模型用到的属性width,height,padding,border,margin 普通文档流的上下垂直margin会叠加 2.块级框 与 行内框, 利用 ...

  3. 大前端学习笔记整理【一】CSS盒模型与基于盒模型的6种元素居中方案

    概览 CSS盒模型,规定了元素框来处理元素的 内容.内边距.边框和外边距的方式 元素部分是指内容部分,也是最实际的内容,包围内容的称之为内边距,内边距外围是边框,边框外围就是外边距:且外边距是透明的, ...

  4. 第七十三节,css盒模型

    css盒模型 学习要点: 1.元素尺寸 2.元素内边距 3.元素外边距 4.处理溢出 本章主要探讨HTML5中CSS盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素尺寸 CSS盒模型中 ...

  5. CSS盒模型

    CSS盒模型是CSS 可视化格式化系统的基石,它是理解样式表如何工作的核心概念.盒模型用于元素定位和页面布局.元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘 ...

  6. 第 16 章 CSS 盒模型[下]

    学习要点: 1.元素可见性 2.元素盒类型 3.元素的浮动 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 盒模型,学习怎样了解元素的外观配置以及文档的整体布局. 一.元素可见性 使用 vis ...

  7. 尖刀出鞘的display常用属性及css盒模型深入研究

    一:diplay:inline-block 含义:指元素创建了一个行级的块级元素,该元素内部(内容)被格式化成一个块级元素,同时元素本身则被格式化成一个行内元素.更简单的说就是说inline-bloc ...

  8. 从零开始学习前端开发 — 3、CSS盒模型

    ★  css盒模型是css的基石,每个html标签都可以看作是一个盒模型. css盒模型是由内容(content),补白或填充(padding),边框(border),外边距(margin)四部分组成 ...

  9. CSS盒模型的深度思考及BFC

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 题目:谈一谈你对CSS盒模型的认识 专业的面试,一定会问 CSS 盒模型 ...

随机推荐

  1. shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、功能、select

    1.expr计算整数变量值 s=`expr 2 + 3` 运算符号和參数之间要有空格分开: 2.let命令 let s=(2+3)*4 echo $s 3.for语句 for 变量 in 列表 do ...

  2. C# 中的常用正则表达式总结

    这是我发了不少时间整理的C# 的正则表达式 ,新手朋友注意一定要手册一下哦,这样可以节省很多写代码的时间,中国自学编程网为新手朋友整理发布. 只能输入数字:"^[0-9]*$". ...

  3. Windows RPC

    转载 Windows RPC Demo实现 本文参考并整理以下相关文章 1. <远程过程调用> -百度百科 2. <RPC 编程> -http://www.ibm.com/de ...

  4. linux_windows下配置tomcat区别 ,不同子域名映射不同 项目

    windows下 均为修改tomcat/bin/server.xml 在最后 替换 注意 docBase / <Realm className="org.apache.catalina ...

  5. 教你一步一步部署.net免费空间OpenShift系列之四------绑定域名、使用CDN加速

    很抱歉这几天没有时间,有人问我怎么绑定域名的问题也没有答复,下面进入正题,惊闻ASP.Net要开源了,难道.Net春天要来了?不废话,上回书说,部署完毕ASP.Net网站后,直接访问不能访问(嗯,众所 ...

  6. JS对文档进行操作

    对文档进行操作   创建节点 追加节点 删除节点 任务及例子 总结 对DOM的修改是,构建动态网页的关键.使用下面列举的方法,我们可以创建新的网页并且动态进行更改. 更多的DOM操作方法请查 DOM1 ...

  7. linux下mysql的远程连接

    在服务器上安装mysql后,想使用本地的mysql客户端连接数据库时,提示不允许连接,比较郁闷,找到了这篇文章解决了我的问题: 内容如下: 本地计算机ip:192.168.1.100远程计算机ip:1 ...

  8. Light OJ 1316 A Wedding Party 最短路+状态压缩DP

    题目来源:Light OJ 1316 1316 - A Wedding Party 题意:和HDU 4284 差点儿相同 有一些商店 从起点到终点在走过尽量多商店的情况下求最短路 思路:首先预处理每两 ...

  9. libvlc media player in C# (part 1)

    原文 http://www.helyar.net/2009/libvlc-media-player-in-c/ There seems to be a massive misconception ab ...

  10. UC编程:通过fwrite()和write()比较标准库函数和系统调用的速度

    fwrte是C标准库中提供的函数,是对write函数的扩展与封装,write则是Unix系统提供的函数.按照常理来讲,系统调用肯定比使用库快的多,但是事实正好相反 Why?原因就在于缓冲的问题,fwi ...