css和html第二部分

/* 元素的水平方向的布局 */
                    /* 
                    元素在其父元素中水平方向的位置由以下几个属性共同决定“
                        margin-left
                        border-left
                        padding-left
                        width
                        padding-right
                        border-right
                        margin-right

                    一个元素在其父元素中,水平布局必须要满足以下的等式
                        margin-left+border-left+padding-left+width+padding-right+border-right+margin-right = 其父元素内容区的宽度 (必须满足)

                        0 + 0 + 0 + 200 + 0 + 0 + 0 = 800
                        0 + 0 + 0 + 200 + 0 + 0 + 600 = 800


                        100 + 0 + 0 + 200 + 0 + 0 + 400 = 800
                        100 + 0 + 0 + 200 + 0 + 0 + 500 = 800
                    - 以上等式必须满足,如果相加结果使等式不成立,则称为过度约束,则等式会自动调整
                        - 调整的情况:
                            - 如果这七个值中没有为 auto 的情况,则浏览器会自动调整margin-right值以使等式满足
                    - 这七个值中有三个值和设置为auto
                        width
                        margin-left
                        maring-right
                        - 如果某个值为auto,则会自动调整为auto的那个值以使等式成立
                            0 + 0 + 0 + auto + 0 + 0 + 0 = 800  auto = 800
                            0 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 600
                            200 + 0 + 0 + auto + 0 + 0 + 200 = 800  auto = 400

                            auto + 0 + 0 + 200 + 0 + 0 + 200 = 800  auto = 400


                            auto + 0 + 0 + 200 + 0 + 0 + auto = 800  auto = 300

                        - 如果将一个宽度和一个外边距设置为auto,则宽度会调整到最大,设置为auto的外边距会自动为0
                        - 如果将三个值都设置为auto,则外边距都是0,宽度最大
                        - 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值
                            所以我们经常利用这个特点来使一个元素在其父元素中水平居中
                            示例:
                                width:xxxpx;
                                margin:0 auto;
             */

                .box2{
                    margin:0 auto;
                }

/*垂直方向布局  */
                /* 
                 子元素是在父元素的内容区中排列的,
                    如果子元素的大小超过了父元素,则子元素会从父元素中溢出
                    使用 overflow 属性来设置父元素如何处理溢出的子元素

                    可选值:
                        visible,默认值 子元素会从父元素中溢出,在父元素外部的位置显示
                        hidden 溢出内容将会被裁剪不会显示
                        scroll 生成两个滚动条,通过滚动条来查看完整的内容
                        auto 根据需要生成滚动条
                 */
                 .box1{
            width: 200px;
            height: 200px;
            background-color: #bfa;
            overflow: auto;    
        }



            /* 
                行内元素的盒模型
                    - 行内元素不支持设置宽度和高度
                    - 行内元素可以设置padding,但是垂直方向padding不会影响页面的布局
                    - 行内元素可以设置border,垂直方向的border不会影响页面的布局
                    - 行内元素可以设置margin,垂直方向的margin不会影响布局
             */
         /* 
                display 用来设置元素显示的类型
                    可选值:
                        inline 将元素设置为行内元素
                        block 将元素设置为块元素
                        inline-block 将元素设置为行内块元素 
                                行内块,既可以设置宽度和高度又不会独占一行
                        table 将元素设置为一个表格
                        none 元素不在页面中显示

                visibility 用来设置元素的显示状态
                    可选值:
                        visible 默认值,元素在页面中正常显示
                        hidden 元素在页面中隐藏 不显示,但是依然占据页面的位置
                        后面下拉菜单和浮动块的解决方式之一
             */

