妙味课堂——HTML+CSS(第四课)(一)

摘要:
接下来,让我们看看CSS中的float,通过一个示例来了解它的特性:文档 div,span{/*100px;*/height:100px;背景:红色;边框:1pxsolid#000;float:left;}div1

   这一课学的东西真是太多了,还不赶快记下来,留待以后慢慢回味!

   首先我们回顾一下inline-block的特性:

  1. 使块元素在一行显示
  2. 使内嵌支持宽高
  3. 换行被解析了(问题)
  4. 不设置宽度的时候,宽度由内容撑开
  5. 在IE6,7下不支持块标签(问题)

   关于1、2、4、5点,我前面的一篇文章已经详细赘述,在此略过。现在单独看第3点,可能我以前还没叙述清楚,举例说明:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div,span {
            height: 100px;
            background: red;
            display: inline-block;
        }
    </style>
</head>
<body>
    <div class="div1">div1</div><div class="div2">div2</div><!-- 换行 -->
    <span class="span1">span1</span><!-- 换行 -->
    <span class="span2">span2</span>
</body>
</html>

   运行效果图:

   妙味课堂——HTML+CSS(第四课)(一)第1张

   该例子显然也证明了块元素在一行显示、内嵌支持宽高、不设置宽度的时候,宽度由内容撑开。

   接下来,我们看CSS中的float(浮动)

   通过一个例子来看其特性:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div,span {
            /* 100px;*/
            height: 100px;
            background: red;
            border: 1px solid #000;
            float: left;
        }
    </style>
</head>
<body>
    <div class="div1">div1</div>
    <div class="div2">div2</div>
    <span class="span1">span1</span>
    <span class="span2">span2</span>
</body>
</html>

   运行效果图:

   妙味课堂——HTML+CSS(第四课)(一)第2张

   可以看出float的特性如下:

  1. 使块元素在一行显示
  2. 使内嵌支持宽高
  3. 不设置宽度的时候,宽度由内容撑开   

   解决了换行被解析了的问题!此时拥有float(动)特性的元素都起来了,按照指定的方向(left)飘到最左方。

   当float属性的值为right时,

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div,span {
            width: 100px;
            height: 100px;
            background: red;
            border: 1px solid #000;
            float: right;
        }
    </style>
</head>
<body>
    <div class="div1">div1</div>
    <div class="div2">div2</div>
    <span class="span1">span1</span>
    <span class="span2">span2</span>
</body>
</html>

   运行效果图:

   妙味课堂——HTML+CSS(第四课)(一)第3张

   此时float: right的元素依次飘到最右方。

   所以,float属性的值分别有:

  1. left
  2. right
  3. none 

   接下来我们来说明float的第4个特性,也是通过一个例子:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        .box1 {
            width: 100px;
            height: 100px;
            background: red;
            float: left;
        }
        .box2 {
            width: 100px;
            height: 100px;
            background: blue;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

   运行效果图为:

   妙味课堂——HTML+CSS(第四课)(一)第4张

   结果出乎意料,还有一个宽高各为100px,背景颜色为blue的块元素去哪儿了呢?答案是被上面的宽高各为100px,背景颜色为red的块元素覆盖了。那么可以修改如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        .box1 {
            width: 100px;
            height: 100px;
            background: red;
            float: left;
        }
        .box2 {
            width: 200px;
            height: 200px;
            background: blue;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

   运行效果图:

   妙味课堂——HTML+CSS(第四课)(一)第5张

   通过上面的例子,我们引出一个概念:文档流

   文档流——文档中可显示对象在排列时所占用的位置。从上面例子已经可以看出float的第4个特性:4、脱离文档流。

   至此,浮动的定义:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。如果一个元素右/左浮动,则:

  1. 它本身会尽可能向右/左移动,直到碰到边框或者别的浮动元素,特别强调浮动对块元素和行内元素都生效!
  2. 元素向右/左浮动,就相当于让出自己的左/右边,别的元素就会在它的左/右边排列。   

   那么接下来,看float的第5个特性,其实说实话,我也不是特别清楚这个特性,懵懵懂懂的,在此留下这个疑问???!先给出来,float的第5个特性:5、提升层级(半层)。按照老师的解释,将一个页面从横切面刨开,会有两个截面,一个横截面是元素本身(包含元素背景...),另一个是元素内容(文字)。通过下例来说明:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body {
            font-size: 20px;
        }
        .box1 {
            width: 100px;
            height: 100px;
            background: red;
            float: left;
        }
        .box2 {
            width: 100px;
            height: 100px;
            background: blue;
        }
    </style>
</head>
<body>
    <div class="box1">box1</div>
    <div class="box2">box2</div>
</body>
</html>

   运行效果图:

   妙味课堂——HTML+CSS(第四课)(一)第6张

   此时,<div class="box2">box2</div>中的内容box2被挤下去了,为什么被挤下去呢?所以这是一个疑问。

   再看一个示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body {
            font-size: 20px;
        }
        .box1 {
            width: 100px;
            height: 100px;
            background: red;
            float: left;
        }
        .box2 {
            width: 200px;
            height: 200px;
            background: blue;
        }
    </style>
</head>
<body>
    <div class="box1">box1</div>
    <div class="box2">box2</div>
</body>
</html>

   妙味课堂——HTML+CSS(第四课)(一)第7张

   按照一般尿性来说,box2块元素的内容应该在最左上方显示,结果被活生生挤到一边去了。

   总结,float的特性如下:

  1. 使块元素在一行显示
  2. 使内嵌支持宽高
  3. 不设置宽度的时候,宽度由内容撑开
  4. 脱离文档流   
  5. 提升层级(半层)

   讲完这些,趁热打铁,我们来看看一个练习,关于如何布局的问题。布局如下:

   妙味课堂——HTML+CSS(第四课)(一)第8张

   要做出如上布局,该如何做呢?

   第一次试验:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body {
            margin: 0;
        }
        .box {
            width: 900px;
            margin: 0 auto;
        }
        .box div {
            width: 300px;
        }
        .left_1 {
            height: 200px;
            background: red;
            float: left;
        }
        .left_2 {
            height: 300px;
            background: blue;
            float: left;
        }
        .left_3 {
            height: 240px;
            background: green;
            float: left;
        }
        .left_4 {
            height: 300px;
            background: pink;
            float: left;
        }
        .left_5 {
            height: 100px;
            background: #000;
            float: left;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="left_1"></div>
        <div class="left_2"></div>
        <div class="left_3"></div>
        <div class="left_4"></div>
        <div class="left_5"></div>
    </div>
</body>
</html>

   注意:块元素不设宽,会跟着父级走。

   以上每个块元素都加上float属性,运行结果如下:

   妙味课堂——HTML+CSS(第四课)(一)第9张

   发现布局混乱一团糟,不可取。

   第二次试验:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body {
            margin: 0;
        }
        .box {
            width: 900px;
            margin: 0 auto;
        }
        .left {
            width: 300px;
            float: left;
        }
        .left div {
            height: 298px;/* 块元素不设宽,会跟着父级走 */
            background: #9f0;
            border: 1px solid #fff;
        }
        .center {
            width: 300px;
            float: left;
        }
        .center div {
            height: 198px;
            background: #cf0;
            border: 1px solid #fff;
        }
        .right {
            width: 300px;
            float: right;
        }
        .right div {
            height: 298px;
            background: #ff0;
            border: 1px solid #fff;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="left">
            <div></div>
            <div></div>
        </div>
        <div class="center">
            <div></div>
            <div></div>
            <div></div>
        </div>
        <div class="right">
            <div></div>
            <div></div>
        </div>
    </div>
</body>
</html>

   布局就大功告成了,但是我们也可以给此布局加上边框和高度:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        body {
            margin: 0;
        }
        .box {
            width: 900px;
            margin: 0 auto;
            border: 5px solid #000;
            height: 600px;
        }
        .left {
            width: 300px;
            float: left;
        }
        .left div {
            height: 298px;/* 块元素不设宽,会跟着父级走 */
            background: #9f0;
            border: 1px solid #fff;
        }
        .center {
            width: 300px;
            float: left;
        }
        .center div {
            height: 198px;
            background: #cf0;
            border: 1px solid #fff;
        }
        .right {
            width: 300px;
            float: right;
        }
        .right div {
            height: 298px;
            background: #ff0;
            border: 1px solid #fff;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="left">
            <div></div>
            <div></div>
        </div>
        <div class="center">
            <div></div>
            <div></div>
            <div></div>
        </div>
        <div class="right">
            <div></div>
            <div></div>
        </div>
    </div>
</body>
</html>

   运行效果图:

   妙味课堂——HTML+CSS(第四课)(一)第10张

   

    

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇数字滤波常用方法(转)UNIX网络编程——TCP/IP简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JS与CSS阻止元素被选中及清除选中的方法总结

有时候,我们希望阻止用户选中我们指定区域的文字或内容。 举个栗子,有时候用户在一个区域执行频繁的点击操作,一不小心傲娇地点多了,就会选中当前区域的内容。 再举个栗子,制作轮播组件的时候,点击下一页,若点击的快的话,浏览器会识别为双击。 双击的默认效果是选中整片区域,这时候轮播图组件就会被表示忧郁的蓝色幕布盖住,多忧桑啊~ 你看,这妹子多赞啊,可是你一紧张...

[WPF] VisualBrush 中的布局

今天插一篇随笔。说一说上周五遇到的一个布局问题,问题大概是这样的:需要在一个快区域上添加一张透明的背景图片,由于区域较大、并且宽高都不是固定大小,图片较小 所以图片需要居中显示。除此之外还需要在图片的透明部分添加一个非透明的纯色。 比如:最终的效果图、如下图所示: 当然如果只是为了实现这种效果、实现方案有多种,至少有三大类: 1、嵌套两个控件、分别应用纯色...

传统css布局方案(position,float,line-height等配合)

一、display display 是 css 布局中很重要的一个属性,它定义了元素生成的显示框类型,常见的几个属性值有:block、inline、inline-block、inherit、none、flex。inherit 表示这个元素从父元素继承 display 属性值;none 表示这个元素不显示,也不占用空间位置;flex 是 flex 布局重...

less可以做什么?less详解!(less嵌套选择器实现纯CSS二级导航)

前端技术众多,作为一名前端工程师,我们每接触新技术首先要懂得此技术的优势和劣势,这是最基本的。往深入了说还需要懂得技术的应用场景,与之配合的技术等,方便为以后架构做准备。而less作为一门CSS预处理语言,拥有函数式变成的特点,主要优点就是高效。主要适用于包含众多CSS的大型项目。主要体现在:项目公共样式的定义,如页面主色、固定数值(宽、高、时间等)、公用...

CSS样式实现溢出超出DIV边框宽度高度的内容自动隐藏方法

CSS样式实现溢出超出DIV边框宽度高度的内容自动隐藏方法 平时我们布局时候,有的文字内容多了会超过溢出我们限制的高度,有的图片会撑破DIV,让网页错位变乱。 这样我们就需要解决如何使用CSS来超出设置CSS宽度和CSS高度的内容自动隐藏掉,又不撑破DIV布局。 特别是在IE6,如果内容超出对象高度和宽度承载,将会被撑破增高,这个时候我们可以利用以下解决方...

我的css释疑-float line-height inline-block vertical-align

markdown的图片和链接格式相类似: [链接文字/图片的alt text] (链接地址/ 图片的地址), 只是图片要在前面加上感叹号! 当内容中含有图片的时候,如果图片的高度大于行高,则含有图片 行的行框将被撑开到图片的高度 注意:图片虽然撑开了行框,但是不会影响行高,因此也不会影响到基于行高来计算的其他属性。 提示:当行内含有图片的时候,图片和文字...