首页 > 其他分享 >前端学习-CSS-09-浮动

前端学习-CSS-09-浮动

时间:2022-12-18 20:11:23浏览次数:39  
标签:浮动 巨人 元素 进击 标签 09 color 阿尔敏 CSS

学习时间:2022.11.14

目录

浮动

结构伪类选择器

  • 根据元素在HTML的关系查找元素
  • 可以减少HTML对类的依赖,保持代码的整洁
  • 用于查找某父母级元素的子女元素
  • 选择器名:
    • E: first-child{} 匹配父母元素中第一个E元素
    • E: last-child{} 匹配父母元素中最后一个E元素
    • E: nth-child(n){} 匹配父母元素中第n个E元素
    • E: nth-last-child(n){} 匹配父母元素中倒数第n个E元素
<!-- 01-结构伪类选择器.html -->
<!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>
    <style>
        li:first-child{
            background-color: #000;
        }
        li:last-child{
            background-color: green;
        }
        li:nth-child(7){
            background-color: pink;
        }
        li:nth-last-child(7){
            background-color: red;
        }
    </style>
</head>
<body>
    <ul>
        <li>这是第1个li标签</li>
        <li>这是第2个li标签</li>
        <li>这是第3个li标签</li>
        <li>这是第4个li标签</li>
        <li>这是第5个li标签</li>
        <li>这是第6个li标签</li>
        <li>这是第7个li标签</li>
        <li>这是第8个li标签</li>
    </ul>
</body>
</html>
  • 在E: nth-child(n){} 和 E: nth-last-child(n){} 中,不但能填写数字,还能填写公式
  • n的取值范围:
    • 0, 1, 2, 3, 4, 5, 6, 7...
    • 偶数:2n, even
    • 奇数:2n+1, 2n-1, odd
    • 前3个:-n+3
    • 第3个往后:n+3
<!-- 02-结构伪类选择器-公式.html -->
<!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>
    <style>
        li:nth-child(2n){
            background-color: pink;
        }
        li:nth-last-child(-n+3){
            background-color: green;
        }
    </style>
</head>
<body>
    <ul>
        <li>这是第1个li标签</li>
        <li>这是第2个li标签</li>
        <li>这是第3个li标签</li>
        <li>这是第4个li标签</li>
        <li>这是第5个li标签</li>
        <li>这是第6个li标签</li>
        <li>这是第7个li标签</li>
        <li>这是第8个li标签</li>
    </ul>
</body>
</html>

伪元素

  • 页面非主体内容,一些装饰性的内容可以使用伪元素
  • 伪元素是由CSS模拟出的标签
  • 种类:
    • ::before 在父母元素内容的最前面加一个伪元素
    • ::after 在父母元素内容的最后面加一个伪元素
  • 注意事项:
    • 只有添加了content属性,伪元素才会生效
    • 伪元素默认是行内元素
