前端基础之浮动个人相册

相册的布局同样使用到浮动float

这里同时使用到了html和css代码。

在编写代码时,由于排版不合理,产生了很多奇奇怪怪的结果,包括但不限于图片文字重叠、布局稀碎甚至会将已经按顺序排好的图片挤到移位……

好在最后在老师和同学们的帮助下厘清了位置排布,重新编写运行了代码。

附上浮动相关内容:

传统网页布局的三种方式:
1、普通流(标准流/文档流)
    标签按照规定好默认方式排列

    1、块级元素会独占一行,从上向下顺序排列
    2、行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行

    最基本的布局方式
这三种方式都是用来摆放盒子的,把盒子摆放到合适的位置
2、浮动

为什么需要浮动?
如何让三个div排列成一行?
    使用inline-block,会有空白缝隙,很难控制
很多布局效果,标准流无法实现,可以利用浮动完成布局,浮动可以改变元素默认的排列方式
可以让多个块级元素排列成一行

什么是浮动?
float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘

语法:
选择器{
    float:属性值
}
可选值:
    left(左浮动)
    right(右浮动)
    none(不浮动)

浮动的特性(重要):
    1、浮动元素会脱离标准流
          浮动元素不会保留原来的位置
    2、浮动的元素会一行显示并且元素顶部对齐
          注意:浮动的元素是互相贴靠在一起的,如果父级元素宽度装不下这些盒子,多出的盒子会另起一行对齐
    3、浮动的元素会有行内块元素的特性
          任何元素都可以浮动,不管原先是什么元素类型,浮动后都有行内块的特性

浮动元素经常和标准流父级搭配使用
为了约束浮动元素的位置,我们网页布局一般采用的策略是:
    先用标准流的父元素排列上下位置后,内部子元素采取浮动排列左右位置

浮动的注意点:
    1、浮动和标准流的父盒子搭配
    2、一个元素浮动了,理论上其余的兄弟元素也要浮动
浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流


清除浮动:
浮动元素的父元素必须设置一个高度,才能正常显示
理想状态:
    让子元素撑开父元素,父元素自适应宽高
为什么需要清除浮动?
父级盒子很多的情况下,不方便给高度,但是盒子浮动又不占有位置,父级盒子的高度就会变为0,那么就会影响后面的布局

如何清除浮动?
1、清除浮动的本质就是清除浮动元素造成的影响
2、如父盒子本身有高度,就不需要清除了
3、清除浮动后,父级就会根据浮动的盒子自动检测高度,就不会影响后面的布局了

语法:
    选择器{
    clear:left/right/both
    }
清除浮动的方法:
嵌套块元素的垂直外边距的塌陷
        父子元素,都设置了margin-top值,此时,只会有一个起作用,而且是只对父元素起作用,取较大的值

        解决方法:
        1、给父元素添加border-top
        2、给父元素添加padding-top
        3、给父元素设置overflow:hidden

1、额外标签法
    在浮动元素末尾添加一个空标签(不能是行内元素),设置clear:both
    优点:通俗易懂,书写方便
    缺点:添加许多无意义的标签,结构化较差
2、父级添加overflow属性
    给父元素添加overflow属性,可以设置为hidden、auto、scroll
    优点:代码简洁
    缺点:无法显示溢出的部分
3、父级元素添加after伪元素
    :after方式是额外标签法的升级版,也是给父元素添加:
    .clearfix:after{
        content: "";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }
    
    .clearfix{
        *zoom:1 //IE6、7专有
    }
    优点:
        没有增加标签,结构更简单
    缺点:    需要照顾低版本浏览器
4、父级添加双伪元素
    给父元素添加
    .clearfix:before,.clearfix:after{
        content:"";
        display:table;
    }

    .clearfix:after{
        clear:both;
    }

    .clearfix{
        *zoom:1
    }

    优点:
        没有增加标签,结构更简单
    缺点:    需要照顾低版本浏览器

运行代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>相册鸭</title>
    <link rel="stylesheet" href="F:/VS Code相关/浮动-个人相册.css">
</head>

<body>

    <div id="first-row" class="box1">
        <div class="w box2">艺术摄影</div>
        <div class="w box2">婚纱摄影</div>
        <div class="w box2">纪实摄影</div>
        <div class="w box2">儿童摄影</div>
        <div class="w box2">摄影器材</div>
        <div class="w box2">创意摄影</div>
        <!-- <span class="w">艺术摄影</span>
            <span class="w">婚纱摄影</span>
            <span class="w">纪实摄影</span>
            <span class="w">儿童摄影</span>
            <span class="w">摄影器材</span>
            <span class="w">创意摄影</span> -->
    </div>



    <div class="row2">

        <div id="second-row" class="row1">
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic07.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic02.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic03.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
        </div>


        <div id="third-row" class="row2">
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic04.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic05.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic06.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
        </div>

        <div id="fourth-row" class="row3">
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic01.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic08.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
            <div class="box3">
                <img src="F:/VS Code相关/images/objpic09.jpg" class="img">
                <div class="w2">摄影艺术</div>
            </div>
        </div>


    </div>

</body>

</html>
.box1 {
    width: 1500px;
    height: 50px;
    text-align: center;
    line-height: 50px;
}

.box2 {
    width: 80px;
    height: 50px;
    text-align: center;
    float: left;
    background-color: darkgrey;
    border: 2px solid white(210, 252, 163);
}

.box3 {
    width: 300px;
    height: 200px;
    text-align: center;
    float: left;
    border: 10px solid white;
}

.w {
    margin-left: 10px;
    color: honeydew;
    size: 2em;
    align-items: center;
    float: left;
    position: relative;
}

.w2 {
    margin: 10px;
    color: rgb(7, 7, 7);
    size: 2em;
    align-items: center;
    position: relative;
}

.row1 {
    width: 1500px;
    height: 300px;
    background-color: white;
    margin: 0 auto;
    margin-left: auto;
    margin-right: auto;
    /* border: 1px solid red; */
}

.row2 {
    width: 1500px;
    height: 300px;
    background-color: white;
    margin: 0 auto;
    /* border: 1px solid red; */
}

.row3 {
    width: 1500px;
    height: 300px;
    background-color: white;
    margin: 0 auto;
    /* border: 1px solid red; */
}

.img {
    width: 300px;
    height: 200px;
}

成品展示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值