繁体   English   中英

XHTML CSS 3列布局

[英]XHTML CSS 3 Column Layout

我是XHTML和CSS世界的新手。 我整理了一个需要3列布局的页面。 该代码在Internet Explorer,Firefox和Google Chrome上提供了所需的效果,但我不确定它是否是正确的编码方式。

我已经在它工作之前发布了代码,并在应用必要的更改后使其工作。

问题

  • 这是编码的正确方法吗?
  • 这是编码的最佳方式吗?
  • 我可以在代码中遇到什么问题?

在它工作之前

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <meta http-equiv="imagetoolbar" content="no" />

    <meta name="MSSmartTagsPreventParsing" content="true" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <title>Sample page</title>

    <link rel="stylsheet" type="text/css" href="web.css" media="all" />

    <style type="text/css" media="all">

    html, body {

        height: 100%;
        margin: 0;
        padding: 0;
        font-family: arial, verdana, sans-serif;
        font-size: medium;
        font-weight: normal;
        font-style: none; 
        text-decoration: none; 

    }

    img#bg {

        height: 100%;
        width: 100%;
        position: fixed;
        top: 0;
        left: 0;

    }

    #wrapper {

        border: 1px solid #eeeeee;
        width: 960px;
        margin: 0px auto;
        position: relative;
        z-index: 1;

    }

    #header {

        background-color: orange;

    }

    #container {

        overflow: auto;

    }

    #leftnav {

        background-color: yellow;
        float: left;
        width: 100px;

    }

    #rightnav {

        background-color: blue;
        float: right;

    }

    #rightnav p {

        border: 1px solid #000000;
        font-size: small;
        font-style: italic;

    }


    #content {

        background-color: gray;

    }


    #footer {
        clear: both;
        background-color: green;

    }

    ul {

        margin: 0px;
        padding: 5px;

    }

    ul li {

        list-style-type: none;
        display: inline;

    }

    </style>

</head>

<body>

    <div>
        <img src="images/background.jpg" alt="background" id="bg" />
    </div>

    <div id="wrapper">
        <div id="header">
            <ul>
                <li>home</li>
                <li>about</li>
                <li>contact</li>
            </ul>
        </div>

        <div id="container">

            <div id="leftnav">
                <ol>
                    <li>Link 1</li>
                    <li>Link 2</li>
                    <li>Link 3</li>
                </ol>
            </div>

            <div id="rightnav">
                <p>Test</p>
            </div>

            <div id="content">
                content
            </div>
        </div>

        <div id="footer">
            footer
        </div>
    </div>

</body>
</html>

工作之后

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <meta http-equiv="imagetoolbar" content="no" />

    <meta name="MSSmartTagsPreventParsing" content="true" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <title>Sample page</title>

    <link rel="stylsheet" type="text/css" href="web.css" media="all" />

    <style type="text/css" media="all">

    html, body {

        height: 100%;
        margin: 0;
        padding: 0;
        font-family: arial, verdana, sans-serif;
        font-size: medium;
        font-weight: normal;
        font-style: none; 
        text-decoration: none;

    }

    img#bg {

        height: 100%;
        width: 100%;
        position: fixed;
        top: 0;
        left: 0;

    }

    #wrapper {

        border: 1px solid #eeeeee;
        width: 960px;
        margin: 0px auto;
        position: relative;
        z-index: 1;

    }

    #header {

        background-color: orange;

    }

    #container {

        overflow: hidden;

    }

    #leftnav {

        background-color: yellow;
        float: left;
        width: 100px;

    }

    #rightnav {

        background-color: blue;
        float: right;
        width: 100px;
        padding-bottom: 1000px;
        margin-bottom: -1000px;

    }

    #rightnav p {

        border: 1px solid #000000;
        font-size: small;
        font-style: italic;

    }


    #content {

        background-color: gray;

    }


    #footer {
        clear: both;
        background-color: green;

    }

    ul {

        margin: 0px;
        padding: 5px;

    }

    ul li {

        list-style-type: none;
        display: inline;

    }

    </style>

</head>

<body>

    <div>
        <img src="images/background.jpg" alt="background" id="bg" />
    </div>

    <div id="wrapper">
        <div id="header">
            <ul>
                <li>home</li>
                <li>about</li>
                <li>contact</li>
            </ul>
        </div>

        <div id="container">

            <div id="leftnav">
                <ol>
                    <li>Link 1</li>
                    <li>Link 2</li>
                    <li>Link 3</li>
                </ol>
            </div>

            <div id="rightnav">
                <p>Test</p>
            </div>

            <div id="content">
                content
            </div>
        </div>

        <div id="footer">
            footer
        </div>
    </div>

</body>
</html>

代码非常好 - 你可能做的事情很少:

1.)您不需要在浏览器中定义默认设置的属性: font-weight: normal; 已经是body的默认浏览器值,因此如果你不改变它的外观,你可以省略它。

2.) margin: 0px; 不需要px - 做margin: 0;

3.)名称ID和具有内容相关名称的类 - 与布局无关: #rightnav可能位于当前css布局的右侧,但有一天你可能会改变主意并把它放在左侧并且id有点丢失一些相关性。 #subnav可能是更好的选择。

4.)不要真正理解你想用这段代码来完成什么(因为我没有时间设置一个实时站点的例子):

    padding-bottom: 1000px;
    margin-bottom: -1000px;

但看起来有点难看,尽管它完全有效并且可以完成这项工作。

5.) <img src="images/background.jpg" alt="background" id="bg" /> - 如果图像是背景而不是内容相关,请使用css属性background-image来应用它。

我不会评论meta标签,因为我对它没有足够的了解。

关于元标记的一些评论......

<meta http-equiv="imagetoolbar" content="no" />
<meta name="MSSmartTagsPreventParsing" content="true" />

这些元标记是无用的。

<meta name="keywords" content="" />

meta关键字过去很重要。 没有任何搜索引擎会因此而烦恼,因为它总是被滥用。

<meta name="description" content="" />

而这个元标记是......好吧......不是没用,而是差不多。 页面中的内容应该全部为您描述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM