<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Html on 轻语慕心</title>
    <link>https://muxin.io/tags/html/</link>
    <description>Recent content in Html on 轻语慕心</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Mon, 02 Jan 2017 20:55:43 +0000</lastBuildDate>
    <atom:link href="https://muxin.io/tags/html/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>HTML 中固定 footer 的方法</title>
      <link>https://muxin.io/posts/2017-01-02-html-footer-tips/</link>
      <pubDate>Mon, 02 Jan 2017 20:55:43 +0000</pubDate>
      <guid>https://muxin.io/posts/2017-01-02-html-footer-tips/</guid>
      <description>&lt;p&gt;有时在 Html 中我们需要固定底部的版权信息等内容，期望的展示方式是页面撑满浏览器，最下方是 footer 的内容。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;footer&lt;/span&gt;&amp;gt;版权所有&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;footer&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如到所示，我们希望的是&lt;code&gt;footer&lt;/code&gt;永远占据页面的最下方，而&lt;code&gt;content&lt;/code&gt;内容则填满页面的其他部分。&lt;/p&gt;
&lt;h2 id=&#34;想当然的方法&#34;&gt;想当然的方法&lt;/h2&gt;
&lt;p&gt;想当然的方法去实现，是直接将&lt;code&gt;div.main&lt;/code&gt;部分的&lt;code&gt;height&lt;/code&gt;设置为&lt;code&gt;100%&lt;/code&gt;，这样可以直接撑满页面，虽然在内容少的时候确实达到了我们想要的效果，但弊端也十分明显——在页面内容多于一页的时候，内容会展示不全，因为设置了固定的&lt;code&gt;height&lt;/code&gt;，所以内容并不会将&lt;code&gt;div.main&lt;/code&gt;进一步撑开。所以这样是不行的。&lt;/p&gt;
&lt;h2 id=&#34;使用min-height&#34;&gt;使用&lt;code&gt;min-height&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Html 中可以使用&lt;code&gt;min-height&lt;/code&gt;来指定内容高度。根据这个思路我们可以将&lt;code&gt;div.conent&lt;/code&gt;的&lt;code&gt;min-height&lt;/code&gt;设置为&lt;code&gt;80%&lt;/code&gt;，同时将&lt;code&gt;footer&lt;/code&gt;的&lt;code&gt;min-height&lt;/code&gt;设置为&lt;code&gt;20%&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;然而这个解决方案看起来很完美，实际上用起来的时候还是会有问题，原因如下：&lt;/p&gt;
&lt;p&gt;一个元素如果要指定&lt;code&gt;min-height&lt;/code&gt;，那么它的父元素必须指定&lt;code&gt;height&lt;/code&gt;，指定&lt;code&gt;min-height&lt;/code&gt;也无济于事。也就是说&lt;code&gt;div.main&lt;/code&gt;必须指定&lt;code&gt;height&lt;/code&gt;这一属性。然而还是那个&lt;code&gt;height&lt;/code&gt;不能自动变大的问题。&lt;/p&gt;
&lt;h2 id=&#34;最终方案使用position&#34;&gt;最终方案——使用&lt;code&gt;position&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;那么最终的解决方案应该怎样呢？答案是使用&lt;code&gt;position&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;先给出最终的Html和CSS代码：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;footer&lt;/span&gt;&amp;gt;版权所有&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;footer&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;min-height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;%&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;relative&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;padding-bottom&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;rem&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;footer&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;height&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;rem&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;position&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;absolute&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;bottom&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;首先将&lt;code&gt;div.main&lt;/code&gt;的最小高度设置为100%，随后将其位置指定为&lt;code&gt;relative&lt;/code&gt;；随后指定&lt;code&gt;footer&lt;/code&gt;的位置为&lt;code&gt;absolute&lt;/code&gt;，这样&lt;code&gt;footer&lt;/code&gt;会相对于上一个位置被指定为&lt;code&gt;relative&lt;/code&gt;的元素进行布局，随后&lt;code&gt;bottom: 0;&lt;/code&gt;将&lt;code&gt;footer&lt;/code&gt;设置在了&lt;code&gt;div.main&lt;/code&gt;的最下方。&lt;/p&gt;
&lt;p&gt;当然不要忘记了&lt;code&gt;div.main&lt;/code&gt;需要有一个&lt;code&gt;padding-bottom&lt;/code&gt;，大小等于&lt;code&gt;footer&lt;/code&gt;的高度，这样内容才不会错位。&lt;/p&gt;
&lt;p&gt;到此我们就实现了最完美的固定&lt;code&gt;footer&lt;/code&gt;的样式。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