<!-- 03-伪元素.html -->
<!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>
    <style>
        .parent{
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        .parent::before{
            content: '这是添加在父母元素前面的伪元素';
            color: red;
            display: inline-block;
            width: 100px;
            height: 100px;
            background-color: skyblue;
        }
        .parent::after{
            content: '这是添加在父母元素最后的伪元素';
            color: blue;
        }
    </style>
</head>
<body>
    <div class="parent">
        这是父母元素内容
    </div>
</body>
</html>

03-伪元素.html在浏览器的显示效果

浮动

浮动的作用

  • 当我们希望两个盒子在同一行时,可以使用将其转换为行内块标签。但缺点在于,如果希望两个盒子挨在一起,就要在body部分把相应的两个标签放在一行。这样的代码可读性差,不够整齐。
  • 因此我们需要浮动来解决页面布局的问题
  • 早期浮动用于图文环绕
  • 现在浮动用于网页布局
<!-- 04-浮动-体验.html -->
<!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>
    <style>
        img{
            float: left;
        }
        .one, .two{
            width: 100px;
            height: 100px;
        }
        .one{
            background-color: pink;
            float: left;
        }
        .two{
            background-color: green;
            float: left;
        }
    </style>
</head>
<body>
    <!-- 早期浮动的作用-图文环绕 -->
    <img src="../markdown笔记/images/09-02.jpg" alt="这是阿尔敏">
    <div class="arumin">进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏进击的巨人阿尔敏</div>

    <!-- 现在的浮动作用-网页布局 -->
    <div class="one">这是一个div标签</div>
    <div class="two">这是一个div标签</div>
</body>
</html>

04-浮动-体验.html在浏览器的显示效果

浮动的特点

  • 浮动会脱离标准流,在标准流中不占位置,相当于从地面飘到了空中
  • 浮动元素比标准流高半个级别,可以覆盖标准流中的元素
  • 浮动找浮动,下一个浮动元素会在上一个浮动元素后面左右浮动
  • 浮动的标签是顶对齐的,如果想要标签向下移动,使用外边距margin-top就可以
  • 浮动后的标签具有行内块的性质
  • margin: 0 auto和text-align: center不会对浮动元素生效
<!-- 05-浮动的特点.html -->
<!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>
    <style>
        .one{
            width: 100px;
            height: 100px;
            background-color: pink;
            float: left;
            margin-top: 50px;
        }
        .two{
            width: 200px;
            height: 200px;
            background-color: green;
            float: left;
        }
        .three{
            width: 300px;
            height: 300px;
            background-color: orange;
        }
    </style>
</head>
<body>
    <div class="one">第1个div,浮动</div>
    <div class="two">第2个div,浮动</div>
    <div class="three">第3个div</div>
</body>
</html>

05-浮动的特点.html在浏览器的显示效果

清除浮动

浮动带来的影响

  • 父母子女级标签,子女级浮动,父母级没有高度,之后的标准流盒子就会受影响,显示到上面的位置
  • 下面代码可直观看到浮动带来的影响
<!-- 06-浮动带来的影响.html -->
<!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>
    <style>
        div{
            margin: 0 auto;
        }
        .box1{
            width: 1000px;
            /* 如果这里不加高度,就会对标准流元素产生影响 */
            /* height: 400px; */
            background-color: pink;
        }
        .box1 .left{
            float: left;
            width: 200px;
            height: 400px;
            background-color: skyblue;
        }
        .box1 .right{
            float: right;
            width: 780px;
            height: 400px;
            background-color: red;
        }
        .box2{
            width: 1200px;
            height: 100px;
            background-color: green;
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="left"></div>
        <div class="right"></div>
    </div>
    <div class="box2"></div>
</body>
</html>

清除浮动的方法

方法1:给父母元素加一个高度
方法2:额外标签法
  • 步骤
    • 在父母元素的最后加一个块级标签,类名为clearfix(约定俗成)
    • 给该块级标签设置clear:both
  • 额外标签法的缺点在于:多了一个原本不需要的标签,使得HTML结构更加复杂
<!-- 07-清除浮动-额外标签法 -->
<!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>
    <style>
        div{
            margin: 0 auto;
        }
        .box1{
            width: 1000px;
            /* 如果这里不加高度,就会对标准流元素产生影响 */
            /* height: 400px; */
            background-color: pink;
        }
        .box1 .left{
            float: left;
            width: 200px;
            height: 400px;
            background-color: skyblue;
        }
        .box1 .right{
            float: right;
            width: 780px;
            height: 400px;
            background-color: red;
        }
        .box2{
            width: 1200px;
            height: 100px;
            background-color: green;
        }
        .clearfix{
            clear: both;
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="left"></div>
        <div class="right"></div>
        <div class="clearfix"></div>
    </div>
    <div class="box2"></div>
</body>
</html>
方法3:单伪元素标签法
  • 使用伪元素代替额外标签
.clearfix::after{
    <!-- 必须有content,伪元素才能生效 -->
    content: '';
    <!-- 伪元素默认是行内元素,此处需要改为块级元素 -->
    display: block;
    <!-- 清除浮动 -->
    clear: both;
    <!-- 为了浏览器版本兼容,添加以下两句 -->
    height: 0;
    visibility: hidden;
}
<!-- 08-清除浮动-单伪元素标签法.html -->
<!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>
    <style>
        div{
            margin: 0 auto;
        }
        .box1{
            width: 1000px;
            /* 如果这里不加高度,就会对标准流元素产生影响 */
            /* height: 400px; */
            background-color: pink;
        }
        .box1 .left{
            float: left;
            width: 200px;
            height: 400px;
            background-color: skyblue;
        }
        .box1 .right{
            float: right;
            width: 780px;
            height: 400px;
            background-color: red;
        }
        .box2{
            width: 1200px;
            height: 100px;
            background-color: green;
        }
        .clearfix::after{
            content: '';
            display: block;
            clear: both;
            /* 为了浏览器版本的兼容性(主要是针对低版本),添加以下两句 */
            height: 0;
            visibility: hidden;
        }
    </style>
</head>
<body>
    <div class="box1 clearfix">
        <div class="left"></div>
        <div class="right"></div>
    </div>
    <div class="box2"></div>
</body>
</html>
方法4:双伪元素标签法
  • 在代码中添加以下内容即可
  <!-- 下面的代码同时解决塌陷问题和浮动带来的问题 -->
  <!-- 这里使用display: table,父母子女标签不再是块级元素,解决塌陷 -->
  .clearfix::before,
  .clearfix::after{
    content: '';
    display: table;
  }
  <!-- 这里使用clear:both清除浮动 -->
  .clearfix::after{
    clear:both;
  }
方法5:overflow
  • 给父母元素设置overflow:hidden

标签:浮动,巨人,元素,进击,标签,09,color,阿尔敏,CSS
From: https://www.cnblogs.com/ayubene/p/16990849.html

相关文章

  • 前端学习-CSS-10-CSS定位装饰
    学习时间:2022.11.30目录CSS定位装饰定位定位的基本介绍定位的基本方式staticrelativeabsolutefixed不同元素之间的层级关系装饰垂直对齐光标类型边框圆角overflow溢出部分......
  • 实用HTML,CSS和JavaScript速查表--转载
    速查表是帮你记住东西的有效工具。Web设计师和开发者经常使用的快捷键简表会使他们在网上的工作效率大大提高。事实上,速查表就是来帮助我们把日常中最常用到的信息聚集起来......
  • CSS动画
    动画:transfprmm2D变形设置网页元素样式transition制作过度动画:property过度或动态模拟css属性duration:过度需要的时间timing-function过度函数delay过度......
  • CSS
    CSScss是什么css怎么用(快速入门)css选择器(重点+难点)美化网页(文字、阴影、超链接、列表、渐变.....)盒子模型浮动定位网页动画(特效效果)1.1、什么......
  • 现代 CSS 高阶技巧,不规则边框解决方案
    本文是CSSHoudini之CSSPaintingAPI系列第四篇。现代CSS之高阶图片渐隐消失术现代CSS高阶技巧,像Canvas一样自由绘图构建样式!现代CSS高阶技巧,完美的波浪......
  • js 和 css 是如何影响DOM树构建的?
    大家好,我是coderBinjs和css是如何影响DOM树构建的?先做个总结,然后再进行具体的分析:CSS不会阻塞DOM的解析,但是会影响JAVAScript的运行,javaSscript会阻止DOM树的解析,最终......
  • css2
    用了次html写笔记很让我emo我还是用回md吧有出错的「地方」,我会即使改正的emmetCSS的复合选择器CSS的元素显示模式CSS的背景1.Emmet语法简介Emmet插......
  • 题解 CF1109D【Sasha and Interesting Fact from Graph Theory】
    problem你尤其钟情\(a,b\)这两个数。对于一棵N个节点的树,已知所有边的长度都在\([1,m]\)之间,如果节点\(a\)和\(b\)的距离恰好为\(m\),那么你认为这棵树很好看......
  • Vue 中实现全局引入 scss 变量
    导读最终实现的效果是:在vue文件的style标签中以及其它scss文件中都可以直接使用全局配置的scss变量,不需要再导入对应的scss文件。目录结构src│App.vue│......
  • 200009 计算板的土方量和钢筋量已知集中标注
    点击查看代码<?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';$tit='......