﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA学习之路-文章分类-Html专题</title><link>http://www.blogjava.net/joaquin25/category/27831.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 05 Dec 2007 20:18:52 GMT</lastBuildDate><pubDate>Wed, 05 Dec 2007 20:18:52 GMT</pubDate><ttl>60</ttl><item><title>css中padding、margin两个重要属性的详细介绍及举例说明</title><link>http://www.blogjava.net/joaquin25/articles/165543.html</link><dc:creator>joaquin25</dc:creator><author>joaquin25</author><pubDate>Wed, 05 Dec 2007 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/joaquin25/articles/165543.html</guid><wfw:comment>http://www.blogjava.net/joaquin25/comments/165543.html</wfw:comment><comments>http://www.blogjava.net/joaquin25/articles/165543.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joaquin25/comments/commentRss/165543.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joaquin25/services/trackbacks/165543.html</trackback:ping><description><![CDATA[<p>[转载]http://hi.baidu.com/5539326/blog/item/14543117915e5e034b90a7ec.html<br />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 本文将讲述HTML和CSS的关键—盒子模型(<em>Box model</em>). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css布局的关键.</p>
<p><strong>注</strong>: 为什么不翻译margin和padding? 原因一, 在汉语中并没有与之相对应的词语; 原因二: 即使有这样的词语, 由于在编写css代码时, 必须使用margin和padding, 如果我们总用汉语词语代替其来解释的话, 到了实际应用时容易混淆margin和padding的概念.</p>
<p>如果有一点Html基础的话, 就应该了解一些基本元素(<em>Element</em>), 如p, h1~h6, br, div, li, ul, img等. 如果将这些元素细分, 又可以分别归为顶级(<em>top-level</em>)元素,块级(<em>block-level</em>)元素和内联(<em>inline</em>)元素. </p>
<p>1. Block-level element: 指能够独立存在, 一般的块级元素之间以换行(如一个段落结束后另起一行)分隔. 常用的块级元素包括: p, h1~h6, div, ul等;</p>
<p>2. Inline element: 指依附其他块级元素存在, 紧接于被联元素之间显示, 而不换行. 常用的内联元素包括: img, span, li, br等;</p>
<p>3. Top-level element: 包括html, body, frameset, 表现如Block-level element, 属于高级块级元素.</p>
<p>块级元素是构成一个html的主要和关键元素, 而任意一个块级元素均可以用Box model来解释说明.</p>
<p><font color="#000000"><strong>Box Model</strong>: 任意一个块级元素均由content(内容), padding, background(包括背景颜色和图片), border(边框), margin五个部分组成. 立体图如下(Fig. 1):</font></p>
<p><img style="width: 488px; border-top-style: none; border-right-style: none; border-left-style: none; height: 459px; border-bottom-style: none" alt="j" src="http://www.youxingqu.com/img_up/attachments/200682315532216.jpg" /></p>
<p>该立体图引自:<a href="http://www.hicksdesign.co.uk/" target="_blank">http://www.hicksdesign.co.uk/</a> (Under the <a href="http://creativecommons.org/licenses/by/2.0/" target="_blank">Creative Commons License</a>)</p>
<p>平面图如下(Fig. 2):</p>
<p><img style="width: 380px; border-top-style: none; border-right-style: none; border-left-style: none; height: 380px; border-bottom-style: none" alt="j" src="http://www.youxingqu.com/img_up/attachments/200682315534446.jpg" /></p>
<p>根据以上两图, 相信大家对于Box model会有个直观的认识.</p>
<p>以下说明margin和padding属性:</p>
<p><strong>1. Margin</strong>: 包括margin-top, margin-right, margin-bottom, margin-left, 控制块级元素之间的距离, 它们是透明不可见的, 对于Fig. 2所示的上右下左margin值均为40px, 因此代码为:</p>
<p class="script">margin-top: 40px;<br />
margin-right: 40px;<br />
margin-bottom: 40px;<br />
margin-left: 40px;</p>
<p>根据上, 右, 下, 左的顺时针规则, 简写为</p>
<p class="script">margin: 40px 40px 40px 40px;</p>
<p>为便于记忆, 请参考下图:</p>
<p><img style="width: 200px; border-top-style: none; border-right-style: none; border-left-style: none; height: 200px; border-bottom-style: none" alt="j" src="http://www.youxingqu.com/img_up/attachments/200682315535485.jpg" /></p>
<p>当上下, 左右margin值分别一致, 可简写为:</p>
<p class="script">margin: 40px 40px;</p>
<p>前一个40px代表上下margin值, 后一个40px代表左右margin值. </p>
<p>当上下左右margin值均一致, 可简写为:</p>
<p class="script">margin: 40px;</p>
<p><strong>2. Padding</strong>: 包括padding-top, padding-right, padding-bottom, padding-left, 控制块级元素内部, content与border之间的距离, 其代码, 简写请参考margin属性的写法.</p>
<p>至此, 我们已经基本了解margin和padding属性的基本用法. 但是, 在实际应用中, 却总是发生一些让你琢磨不透的事, 而它们又或多或少的与margin有关. </p>
<p><strong>注</strong>: 当你想让两个元素的content在垂直方向(vertically)分隔时, 既可以选择padding-top/bottom, 也可以选择margin-top/bottom, 再此Jorux建议你尽量使用padding-top/bottom来达到你的目的, 这是因为css中存在Collapsing margins(折叠的margins)的现象.</p>
<p><strong>Collapsing margins</strong>: margins折叠现象只存在于临近或有从属关系的元素, 垂直方向的margin中. 文字说明可能让人费解, 下面用一个例子说明margin-collapsing现象.</p>
<p><strong><font color="#ff0000">例</font></strong>: 在html文件的&lt;body&gt;&lt;/body&gt;之间写入如下代码:</p>
<p class="script">&lt;div id=&#8221;ID1&#8243;&gt;<br />
&lt;h1 id=&#8221;ID2&#8243;&gt;Margins of ID1 and ID2 collapse vertically.&lt;br/&gt;元素ID1与ID2的margins在垂直方向折叠.&lt;/h1&gt;<br />
&lt;/div&gt;</p>
<p>在与其外联的css文件中写入:</p>
<p class="script">* {<br />
padding:0;<br />
margin:0;<br />
}<br />
#ID1 {<br />
background-color: #333;<br />
color: #FFF;<br />
margin-top: 10px;<br />
margin-bottom: 10px;<br />
}<br />
#ID2 {<br />
font: normal 14px/1.5 Verdana, sans-serif;<br />
margin-top: 30px;<br />
margin-bottom: 30px;<br />
border: 1px solid #F00;<br />
}</p>
<p>代码解释:</p>
<p>1. 在html写入的代码表示, 在html中插入id分别为ID1和ID2的两个块级元素div, h1;</p>
<p>2. *{padding:0; margin:0;}: 使浏览器默认的元素padding和margin值均归零;</p>
<p>3. #ID1{&#8230;}: 使id为ID1的元素div的背景颜色为#333, 字体颜色为#FFF, margin-top/bottom为10px;</p>
<p>4. #ID2{&#8230;}: 使id为ID2的元素h1的字体大小为14px, verdana字体, 行高为字体高的150%, 正常粗细. margin-top/bottom为30px, 边框为1px宽, 红色实线.</p>
<p>依据以上解释, 我们应该得到如下效果(Fig. 3):</p>
<p><img style="width: 400px; height: 128px" alt="j" src="http://www.youxingqu.com/img_up/attachments/200682315536794.jpg" /></p>
<p>即ID1的margin-top/bottom=ab=ef=10px;</p>
<p>ID2的margin-top/bottom=bc=de=30px;</p>
<p>但用浏览器打开html文件, 却得到<a href="http://jorux.com/work/if-you-love-css/example4.htm">Example4</a>的效果, 如下图(Fig. 4):</p>
<p><img style="width: 400px; height: 108px" alt="j" src="http://www.youxingqu.com/img_up/attachments/200682315537637.jpg" /></p>
<p>即ab=cd=30px, ID1的margin-top/bottom=10px被<strong>折叠</strong>了, 而且ID1应有的margin黑色背景也一同被折叠消失了.</p>
<p><strong>为什么会折叠</strong>: 造成以上现象的原因是, 我们在css中并没有声明id为ID1的元素div的height(高), 因此它的高便被设为auto(自动)了. 一旦其值被设为auto, 那么浏览器就会认为它的高为子元素ID2的border-top到border-bottom之间的距离, 即Fig. 4中bc的长度, 所以子元素ID2的margin-top/bottom(30px)就伸出到了父元素ID1之外, 出现了Fig. 4中ab与cd之间的空白区域. 因此父元素ID1的margin-top/bottom因子元素的&#8221;红杏出墙&#8221;而被折叠消失了.</p>
<p><strong>如何解决折叠问题</strong>: 可能大家最初想到的办法就是根据折叠发生的原因—auto, 来解决问题. 但是, 在实际操作中, 某些元素如div, h1, p等, 我们是不可能预先知道它的高是多少的, 因此在css文件中是不能常规通过声明元素的高来解决折叠问题.</p>
<p>我们需要在css文件中加入如下代码(红色部分):</p>
<p class="script">#ID1 {<br />
background-color: #333;<br />
color: #FFF;<br />
margin-top: 10px;<br />
margin-bottom: 10px;<br />
<font color="#ff0000">padding-top:1px;<br />
padding-bottom:1px;<br />
</font>}</p>
<p>或是：</p>
<p class="script">#ID1 {<br />
background-color: #333;<br />
color: #FFF;<br />
margin-top: 10px;<br />
margin-bottom: 10px;<br />
<font color="#ff0000">border-top:1px solid #333;<br />
border-bottom:1px solid #333;</font><br />
}</p>
<p>通过增加以上代码, 便可使浏览器重新计算ID1的高, 使其为子元素ID2的margin-top/bottom外缘(outer top/bottom)之间的距离, 即Fig. 3中be的距离.<br />
</p>
 <img src ="http://www.blogjava.net/joaquin25/aggbug/165543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joaquin25/" target="_blank">joaquin25</a> 2007-12-05 15:57 <a href="http://www.blogjava.net/joaquin25/articles/165543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML相对路径(Relative Path)和绝对路径(Absolute Path)</title><link>http://www.blogjava.net/joaquin25/articles/165216.html</link><dc:creator>joaquin25</dc:creator><author>joaquin25</author><pubDate>Tue, 04 Dec 2007 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/joaquin25/articles/165216.html</guid><wfw:comment>http://www.blogjava.net/joaquin25/comments/165216.html</wfw:comment><comments>http://www.blogjava.net/joaquin25/articles/165216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joaquin25/comments/commentRss/165216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joaquin25/services/trackbacks/165216.html</trackback:ping><description><![CDATA[<p>[转载]<br />