/* 更高级的布局手段:浮动 */
             /* 
                通过浮动可以使一个元素向其父元素的左侧或右侧移动
                    使用 float 属性来设置于元素的浮动
                        可选值:
                            none 默认值 ,元素不浮动
                            left 元素向左浮动
                            right 元素向右浮动

                    注意,元素设置浮动以后,水平布局的等式便不需要强制成立
                        元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置,
                            所以元素下边的还在文档流中的元素会自动向上移动

                    浮动的特点:
                        1、浮动元素会完全脱离文档流,不再占据文档流中的位置
                        2、设置浮动以后元素会向父元素的左侧或右侧移动,
                        3、浮动元素默认不会从父元素中移出
                        4、浮动元素向左或向右移动时,不会超过它前边的其他浮动元素
                        5、如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移
                        6、浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高

                    简单总结:
                        浮动目前来讲它的主要作用就是让页面中的元素可以水平排列,
                            通过浮动可以制作一些水平方向的布局 
                            
                     浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围,
                    所以我们可以利用浮动来设置文字环绕图片的效果


                元素设置浮动以后,将会从文档流中脱离,从文档流中脱离后,元素的一些特点也会发生变化

                脱离文档流的特点:
                    块元素:
                        1、块元素不在独占页面的一行
                        2、脱离文档流以后,块元素的宽度和高度默认都被内容撑开

                    行内元素:
                        行内元素脱离文档流以后会变成块元素,特点和块元素一样

                    脱离文档流以后,不需要再区分块和行内了
             */
            .box1{
                float: left;
                float: right;
                float: initial;
                /* 从父元素继承浮动属性 */
            }
/* 开启BFC */
                 /* 
                BFC(Block Formatting Context) 块级格式化环境
                    - BFC是一个CSS中的一个隐含的属性,可以为一个元素开启BFC
                        开启BFC该元素会变成一个独立的布局区域
                    - 元素开启BFC后的特点:
                        1.开启BFC的元素不会被浮动元素所覆盖
                        2.开启BFC的元素子元素和父元素外边距不会重叠
                        3.开启BFC的元素可以包含浮动的子元素

                    - 可以通过一些特殊方式来开启元素的BFC:
                        1、设置元素的浮动(不推荐)
                        2、将元素设置为行内块元素(不推荐)
                        3、将元素的overflow设置为一个非visible的值
                            - 常用的方式 为元素设置 overflow:hidden 开启其BFC 以使其可以包含浮动元素
            
             */
                /* 
                高度塌陷的问题:
                    在浮动布局中,父元素的高度默认是被子元素撑开的,
                        当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离
                        将会无法撑起父元素的高度,导致父元素的高度丢失

                    父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱

                    所以高度塌陷是浮动布局中比较常见的一个问题,这个问题我们必须要进行处理!
             clear
                    - 作用:清除浮动元素对当前元素所产生的影响
                    - 可选值:
                        left 清除左侧浮动元素对当前元素的影响
                        right 清除右侧浮动元素对当前元素的影响
                        both 清除两侧中最大影响的那侧

                    原理:
                        设置清除浮动以后,浏览器会自动为元素添加一个上外边距,
                            以使其位置不受其他元素的影响
             
             
             
                    */
/* 最终解决高度塌陷 */
            /* clearfix 这个样式可以同时解决高度塌陷和外边距重叠的问题,
            当你在遇到这些问题时,直接使用clearfix这个类即可 */
        .clearfix::before,
        .clearfix::after{
            content: '';
            display: table;
            clear: both;
        }
