CSS基础学习——浮动float、盒子模型

一、浮动

1、什么是浮动?

浮动(float)就是让块级标签不独占一行。目的(使用场景):把块级标签元素可以排在一行上。

 

2、浮动的原理

就是让元素脱离文档流,不占用标准流。

 

3、浮动的属性

float:left:左浮动

float:right:右浮动

float:none:默认值,不浮动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .wrapper{
            width: 600px;
            margin: 0 auto;
            border: 1px solid #666;
        }
        .box1,.box2{
            width: 200px;
            height: 150px;
        }
        .box1{
            background-color: #ff0000;
        }
        .box2{
            background-color: #217aff;
        }

    </style>
</head>
<body>
    <div class="wrapper">
        <div class="box1">box1</div>
        <div class="box2">box2</div>
    </div>
</body>
</html>

先看一下原来的效果,现在可以添加浮动属性来查看

.box2{
   background-color: #217aff;
   float: right;
}

再给box1添加浮动属性

.box1{
    background-color: #ff0000;
    float: left;
}

可以看到,当添加玩浮动后,元素块也会进行移动,之前在原理处也讲过,浮动就是元素脱离文档流,不占用标准流。

如果此时再添加一个box效果又会如何:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .wrapper{
            width: 600px;
            margin: 0 auto;
            border: 1px solid #666;
        }
        .box1,.box2,.box3{
            width: 200px;
            height: 150px;
        }
        .box1{
            background-color: #ff0000;
            float: left;
        }
        .box2{
            background-color: #217aff;
            float: right;
        }

    </style>
</head>
<body>
    <div class="wrapper">
        <div class="box1">box1</div><!--这里的div属于块级标签,会独占一行-->
        <div class="box2">box2</div>
        <div class="box3">box3</div>
    </div>
</body>
</html>

可以看到,浮动后,后面的元素不管是块级还是行级元素,都不会显示在下一行,为了避免这一情况的发生,我们可以清除浮动

 

4、清除浮动

目的:让后面的元素自动掉到下一行。

