zoukankan      html  css  js  c++  java
  • web标准(复习)--3 二列和三列布局

    今天学习二列和三列布局,将涉及到以下内容和知识点

    二列自适应宽度
    二列固定宽度
    二列固定宽度居中
    xhtml的块级元素(div)和内联元素(span)
    float属性
    三列自适应宽度
    三列固定宽度
    三列固定宽度居中
    IE6的3像素bug

    一、两列自适应宽度
    下面以常见的左列固定右列自适应为例,因为div为块状元素,默认情况下占据一行的空间,要想让下面的div跑到右侧,就需要做助css的浮动来实现。首先创建html代码如下:

    <style>
    #side { background-color:#99FF99;height: 300px; 120px; float: left; }
    #main2 { background: #99FFFF; height: 300px; 70%; margin-left: 120px; }
    </style>
    <div id="side">此处显示 id "side" 的内容</div>
    <div id="main2">此处显示 id "main" 的内容</div>)

    二、两列固定宽度
    有了前面的基础,两列固定宽度就容易多了,只需要把#main的宽度由百分比改为固定值,如下图:

    <style>
    #side3 { background-color:#99FF99;height: 300px; 120px; float: left; }
    #main3 { background: #99FFFF; height: 300px; 400px; margin-left: 120px; }
    </style>
    <div id="side3">此处显示 id "side" 的内容--固定</div>
    <div id="main3">此处显示 id "main" 的内容--固定</div>)

    三、两列固定宽度居中
    两列固定宽度居中,需要在两列固定宽度的基础上改进,在学一列固定宽度居中时,我们知道让它居中的方法,所以这里需要在这两个div之外再加一个父div:

    <style>
    #side3 { background-color:#99FF99;height: 300px; 120px; float: left; }
    #main3 { background: #99FFFF; height: 300px; 400px; margin-left: 120px; }
    #content { 470px; margin:0 auto;}
    </style>
    <div id='content'>
    <div id="side3">此处显示 id "side" 的内容--固定</div>
    <div id="main3">此处显示 id "main" 的内容--固定</div>
    </div>

    四、xhtml的块级元素(div)和内联元素(span)
    块级元素:就是一个方块,像段落一样,默认占据一行出现;

    内联元素:又叫行内元素,顾名思义,只能放在行内,就像一个单词,不会造成前后换行,起辅助作用。

    一般的块级元素诸如段落<p>、标题<h1><h2>...、列表,<ul><ol><li> 、表格<table>、表单<form>、DIV<div>和BODY<body>等元素。而内联元素则如: 表单元素<input>、超级链接<a>、图像<img>、<span> ........ 块级无素的显著特点是:每个块级元素都是从一个新行开始显示,而且其后的无素也需另起一行进行显示。

    块级元素默认占据一行,相当于在它之前和之后各插入了一个换行;而内联元素span没对显示效果造成任何影响,事实也是如此;em只是让字体变成了斜体,也没有单独占据一行。这就是块级元素和内联元素,正因为有了这些元素,才使我们的网页变得丰富多彩。

    如果没有css的作用,块元素会顺序以每次另起一行的方式一直往下排。而有了css以后,我们可以改变这种html的默认布局模式,把块元素摆放到你想要的位置上去。而不是每次都愚蠢的另起一行。也就是说,可以用css的display:inline将块级元素改变为内联元素,也可以用display:block将内联元素改变为块元素。

    五、float属性
    回到我们的例子当中,理解了块级元素和内联元素,对理解浮动就容易多了。float是个重点,希望大家都能理解。上例中用float让元素向左浮动,在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素;且要指明一个宽度,否则它会尽可能地窄;另外当可供浮动的空间小于浮动元素时,它会跑到下一行,直到拥有足够放下它的空间

    六、三列自适应宽度
    三列自适应宽度,一般常用的结构是左列和右列固定,中间列根据浏览器宽度自适应。下面在二列自适应宽度基础上修改一下

    <style>
    #side4 { background-color:#99FF99;height: 300px; 120px; float: left; }
    #side41 { background-color:#99FF99;height: 300px; 120px; float: right;}
    #main4 { background: #99FFFF; height: 300px; margin:0 100px; }
    </style>
    <div id="side4">此处显示 id "side" 的内容</div>
    <div id="side41">此处显示 id "side1" 的内容</div>
    <div id="main4">此处显示 id "main" 的内容</div>

    七、三列固定宽度
    三列固定宽度可以在三列自适应基础上添加一个父div,并设置这个div的宽度即可,如下,添加一个id为content的父容器。

    在源代码里选中这三个div,然后点击工具栏上的“插入div标签”按钮,这时弹出的窗口插入项会默认为:在选定的内容旁换行,输入id为content,然后给这个div定义个宽度

    <style>
    #side4 { background-color:#99FF99;height: 300px; 120px; float: left; }
    #side41 { background-color:#99FF99;height: 300px; 120px; float: right;}
    #main4 { background: #99FFFF; height: 300px; margin:0 100px; }
    #content2{ margin: 0 auto; 500px}
    </style>
    <div id='content2'>
    <div id="side4">此处显示 id "side" 的内容</div>
    <div id="side41">此处显示 id "side1" 的内容</div>
    <div id="main4">此处显示 id "main" 的内容</div>
    </div>

    八、IE6的3像素bug
    3像素bug是IE6的一个著名的bug,当浮动元素与非浮动元素相邻时,这个3像素的Bug就会出现。看下面这个左列固定,右列液态的例子,css代码如下:

    body { margin:0;}
    #side { float: left; background:#99FF99; height: 300px; 120px;}
    #main { background: #99FFFF; height: 300px;}

    html代码如下:

    <div id="side">此处显示 id "side" 的内容</div>
    <div id="main">此处显示 id "main" 的内容</div>

    IE6会在两个div中间加上3px的空隙,那么要解决这个问题,请在#side上加上_margin-right:-3px;记住,前边加上一下划线,这样这个样式专门针对IE6生效。IE7和FF下还会正常显示。

    body { margin:0;}
    #side { float: left; background:#99FF99; height: 300px; 120px; _margin-right:-3px;}
    #main { background: #99FFFF; height: 300px; }

    但它不能通过W3C验证。当两列固定宽度时,最好把#main也固定宽度且向右浮动,这样就可以避免IE6的3像素bug了。

  • 相关阅读:
    2018.7.9 模拟赛
    树状数组||归并排序求逆序对+离散化 nlogn
    LCS nlogn
    孤岛营救问题
    [POJ 3621] Sighting Cows
    树状数组求LIS
    nlogn求逆序对&&陌上花开
    最长可重区间集
    LCA模板
    [BZOJ] 4196 [Noi2015]软件包管理器
  • 原文地址:https://www.cnblogs.com/ypfnet/p/3750261.html
Copyright © 2011-2022 走看看