考虑以下2个cols html结构:
<div id="container">
<div class="left">some text</div>
<div class="right">some text</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#container { overflow: hidden; }
.left { float: left; width: 200px; background: red; }
.right { overflow: hidden; background: green; }
Run Code Online (Sandbox Code Playgroud)
jsFiddle中的相同代码 - http://jsfiddle.net/vny2H/
所以我们有2列.左栏宽度是固定的,右栏的宽度是液体.如果我们从html中删除左列,则右列会延伸到父级#container宽度的100%.
问题是:我们可以改变左右列的顺序吗?(我需要它用于SEO)
<div id="container">
<div class="right"></div>
<div class="left"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
谢谢.
有一种有趣的方法可以达到我想要的效果,但固定列变得不可移动.该方法基于负边际.http://jsfiddle.net/YsZNG/
HTML
<div id="container">
<div id="mainCol">
<div class="inner">
<p>Some text</p>
<p>Some text</p>
<p>Some text</p>
<p>Some text</p>
</div><!-- .inner end -->
</div><!-- .mainCol end -->
<div id="sideCol">
<p>Some text</p>
<p>Some text</p>
<p>Some text</p>
<p>Some text</p>
</div><!-- .sideCol end -->
</div><!-- #container end -->
Run Code Online (Sandbox Code Playgroud)
CSS
#container { overflow: hidden; width: 100%; }
#mainCol { float: right; width: 100%; margin: 0 0 0 -200px; }
#mainCol .inner { margin: 0 0 0 200px; background: #F63; }
#sideCol { float: left; width: 200px; background: #FCF; }
Run Code Online (Sandbox Code Playgroud)
所以我们有两种方式:
有没有第三种方法,当固定列可移动而液体是代码中的第一种?
@lnrbob建议半决定.主要想法 - 使用类似表格的div.http://jsfiddle.net/UmbBF/1/
HTML
<div id="container">
<div class="right">some text</div>
<div class="left">some text</div>
</div>
Run Code Online (Sandbox Code Playgroud)
СSS
#container { display: table; width: 100%; }
.right { display: table-cell; background: green; }
.left { display: table-cell; width: 200px; background: red; }
Run Code Online (Sandbox Code Playgroud)
当固定列放置在站点的右侧时,此方法是合适的.但如果我们需要它在左边 - 似乎不可能这样做.
考虑一下你之前标记的内容的语义,这几乎总会导致一个既有体面标记又对搜索引擎友好的解决方案.
例如,.right页面的主要内容,以及.left一些补充信息或导航?在这种情况下,将其标记为这样,搜索引擎将很好地按照您希望的方式对其进行解释.HTML5为此提供了许多元素:
<div id="container">
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="#">etc.</a></li>
</ul>
</nav>
<article>
<h1>My nice, juicy content</h1>
<p>Cool stuff, huh?!</p>
<article>
</div>
Run Code Online (Sandbox Code Playgroud)
或者您可以考虑<aside>或简单地补充内容<div role="supplementary">.
谷歌将很乐意抓住这一点,并认识到导航和实际内容之间的差异,源订单重要的想法不再像几年前那样适用于SEO.