(1)添加空标签,并设置样式
clear:left;  清除左浮动
clear:right; 清除右浮动
clear:both;  清除左右浮动
clear:none;  左右浮动都不清除

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .wrapper{
            width: 600px;
            margin: 0 auto;
            border: 1px solid #666;
        }
        .box1,.box2,.box3{
            width: 200px;
            height: 150px;
        }
        .box1{
            background-color: #ff0000;
            float: left;
        }
        .box2{
            background-color: #217aff;
            float: right;
        }
        .clear{
            clear: both; 
        }
        .box3 {
            background-color: #58ff62;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="box1">box1</div>
        <div class="box2">box2</div>
        <div class="clear"></div>
        <div class="box3">box3</div>
    </div>


</body>
</html>

(2)在要清除浮动的父级添加样式:overflow:hidden;

overflow:hidden;  超出部分隐藏,也可以用来实现清除浮动。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
        <style>
            .wrapper{
                width: 600px;
                margin: 0 auto;
                border: 1px solid #666;
                overflow: hidden;
            }
            .box1,.box2,.box3{
                width: 200px;
                height: 150px;
            }
            .box1{
                background-color: #ff0000;
                float: left;
            }
            .box2{
                background-color: #217aff;
                float: right;
            }
            .box3 {
                background-color: #58ff62;
            }
        </style>
</head>
<body>
<div class="wrapper">
    <div class="box1">box1</div>
    <div class="box2">box2</div>

</div>
    <div class="box3">box3</div>
</body>
</html>

此时需要的是将box3的div移出来,不要放在wrapper下,至于box3为什么不在box1下,也是因为box3不在wrapper下,所以个wrapper设置的样式,就不在box3身上显示

(3)在要清除浮动的父级添加伪元素,并设定样式:

父元素:after{
     content:"";
     display: block;
     clear:both;
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .wrapper{
                width: 600px;
                margin: 0 auto;
                border: 1px solid #666;
            }

            .wrapper:after{
                content:"";
                display: block;
                clear:both;
            }

            .box1,.box2,.box3{
                width: 200px;
                height: 150px;
            }
            .box1{
                background-color: #ff0000;
                float: left;
            }
            .box2{
                background-color: #217aff;
                float: right;
            }
            .box3 {
                background-color: #58ff62;
            }
        </style>
    </head>



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

</div>
    <div class="box3">box3</div>
</body>
</html>

效果和第二个一样,所以在开发过程中推荐使用第二个,比较方便

 

五、盒子模型

1、组成

左右规定了元素框处理元素内容( content )、内边距( padding )、边框( border ) 和外边距( margin ) 的方式

2、介绍

(1)margin(外边距)

margin-left:左边距

margin-right:右边距

margin-top:上边距

margin-bottom:下边距

margin:可用来设置任意一个边的边距,可以带1至4个参数。

1个(apx):表示上下左右都有这样的外边距apx

2个(apx bpx):表示上下外边距为apx,左右外边距为bpx

3个(apx bpx cpx):表示上外边距为apx,下外边距为cpx,左右外边距为bpx

4个(apx bpx cpx dpx):表示上为apx,右为bpx,下为cpx,左为dpx

 

(2)padding(内边距)

与margin相同

 

(3)border

border-width : 设置边框的宽度。

border-style : 设置边框的样式。

(1)none: 默认值,无边框。

(2)solid: 定义实线边框。

(3)double 定义双实线边框。

(4)dotted`: 定义点状线边框。

(5)dashed:定义虚线边框。

border-color : 设置边框的颜色。

border 边框的简写: {width style color} ,顺序可以随便

盒子的真实尺寸如下:

盒子宽度 = width + padding左右 + border

盒子高度 = height + padding上下 + border上下

 

(4)display:用来设置元素的显示方式

display:none:不显示元素

display: block:块显示,在元素前后设置换行符。目的:将行级标签转换为块级标签(因为行级标签不识别宽高,而块级标签识别,转换后,行级标签也可以设置宽高了)

display:inline:行内显示,将块级标签转换为行级标签。

display:inline-block;将块级或行级标签转换为行内块级标签。

### CSS盒子模型中的浮动属性 #### 浮动的定义与基本用法 浮动(`float`)是一个CSS属性,主要用于让元素脱离正常的文档流并沿着其包含块的边缘放置。这使得其他内容可以围绕该元素流动[^1]。 当应用 `float` 属性时,通常会指定方向 (`left` 或者 `right`) 来决定元素向哪一侧漂浮。例如: ```css .box { float: left; } ``` 这段代码会使 `.box` 类下的HTML元素沿左侧排列,并允许后续的内容环绕在其右侧。 #### 浮动的关键特性 - **多列布局支持**:通过设置不同宽度和高度以及相应的外边距(`margin`)、内边距(`padding`)等样式,可以使多个块级元素在同一行显示,从而创建简单的两栏或多栏页面结构。 - **不影响父容器尺寸**:除非设置了清除浮动(`clear`)或其他机制阻止这种情况发生,否则浮动的子元素不会影响到它的直接父节点的高度计算;也就是说,如果只含有浮动子项,则可能造成父级无法自动扩展以包裹这些内部组件[^4]。 - **保持在父元素范围内**:尽管浮动对象已经离开了常规的文本流向,但它仍然会被约束于最近已定位祖先框之内——即不会溢出最接近的一个具有明确边界条件(比如指定了宽高) 的上级标签之外。 为了更好地理解如何利用浮动构建网页设计,下面给出一段具体的实例说明: 假设有一个外部的大方块作为整体框架,里面包含了三个较小的不同颜色的小正方形,其中两个被赋予了左边浮动的效果而另一个未做任何特殊处理: ```html <div id="container"> <div class="small-box red"></div> <div class="small-box green" style="float:left;"></div> <div class="small-box blue" style="float:right;"></div> </div> <style> #container{ border: solid black 1px; } .small-box{ width: 50px; height: 50px; } .red {background:red;} .green {background:green;} .blue {background:blue;} </style> ``` 在这个例子中,绿色和蓝色的小方格将会分别靠紧它们各自所在侧边,红色则维持默认行为位于顶部中央位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值