/* 定位 */
                /*
                定位(position)
                    - 定位是一种更加高级的布局手段
                    - 通过定位可以将元素摆放到页面的任意位置
                    - 使用position属性来设置定位
                        可选值:
                            static 默认值,元素是静止的没有开启定位
                            relative 开启元素的相对定位
                            absolute 开启元素的绝对定位
                            fixed 开启元素的固定定位
                            sticky 开启元素的粘滞定位

                    - 相对定位:
                        - 当元素的position属性值设置为relative时则开启了元素的相对定位
                        - 相对定位的特点:
                            1.元素开启相对定位以后,如果不设置偏移量元素不会发生任何的变化
                            2.相对定位是参照于元素在文档流中的位置进行定位的
                            3.相对定位会提升元素的层级
                            4.相对定位不会使元素脱离文档流
                            5.相对定位不会改变元素的性质块还是块,行内还是行内
                    -  绝对定位
                        - 当元素的position属性值设置为absolute时,则开启了元素的绝对定位
                        - 绝对定位的特点:
                            1.开启绝对定位后,如果不设置偏移量元素的位置不会发生变化
                            2.开启绝对定位后,元素会从文档流中脱离
                            3.绝对定位会改变元素的性质,行内变成块,块的宽高被内容撑开
                            4.绝对定位会使元素提升一个层级
                            5.绝对定位元素是相对于其包含块进行定位的

                            包含块( containing block )
                                - 正常情况下:
                                    包含块就是离当前元素最近的祖先块元素
                                    <div> <div></div> </div>
                                    <div><span><em>hello</em></span></div>

                                - 绝对定位的包含块:
                                    包含块就是离它最近的开启了定位的祖先元素,
                                        如果所有的祖先元素都没有开启定位则根元素就是它的包含块

                                - html(根元素、初始包含块)
                        - 固定定位:
                            - 将元素的position属性设置为fixed则开启了元素的固定定位
                            - 固定定位也是一种绝对定位,所以固定定位的大部分特点都和绝对定位一样
                                唯一不同的是固定定位永远参照于浏览器的视口进行定位
                                固定定位的元素不会随网页的滚动条滚动
                        - 粘滞定位
                            - 当元素的position属性设置为sticky时则开启了元素的粘滞定位
                            - 粘滞定位和相对定位的特点基本一致,
                                不同的是粘滞定位可以在元素到达某个位置时将其固定

                    - 偏移量(offset)
                        - 当元素开启了定位以后,可以通过偏移量来设置元素的位置
                            top
                                - 定位元素和定位位置上边的距离
                            bottom
                                - 定位元素和定位位置下边的距离

                                - 定位元素垂直方向的位置由top和bottom两个属性来控制
                                    通常情况下我们只会使用其中一
                                - top值越大,定位元素越向下移动
                                - bottom值越大,定位元素越向上移动
                            left
                                - 定位元素和定位位置的左侧距离
                            right
                                - 定位元素和定位位置的右侧距离

                                - 定位元素水平方向的位置由left和right两个属性控制
                                    通常情况下只会使用一个
                                - left越大元素越靠右
                                - right越大元素越靠左

              */
         /* 
                水平布局
                    left + margin-left + border-left + padding-left + width + padding-right + border-right + margin-right + right = 包含块的内容区的宽度

                - 当我们开启了绝对定位后:


                    水平方向的布局等式就需要添加left 和 right 两个值


                        此时规则和之前一样只是多添加了两个值:
                            当发生过度约束:
                                如果9个值中没有 auto 则自动调整right值以使等式满足
                                如果有auto,则自动调整auto的值以使等式满足

                        - 可设置auto的值
                            margin width left right

                        - 因为left 和 right的值默认是auto,所以如果不指定left和right
                            则等式不满足时,会自动调整这两个值

                    垂直方向布局的等式的也必须要满足
                        top + margin-top/bottom + padding-top/bottom + border-top/bottom + height = 包含块的高度

            
             */
             .box1{
                 
                    left: 0;
                    right: 0;

                    top: 0;
                    bottom: 0;
             }
/* 元素的层级 */
               /* 
                对于开启了定位元素,可以通过z-index属性来指定元素的层级
                    z-index需要一个整数作为参数,值越大元素的层级越高
                        元素的层级越高越优先显示

                    如果元素的层级一样,则优先显示靠下的元素

                    祖先的元素的层级再高也不会盖住后代元素
             */
             .box1{
                z-index: 3;
             }
