css布局的三种模式

规范流

依照元素的显示模式进行排列,故称为规范流

浮动

次要用于多个块级盒子在同一行显示

定位

次要把盒子定位到浏览器的某个地位 前面会常常用到定位

行内块元素和浮动的区别

行内块元素能够让元素在同一行显示,然而两头有空隙,而浮动却恰好解决这个问题

float(浮动)

设置浮动属性的元素会脱离规范流,会将元素挪动到指定的地位

浮动的作用

  • 能让多个块级盒子在同一行显示
  • 能够实现盒子的左右对齐
  • 浮动最早是用来实现图片盘绕成果
    选择器 {float: 属性值;}

浮动之浮篇

浮动的盒子会脱标,且不占地位
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        .box1 {            height: 200px;            width: 200px;            background-color: blue;            float: left;        }        .box2 {            width: 400px;            height: 400px;            background-color: brown;        }    </style></head><body>    <div class="box1"></div>    <div class="box2"></div></body></html>

浮动的盒子之漏篇

浮动的盒子,会把原来的地位漏给上面规范流的盒子,且不占地位
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        .box1 {            height: 200px;            width: 200px;            background-color: blue;            /*浮动的盒子不占地位,地位会漏给上面的盒子*/            float: left;        }        .box2 {                    width: 400px;            height: 400px;            background-color: brown;        }    </style></head><body>    <div class="box1"></div>    <div class="box2"></div></body></html>

float之特篇

浮动的个性:浮动的盒子会扭转元素的display属性,转换相似行内块个性,但没有缝隙
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        .box1 {            height: 400px;            width: 400px;            background-color: blue;            float: left;        }        .box2 {            width: 400px;            height: 400px;            background-color: black;            float: left;         }         .box3 {            width: 400px;            height: 400px;            background-color: brown;            float: pink;            float: left;         }    </style></head><body>    <div class="box1"></div>    <div class="box2"></div>    <div class="box3"></div></body></html>


注意事项:当父元素的宽度不够包容浮动的盒子,浮动的盒子会从新起一行

浮动小结

浮动小细节

一个残缺的网页,是由规范流+浮动+定位 一起实现的

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        .nav {            width: 400px;            height: 400px;            border: 1px solid red;        }        .box1,        .box2 {            width: 200px;            height: 200px;            background-color: black;            float: left;        }        .box2 {            background-color: blueviolet;        }        .box3 {            width: 400px;            height: 200px;            background-color: brown;            float: left;        }    </style></head><body>    <div class="nav">        <div class="box1"></div>        <div class="box2"></div>        <div class="box3"></div>    </div></body></html>

浮动案例

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        * {            margin: 0;            padding: 0;        }        .box {            width: 800px;            height: 800px;            margin: 100px auto;        }        .left {            width: 200px;            height: 800px;            background-color: red;            float: left;        }        .right {            width: 600px;            height: 800px;            float: left;        }        .right li {            list-style: none;            width: 140px;            height: 395px;            float: left;            background-color: brown;            margin-left: 10px;            margin-top: 5px;            font-weight: bold;            color: wheat;            line-height: 395px;            text-align: center;        }    </style></head><body>    <div class="box">        <div class="left"></div>        <ul class="right">            <li>1</li>            <li>2</li>            <li>3</li>            <li>4</li>            <li>5</li>            <li>6</li>            <li>7</li>            <li>8</li>        </ul>    </div></body></html>

