前端教程(10)css入门教程-css网页布局

一 网页布局方式

#1、什么是网页布局方式
布局可以理解为排版,我们所熟知的文本编辑类工具都有自己的排版方式,比如word,nodpad++等等

而网页的布局方式指的就是浏览器这款工具是如何对网页中的元素进行排版的

#2、网页布局/排版的三种方式
2.1、标准流
2.2、浮动流
2.3、定位流

二 标准流

标准流的排版方式,又称为:文档流/普通流,所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。
#   1 浏览器默认的排版方式就是标准流排版方式

#   2 在CSS中将元素分为三类:分别是
        块级
        行内
        行内块级

#  3 在标准流中有两种排版方式,一种是垂直排版,一种是水平排版

        垂直排版,如果元素是块级元素,那么就会垂直排版
        水平排版,如果元素是行内元素或行内块级元素,那么就会水平排版
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>

    <style type="text/css">
        div,h1,p {
            border: 1px solid red;
        }

        span,strong,b {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
<div>我是div</div>
<h1>我是标题</h1>
<p>我是段落</p>

<span>span</span>
<strong>我是强调</strong>
<b>我是加粗</b>
</body>
</html>

示例
示例代码讲解

三 浮动流

1、浮动流是一种半脱离标准流的排版方式那什么是脱离文档流?什么又是半脱离文档流?

1.1 什么是脱离文档流?

1、浮动元素脱离文档流意味着
#1、不再区分行内、块级、行内块级,无论是什么级的元素都可以水平排版
#2、无论是什么级的元素都可以设置宽高
综上所述,浮动流中的元素和标准流总的行内块级元素很像
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        /*
        不再区分行内、块级、行内块级,无论是什么级的元素都可以水平排版:span和p都显示到一行
        无论是什么级的元素都可以设置宽高:span这种行内元素也可以设置宽高
        */
        .box1 {
            width: 100px;
            height: 100px;
            background-color: red;

            float: left;
        }
        .box2 {
            width: 100px;
            height: 100px;
            background-color: blue;

            float: left;
        }


    </style>
</head>

<body>

<span class="box1">我是span</span>
<p class="box2">我是段落</p>



</body>
</html>

示范
代码示例
2、浮动元素脱标文档流意味着
#1、当某一个元素浮动走之后,那么这个元素看上去就像被从标准流中删除了一样,这个就是浮动元素的脱标

#2、如果前面一个元素浮动走了,而后面一个元素没有浮动,那么垂直方向的元素会自动填充,浮动元素重新归位后就会覆盖该元素 

注意点:

  1、浮动流只有一种排版方式,就是水平排版,它只能设置某个元素左对齐或者右对齐,没有居中对齐,也就是没有center这个取值

    2、一旦使用了浮动流,则margin:0 auto;失效

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .header {
            width: 930px;
            height: 100px;
            border: 1px solid #000;

            /*失效*/
            margin: 0 auto;
        }

        .logo {
            width: 100px;
            height: 50px;
            background-color: yellow;
            float: left;
        }
        .nav {
            width: 300px;
            height: 50px;
            background-color: green;
            float: left;

            /*失效*/
            margin: 0 auto;
        }

    </style>
</head>

<body>

<div class="header">
    <div class="logo"></div>
    <div class="nav"></div>
</div>

示例
示例

让两个元素显示到一行,一种用inline-block,另一种用浮动的方式

<!DOCTYPE html>
<html>
<head>
    <title>方式一:修改显示方式为inline-block</title>
    <meta charset="utf-8">
    <style>
        .box1 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: red;
        }
        .box2 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: blue;

            /*
            当设置box2的margin-left足够大时,第二个盒子就靠右面显示了
            但是当浏览器界面缩小时,box2由于左边的margin-left不够930,则必须换一个新行显示,就无法让两个盒子处于一行
            */
            margin-left: 930px;
        }

    </style>
</head>

<body>



<div class="box1"></div>
<div class="box2"></div>


</body>
</html>










