html&css之盒子模型、伸缩盒布局和浮动问题

1.盒子种类及区别

种类:1.内容盒子,也叫w3c盒子、标准盒子                                                                                      2.边框盒子,也叫IE盒子、怪异盒子   设置盒子属性box-sizing:content-box(默认内容盒         子)/border-box(边框盒子)

盒子的结构如下:

 

区别:1.内容盒子的width和height是设置给内容区的,而边框盒子的宽高是设置给盒子本身的box-sizing:content-box(border/margin/padding占据的都是页面的大小)
内容盒子的宽高计算:A=width+border-left+border-right+padding-left+padding-right
内容盒子占页面的宽:A+margin-right+margin-left
边框盒子的宽高计算:width=内容区宽度+border-left+border-right+padding-left+padding-right
边框盒子占页面的宽:width+margin-right+margin-left

2.盒子属性及背景样式

盒子一般指块元素,一个盒子由外边距、内边距、边框、内容区组成。width&height:设置的是元素内容区的宽高  width块级元素默认100%    height:默认为0,由子元素填充

1、min-width&max-width

元素最大/最小宽度 限制当前元素最大最小取值,不设置宽高时按最大宽度显示

2、 background-color设置背景颜色

3、background-image设置背景图片

4、background-repeat设置背景图片是否平铺(默认取值repeat平铺)

5、background-position设置背景图片的位置

6、背景样式速写background: blue url(xxx.jpg) no-repeat 20px 20px;

7、 background-attachment: fixed设置背景图片不随滚动条滚动而滚动

3.伸缩盒布局(弹性布局)

一、容器属性(设置给父元素的属性)

1、flex-deriction(用于更改主轴方向) 取值:row(默认水平正向)|row-reverse(水平方向反向排布)|column(垂直方向自顶向下排布)|column-reverse

2、flex-wrap(设置换行方式) 取值:nowrap(默认不换行)|wrap(换行)|wrap-reverse(反向换行) 

    <style>
        .container{
            width: 300px;
            height: 300px;
            margin: 0 auto;
            background-color: rgb(246, 210, 210);
            /* 开启弹性盒布局 默认弹性元素沿主轴方向排列*/
            display: flex;
            /* 默认不换行 如果弹性容器超出父容器的宽度 等比例压缩 */
            /* 设置弹性元素换行 默认是wrap wrap-reverse反向换行  */
            /* flex-wrap: wrap; */
            /* flex-flow是flex-direction和flex-wrap属性结合 */
            flex-wrap:wrap-reverse;
        }
        /* 设置子元素样式 */
        .container div{ width: 60px;height: 50px;color: white;  }
    </style>
<body>
    <div class="container">
        <div class="div1" style="background-color:red;">弹性盒子1</div>
        <div class="div2" style="background-color:blue;">弹性盒子2</div>
        <div class="div3" style="background-color:yellow;">弹性盒子3</div>
        <div class="div1" style="background-color:red;">弹性盒子4</div>
        <div class="div2" style="background-color:blue;">弹性盒子5</div>
        <div class="div3" style="background-color:yellow;">弹性盒子6</div>
        <div class="div1" style="background-color:red;">弹性盒子7</div>
        <div class="div2" style="background-color:blue;">弹性盒子8</div>
        <div class="div3" style="background-color:yellow;">弹性盒子9</div>
    </div>
</body>

 默认元素不换行,弹性容器超出父元素长度等比例压缩:

 

 正向换行/反向换行:

                 

 

 3、flex-flow 为flex-deriction与flex-wrap属性的简写集合,默认为row nowrap,即横向排列不换行

4、justify-content(设置子元素在主轴上的对齐方式) 

取值:flex-start(默认左对齐)|flex-end右对齐|center居中|space-between两端对齐|space-around|space-evenly平均分配 

5、 align-items(设置子元素在交叉轴上的列方式)

默认stretch,前提是项目没设置高度或为auto占满整个容器
取值:flex-start|flex-end|center|baseline基线对齐|stretch(默认)

6、align-content(设置多行对齐 在交叉轴上) 前提:开启换行flex-wrap: wrap
取值:flex-start|flex-end|center|space-between|space-around|space-evenly|stretch(默认)

<style>
        .container{
            width: 300px;height: 300px;margin: 0 auto;
            background-color: rgb(246, 210, 210);
            display: flex;
            /* 开启换行 使用多行对齐的效果的前提 */
            flex-wrap: wrap;
            align-content: flex-end;
            /*align-content: flex-start;*/
            /*align-content: center;*/
            /*align-content: space-between;*/
            /*align-content: space-around;*/
            /*align-content: space-evenly;*/
            /*align-content: stretch(默认);*/
        }
        .container div{ width: 60px;height: 50px;color: white; }
    </style>
</head>
<body>
    <div class="container">
        <div class="div1" style="background-color:red;">弹性盒子1</div>
        <div class="div2" style="background-color:blue;">弹性盒子2</div>
        <div class="div3" style="background-color:yellow;">弹性盒子3</div>
        <div class="div1" style="background-color:red;">弹性盒子4</div>
        <div class="div2" style="background-color:blue;">弹性盒子5</div>
        <div class="div3" style="background-color:yellow;">弹性盒子6</div>
        <div class="div1" style="background-color:red;">弹性盒子7</div>
        <div class="div2" style="background-color:blue;">弹性盒子8</div>
        <div class="div3" style="background-color:yellow;">弹性盒子9</div>
    </div>

align-content:flex-start/flex-end/center,分别处于交叉轴的上面、下面和中间(图中标签名有误,应为align-content)

 

 align-content:space-between第一行和最后一行紧贴顶部和底部,内容超过两行中间的均匀分布

                       

  align-content:space-around/space-evenly(图像标签名有误)

                           

 二、元素(项目)属性(子元素)

 1.order(项目排序)
取值:默认0,用于决定项目排列顺序,数值越小,项目排列越靠前。
2.flex-grow(剩余空间处理)
默认0 容器再有剩余空间的情况下默认不会被其它元素占据的
假设默认三个项目中前两个个项目都是0,最后一个是1,最后的项目会占满剩余所有空间。
3.flex-shrink(是否等比例压缩)
剩余空间不足的时候是否等比例压缩 默认是1,等比例压缩 为0不参与压缩
4.flex-basis(更改项目宽度)
取值:默认auto,项目会保持默认宽度,或者以width为自身的宽度
如果设置了flex-basis basis优先级高于width
5.flex(属性组合)
取值:默认0 1 auto
flex属性是flex-grow,flex-shrink与flex-basis三个属性的简写
6.align-self(对齐方式)
设置弹性元素自身在交叉轴的对齐方式
取值:auto(默认)|flex-start|flex-end|center|baseline|stretch

4.浮动 

 1.浮动float

取值:left/right/none

特性:脱离文档流 原先位置不保留 飘在文档流上方,他下方的元素会立即向上移动,那么这个元素就会被前一个元素覆盖,对于父元素,如果给子元素设置浮动,那么会导致父元素高度塌陷,所以在使用浮动这个属性后需要清除浮动。

 2.清除浮动

1、对哪一个元素造成了影响就在哪个元素添加clear:both属性(仅用于兄弟元素之间)

2、伪元素清除浮动
    ::after{
        content:"",
        display:block,
        clear:both
    }

3、加一个空白div(浮动元素之后)
     对其进行清除浮动{clear:both}

4、给父元素加高度(不推荐,父元素的高度将不能自适应)

5、触发BFC 即设置属性overflow:auto/hidden 

 

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值