<br />
html超链接的代码应该这样写：/index.html。假设你在www根目录下建了一个目录叫html。</p>
<p>HTML初学者会经常遇到这样一个问题，如何正确引用一个文件。比如，怎样在一个HTML网页中引用另外一个HTML网页作为超链接(hyperlink)？怎样在一个网页中插入一张图片？......</p>
<p>(相关教程：HTML超链接；HTML图片)</p>
<p>如果你在引用文件时(如加入超链接，或者插入图片等)，使用了错误的文件路径，就会导致引用失效(无法浏览链接文件，或无法显示插入的图片等)。</p>
<p>为了避免这些错误，正确地引用文件，我们需要学习一下HTML路径。</p>
<p>HTML有2种路径的写法：相对路径和绝对路径。</p>
<p>HTML相对路径(Relative Path)<br />
同一个目录的文件引用<br />
如果源文件和引用文件在同一个目录里，直接写引用文件名即可。</p>
<p>我们现在建一个源文件info.html，在info.html里要引用index.html文件作为超链接。</p>
<p>html路径是：c:\Inetpub\wwwroot\sites\.</p>
<p>假设info.html路径是：c:\Inetpub\wwwroot\sites\blabla\info.html</p>
<p>假设index.html路径是：c:\Inetpub\wwwroot\sites\blabla\index.html</p>
<p>在info.html加入index.html超链接的代码应该这样写：</p>
<p>&lt;a href = "index.html"&gt;index.html&lt;/a&gt;</p>
<p>如何表示上级目录<br />
HTML初学者会经常遇到这样一个问题，</p>
<p>../表示源文件所在目录的上一级目录，../../表示源文件所在目录的上上级目录，以此类推。</p>
<p>假设info.html路径是：c:\Inetpub\wwwroot\sites\blabla\info.html</p>
<p>假设index.html路径是：c:\Inetpub\wwwroot\sites\index.html</p>
<p>html路径是：c:\Inetpub\wwwroot.</p>
<p>在info.html加入index.html超链接的代码应该这样写：</p>
<p>&lt;a href = "../index.html"&gt;index.html&lt;/a&gt;</p>
<p>假设info.html路径是：c:\Inetpub\wwwroot\sites\blabla\info.html</p>
<p>假设index.html路径是：c:\Inetpub\wwwroot\index.html</p>
<p>在info.html加入index.html超链接的代码应该这样写：</p>
<p>&lt;a href = "../../index.html"&gt;index.html&lt;/a&gt;</p>
<p>假设info.html路径是：c:\Inetpub\wwwroot\sites\blabla\info.html</p>
<p>假设index.html路径是：c:\Inetpub\wwwroot\sites\wowstory\index.html</p>
<p>在info.html加入index.html超链接的代码应该这样写：</p>
<p>&lt;a href = "../wowstory/index.html"&gt;index.html&lt;/a&gt;</p>
<p>如何表示下级目录<br />
//www.blabla.cn/html_tutorials.</p>
<p>引用下级目录的文件，直接写下级目录文件的路径即可。</p>
<p>假设info.html路径是：c:\Inetpub\wwwroot\sites\blabla\info.html</p>
<p>假设index.html路径是：c:\Inetpub\wwwroot\sites\blabla\html\index.html</p>
<p>在info.html加入index.html超链接的代码应该这样写：</p>
<p>&lt;a href = "html/index.html"&gt;index.html&lt;/a&gt;</p>
<p>假设info.html路径是：c:\Inetpub\wwwroot\sites\blabla\info.html</p>
<p>假设index.html路径是：c:\Inetpub\wwwroot\sites\blabla\html\tutorials\index.html</p>
<p>在info.html加入index.html超链接的代码应该这样写：</p>
<p>&lt;a href = "html/tutorials/index.html"&gt;index.html&lt;/a&gt;</p>
<p>HTML绝对路径(Absolute Path)<br />
HTML绝对路径(absolute path)指带域名的文件的完整路径。</p>
<p>假设你注册了域名www.blabla.cn，并申请了虚拟主机，你的虚拟主机提供商会给你一个目录，比如www，这个www就是你网站的根目录。</p>
<p>假设你在www根目录下放了一个文件index.html，这个文件的绝对路径就是： http://www.blabla.cn/index.html。</p>
<p>假设你在www根目录下建了一个目录叫html_tutorials，然后在该目录下放了一个文件index.html，这个文件的绝对路径就是http://www.blabla.cn/html_tutorials/index.html。<br />
</p>
 <img src ="http://www.blogjava.net/joaquin25/aggbug/165216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joaquin25/" target="_blank">joaquin25</a> 2007-12-04 15:32 <a href="http://www.blogjava.net/joaquin25/articles/165216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>