<!DOCTYPE html>
<html>
<head>
    <title>方式二:用浮动的方式</title>
    <meta charset="utf-8">
    <style>
        .box1 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: red;

            float: left;
        }
        .box2 {
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: blue;

            float: right;
        }

    </style>
</head>

<body>



<div class="box1"></div>
<div class="box2"></div>


</body>
</html>
示例代码讲解

1.2 那什么又是半脱离文档流?

脱离分为:半脱离与完全脱离,

其中完全脱离指的是元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样

而之所以称为半脱离:是因为浮动元素浮动之后的位置取决于它在浮动之前的标准流中的位置,跟标准流还是有一定的关系,比如说浮动的元素在浮动之前处于标准流的第二行,那么他浮动之后也是处于浮动流的第二行,不会去找其他行的浮动元素去贴靠,打一个比方就是:浮动流就是在标准流上面覆盖的一层透明薄膜,元素浮动之后就会被从标准流中扔到浮动流这个薄膜上,他在这个薄膜上的位置还是以前在标准流的位置上找同方向的浮动元素进行贴靠,贴靠的准则就是:

(1)同一个方向上谁先浮动,谁在前面

(2)不同方向上左浮动找左浮动,右浮动找右浮动

浮动元素浮动之后的位置取决于它在浮动之前的标准流中的位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动元素排序规则</title>

    <style>
        .box1 {
            float: left;

            width: 100px;
            height: 100px;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            background-color: blue;
        }

        .box3 {
            float: left;

            width: 250px;
            height: 250px;
            background-color: yellow;
        }


        .box4 {
            width: 300px;
            height: 300px;
            background-color: rebeccapurple;
        }
    </style>
</head>
<body>

<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>


</body>
</html>
代码示例

同一个方向上谁先浮动,谁在前面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动元素排序规则</title>

    <style>
        .box1 {
            float: left;

            width: 100px;
            height: 100px;
            background-color: red;
        }

        .box2 {
            float: left;

            width: 150px;
            height: 150px;
            background-color: blue;
        }

        .box3 {
            float: left;

            width: 250px;
            height: 250px;
            background-color: yellow;
        }


        .box4 {
            float: left;

            width: 300px;
            height: 300px;
            background-color: rebeccapurple;
        }
    </style>
</head>
<body>

<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>


</body>
</html>
代码示例

不同方向上左浮动找左浮动,右浮动找右浮动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动元素排序规则</title>

    <style>
        .box1 {
            float: left;

            width: 100px;
            height: 100px;
            background-color: red;
        }

        .box2 {
            float: left;

            width: 150px;
            height: 150px;
            background-color: blue;
        }

        .box3 {
            float: right;

            width: 250px;
            height: 250px;
            background-color: yellow;
        }


        .box4 {
            float: right;

            width: 300px;
            height: 300px;
            background-color: rebeccapurple;
        }
    </style>
</head>
<body>

<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>


</body>
</html>
代码示例

1.3 浮动元素贴靠问题

当父元素的宽度足够显示所有元素时,浮动的元素就会并列显示
当父元素的宽度不足够显示所有元素时,浮动的元素就贴前一个元素,如果还不够,就会再贴前一个元素
直到贴到父元素左边,此时无论是否宽度足够都会在这一行显示了
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动元素贴靠问题</title>

    <style>
        .father {
            width: 400px;
            height: 400px;
            border: 1px solid #000;

        }

        .box1 {
            float: left;
            width: 50px;
            height: 300px;
            background-color: rebeccapurple;

        }
        .box2 {
            float: left;
            width: 50px;
            height: 100px;
            background-color: green;

        }
        .box3 {
            float: left;
            width: 250px;
            /*width: 300px;*/
            /*width: 310px;*/
            /*width: 400px;*/

            height: 100px;
            background-color: red;

        }


    </style>
</head>
<body>

<div class="father">
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>
</div>


</body>
</html>
示例代码

1.4 浮动元素字围现象

#没有浮动文字、图片、超链接等元素会给浮动的元素让位置,并围绕在浮动元素的周围 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮动元素字围现象</title>

    <style>
        img {
            float: right;
            width: 300px;
        }

        p {
            background-color: #b923a6;
        }


    </style>