/* 字体及其相关 */
        /* 
        font-face可以将服务器中的字体直接提供给用户去使用 
            问题:
                1.加载速度
                2.版权
                3.字体格式
        
        */
        @font-face {
                /* 指定字体的名字 */
            font-family:'myfont' ;
            /* 服务器中字体的路径 */
            src: url('./font/ZCOOLKuaiLe-Regular.ttf') format("truetype");
        }

        p{
            /* 
            字体相关的样式 
                color 用来设置字体颜色
                font-size 字体的大小
                    和font-size相关的单位
                    em 相当于当前元素的一个font-size
                    rem 相对于根元素的一个font-size
        —font-family 字体族(字体的格式)
                    可选值:
                        serif  衬线字体
                        sans-serif 非衬线字体
                        monospace 等宽字体
                            - 指定字体的类别,浏览器会自动使用该类别下的字体

                    - font-family 可以同时指定多个字体,多个字体间使用,隔开
                        字体生效时优先使用第一个,第一个无法使用则使用第二个 以此类推

                        Microsoft YaHei,Heiti SC,tahoma,arial,Hiragino Sans GB,"\5B8B\4F53",sans-serif


            */
            color: blue;
            font-size: 40px;

            /* font-family: 'Courier New', Courier, monospace; */
            font-family: myfont;
        }
        /*  图标字体(iconfont)
            - 在网页中经常需要使用一些图标,可以通过图片来引入图标
                但是图片大小本身比较大,并且非常的不灵活
            - 所以在使用图标时,我们还可以将图标直接设置为字体,
                然后通过font-face的形式来对字体进行引入
            - 这样我们就可以通过使用字体的形式来使用图标

        fontawesome 使用步骤
            1.下载 https://fontawesome.com/
            2.解压
            3.将css和webfonts移动到项目中
            4.将all.css引入到网页中
            5.使用图标字体
                - 直接通过类名来使用图标字体
                    class="fas fa-bell"
                    class="fab fa-accessible-icon" */
         /* 
                通过伪元素来设置图标字体
                    1.找到要设置图标的元素通过before或after选中
                    2.在content中设置字体的编码
                    3.设置字体的样式
                        fab
                        font-family: 'Font Awesome 5 Brands';

                        fas
                        font-family: 'Font Awesome 5 Free';
                        font-weight: 900; 

            */
            li::before{
           
           content: '\f1b0';
           /* font-family: 'Font Awesome 5 Brands'; */
           font-family: 'Font Awesome 5 Free';
           font-weight: 900; 
           color: blue;
           margin-right: 10px;
       }
       /* 通过实体来使用图标字体:
            &#x图标的编码; */
/* 行高 */
        /* 
                行高(line height)
                    - 行高指的是文字占有的实际高度
                    - 可以通过line-height来设置行高
                        行高可以直接指定一个大小(px em)
                        也可以直接为行高设置一个整数
                            如果是一个整数的话,行高将会是字体的指定的倍数
                    - 行高经常还用来设置文字的行间距
                        行间距 = 行高 - 字体大小

                字体框
                    - 字体框就是字体存在的格子,设置font-size实际上就是在设置字体框的高度

                行高会在字体框的上下平均分配
                可以将行高设置为和高度一样的值,使单行文字在一个元素中垂直居中

            */
            div{
            border: 1px red solid;


            /* 
                font 可以设置字体相关的所有属性
                    语法:
                        font: 字体大小/行高 字体族
                        行高 可以省略不写 如果不写使用默认值
            
            */

            /* font-size: 50px;
            font-family: 'Times New Roman', Times, serif; */
            font-weight: bold;
            /* font: 50px/2  微软雅黑, 'Times New Roman', Times, serif; */
            /* font: normal normal 50px/2  微软雅黑, 'Times New Roman', Times, serif; */
            font: bold italic 50px/2  微软雅黑, 'Times New Roman', Times, serif;
            /* font:50px 'Times New Roman', Times, serif;
            line-height: 2; */

            /* font-size: 50px; */

            /* font-weight 字重 字体的加粗 
                可选值:
                    normal 默认值 不加粗
                    bold 加粗
                    100-900 九个级别(没什么用)

                font-style 字体的风格
                    normal 正常的
                    italic 斜体
            */
            /* font-weight: bold; */
            /* font-weight: 500;
            font-style: italic;斜体 */
        }
        div{
            width: 800px;
            border: 1px red solid;

            /* 
                text-align 文本的水平对齐
                    可选值:
                        left 左侧对齐
                        right 右对齐
                        center 居中对齐
                        justify 两端对齐
            */
            /* text-align: justify; */

            font-size: 50px;
        }

        span{
            font-size: 20px;
            border: 1px blue solid;

                /*
                vertical-align 设置元素垂直对齐的方式
                    可选值:
                        baseline 默认值 基线对齐
                        top 顶部对齐
                        bottom 底部对齐
                        middle 居中对齐
                */
            vertical-align:baseline; 
        }

        p{
            border: 1px red solid;

        }

        img{
            vertical-align: bottom;
        }
        .box1{
            font-size: 50px;
            font-family: 微软雅黑;


            /* 
                text-decoration 设置文本修饰
                    可选值:
                        none 什么都没有
                        underline 下划线
                        line-through 删除线
                        overline 上划线
            */

            /* text-decoration: overline; */

            /* text-decoration: underline red dotted; */
        }

        .box2{
            width: 200px;
            /* 
                white-space 设置网页如何处理空白
                    可选值:
                        normal 正常
                        nowrap 不换行
                        pre 保留空白

            */
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值