导航栏案例

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <meta name="viewport" content="width=device-width, initial-scale=1.0">        <title>Document</title>        <style>            * {                margin: 0;                padding: 0;            }            .banner {                width: 760px;                height: 150px;                margin: auto;            }            .nav {                width: 760px;                height: 32px;                background: url(image/nav_bg.jpg) repeat-x;                margin: auto;            }            .nav li {                list-style: none;                float: left;            }            .nav li a {                display: block;                width: 80px;                height: 32px;                text-align: center;                line-height: 32px;                text-decoration: none;                color: #40510A;                background: url(image/button1.jpg);            }            .nav li a:hover {                background: url(image/button2.jpg);            }        </style>    </head>    <body>        <!-- 广告条部份开始 -->        <div class="banner">            <img src="image/banner.jpg" alt="">        </div>        <!-- 广告条部份完结 -->        <!-- 导航局部开始 -->        <div class="nav">            <ul>                <li><a href="#">网站导航</a></li>                <li><a href="#">网站导航</a></li>                <li><a href="#">网站导航</a></li>                <li><a href="#">网站导航</a></li>                <li><a href="#">网站导航</a></li>                <li><a href="#">网站导航</a></li>            </ul>        </div>    </body></html>

浮动元素与父元素的关系

浮动的元素不会压住父元素的边框,也不会压住父元素的padding值,而且浮动的盒子与父盒子参照对齐

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        .father {            width: 500px;            height: 200px;            background-color: red;            border: 5px solid black;            padding: 20px;        }        .son {            width: 200px;            height: 100px;            float: left;            background-color: blue;        }    </style></head><body>    <div class="father">        <div class="son"></div>    </div></body></html>

浮动元素与兄弟元素的关系

1.浮动的盒子只会影响前面的规范流盒子,并不会影响后面的规范流的盒子

2.一个盒子浮动,其它的盒子也应该浮动

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        .father {            width: 500px;            height: 500px;            border: 1px solid red        }        .son1 {            width: 100px;            height: 100px;            background-color: red;        }        .son2 {            width: 400px;            height: 200px;            background-color: green;            float: left;        }    </style></head><body>    <div class="father">        <div class="son1"></div>        <div class="son2"></div>    </div></body></html>

为什么要革除浮动?

革除浮动的实质:是为了解决父元素因为子元素浮动而引起高度为0的状况。革除浮动后,父元素会自动检测浮动的子元素的高度,父元素有了高度后,就不会影响上面的规范流

革除浮动的办法

选择器 {clear: 属性值};  clear:革除

额定标签法

    在最初浮动的元素增加一对空标签,如<div style="clear: both;"></div>等等
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        * {            margin: 0;            padding: 0;        }        .nav {            width: 800px;            margin: auto;            border: 1px solid red;        }        .box1 {            width: 400px;            height: 400px;            background-color: green;            float: left;        }        .box2 {            width: 400px;            height: 400px;            background-color: black;            float: left;        }        .box3 {            height: 500px;            width: 800px;            background-color: chartreuse;        }    </style></head><body>    <div class="nav">        <div class="box1"></div>        <div class="box2"></div>        <!-- 在最初浮动的元素前面增加一对空标签 -->        <div style="clear: both;"></div>        <div class="box3"></div>    </div></body></html>

长处:通俗易懂

毛病:减少很多没意义的标签,造成构造错乱

父级增加overflow:hidden即可

语法:overflow:hidden  |  auto  | scroll
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        * {            margin: 0;            padding: 0;        }        .nav {            width: 800px;            margin: auto;            border: 1px solid red;            /* 间接给父元素增加overfolw-hidden */            overflow: hidden;        }        .box1 {            width: 400px;            height: 400px;            background-color: green;            float: left;        }        .box2 {            width: 400px;            height: 400px;            background-color: black;            float: left;        }        .box3 {            height: 500px;            width: 800px;            background-color: chartreuse;        }    </style></head><body>    <div class="nav">        <div class="box1"></div>        <div class="box2"></div>        <div class="box3"></div>    </div></body></html>

长处:书写代码不便

毛病:代码变多时而导致无奈显示被暗藏的内容

应用after伪元素革除浮动

     .clearfix::after {            content: "";            display: block;            height: 0;            visibility: hidden;            overflow: hidden;        }        .clearfix {            *zoom: 1;            /*关照ie6 ie7的兼容性*/        }

比拟完满 但有兼容性

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        * {            margin: 0;                        padding: 0;        }        .clearfix::after {            content: "";            display: block;            height: 0;            visibility: hidden;            overflow: hidden;        }        .clearfix {            *zoom: 1;            /*关照ie6 ie7的兼容性*/        }        .nav {            width: 800px;            margin: auto;            border: 1px solid red;        }        .box1 {            width: 400px;            height: 400px;            background-color: green;            float: left;        }        .box2 {            width: 400px;            height: 400px;            background-color: black;            float: left;        }        .box3 {            height: 500px;            width: 800px;            background-color: chartreuse;        }    </style></head><body>    <div class="nav clearfix">        <div class="box1"></div>        <div class="box2"></div>        <div class="box3"></div>    </div></body></html>

双伪元素来革除浮动

语法

.clearfix::before,        .clearfix:after {            content: "";            display: table;        }        .clearfix:after {            clear: both;        }        .clearfix {            *zoom: 1;            /*关照ie6 ie7的兼容性*/        }
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        * {            margin: 0;            padding: 0;        }        .clearfix::before,        .clearfix:after {            content: "";            display: table;        }        .clearfix:after {            clear: both;        }        .clearfix {            *zoom: 1;            /*关照ie6 ie7的兼容性*/        }        .nav {            width: 800px;            margin: auto;            border: 1px solid red;        }        .box1 {            width: 400px;            height: 400px;            background-color: green;            float: left;        }        .box2 {            width: 400px;            height: 400px;            background-color: black;            float: left;        }        .box3 {            height: 500px;            width: 800px;            background-color: chartreuse;        }    </style></head><body>    <div class="nav clearfix">        <div class="box1"></div>        <div class="box2"></div>        <div class="box3"></div>    </div></body></html>

革除浮动的总结

ctrl+f 搜寻网页

ps的基础知识

常见的图片格式

  • jpg
  • gif
  • png
  • psd:photoshop的专用格局

ps如何切片

  • 利用切片工具进行切片
  • 利用新建图层进行切片
  • 利用辅助线进行切片