</head>
<body>
<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1526318630409&di=8186a1ab56ed36696ade3e23a228acfc&imgtype=0&src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2Ff%2F58be1c554d5f0.jpg"
     alt="">
<p>
    迪丽热巴(Dilraba),1992年6月3日出生于新疆乌鲁木齐市,中国内地影视女演员。2013年,迪丽热巴因主演个人首部电视剧《阿娜尔罕》而出道。2014年,她主演了奇幻剧《逆光之恋》。2015年,迪丽热巴凭借爱情剧《克拉恋人》赢得高人气,并获得国剧盛典最受欢迎新人女演员奖。2016年,其主演的现代剧《麻辣变形计》播出;同年,她还凭借喜剧片《傲娇与偏见》获得中英电影节最佳新人奖。2017年,迪丽热巴因在玄幻剧《三生三世十里桃花》中饰演青丘白凤九而获得白玉兰奖最佳女配角提名。2018年
    ...
    迪丽热巴(Dilraba),1992年6月3日出生于新疆乌鲁木齐市,中国内地影视女演员 [1] 。
    2013年,迪丽热巴因主演个人首部电视剧《阿娜尔罕》而出道 [2] 。2014年,她主演了奇幻剧《逆光之恋》 [3] 。2015年,迪丽热巴凭借爱情剧《克拉恋人》赢得高人气,并获得国剧盛典最受欢迎新人女演员奖 [4]
    。2016年,其主演的现代剧《麻辣变形计》播出 [5] ;同年,她还凭借喜剧片《傲娇与偏见》获得中英电影节最佳新人奖 [6] 。2017年,迪丽热巴因在玄幻剧《三生三世十里桃花》中饰演青丘白凤九而获得白玉兰奖最佳女配角提名 [7]
    。2018年4月20日,主演的爱情喜剧电影《21克拉》上映 [8] 。
    迪丽热巴出生于新疆乌鲁木齐市,父亲是新疆歌舞团的独唱演员。因受父亲影响,迪丽热巴从小便对各种艺术类的东西颇感兴趣,并主动要求学习钢琴、舞蹈、小提琴、吉他等 [9] 。
    2001年,9岁的迪丽热巴被父亲带去一所艺术学院参加考试,当时她以为是上兴趣班,结果被录取后才发现是一个专业的舞蹈院校,而迪丽热巴也开始了为期六年的民族舞、芭蕾舞专业学习。2007年,从艺术学院毕业的迪丽热巴成为了新疆歌舞团的舞蹈演员
    [10] 。2009年,迪丽热巴还在东北师范大学民族学院读了一年预科,在此期间她还参加了吉林省的首届少数民族新歌大赛,并最终获得了省级三等奖的成绩 [11] 。
    之后,迪丽热巴却慢慢发现这并不是自己想要的生活。于是决定继续求学,去看看外面的世界,因为有不错钢琴基础,所以本来想报考的是中央音乐学院,可报名时却看到了中戏和上戏在招生,便突然决定改学表演。而迪丽热巴会有这样的决定则是受到了她钢琴老师的指点。2010年,迪丽热巴顺利考入了上海戏剧学院表演系戏剧影视专业;同年,她参加了陆川执导的古装片《王的盛宴》女主角“虞姬”的上海站海选
    [12] ,并因此获得了颇多关注 [13] 。
</p>


</body>
</html>

示范一:图文混排
运行代码有美女
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>span内包含的是文字,因为这也是一种字围现象</title>

    <style type="text/css">
        .box1 {
            /*display: inline-block;*/
            width: 200px;
            height: 200px;
            background-color: red;
            float: left;
        }
        .box2{
            /*display: inline-block;*/
            width: 300px;
            height: 300px;
            background-color: green;
        }
        .box3{
            width: 400px;
            height: 400px;
            background-color: yellow;
        }
    </style>
</head>
<body>
<div class="box1"></div>

<span class="box2">asdfasdfadsfasdf</span>

<div class="box3"></div>
</body>
</html>
span字围现象

更新中。。。

 

猜你喜欢

转载自www.cnblogs.com/mayite/p/9101750.html