CSS基础

本文详细介绍了CSS的基础知识,包括样式创建方式(内部样式、内联样式、外部样式)、选择器权重、属性如字体、背景、浮动、盒模型等。还涵盖了浮动元素、定位、BFC、Flex布局、媒体查询等重要概念,是学习CSS的全面指南。
摘要由CSDN通过智能技术生成

css基础:

        css是让页面变得更加好看的

    css样式创建方式:

        1: 内部样式

            在head标签中添加style标签

            <style type="text/css">

                选择器{属性:值;}

            </style>

        2: 内联样式

            <标签 style="属性:值;"></标签>

            <标签 style="属性:值;">

        3: 外部样式

            1:创建一个独立的html文件,后缀为.html

            2:创建一个独立的css文件,后缀为.css

            3:关联

                关联方式一(推荐使用)

                    在html文件的head标签中添加

                        <link rel="stylesheet" type="text/css" href="css文件地址">

                        rel="stylesheet" 申明link引入的文件是层叠样式表

                        type="text/css" 申明文件的类型为文本类型的css

                关联方式二(了解)

                    在head标签中的style标签中的第一行添加

                        @import url("css文件地址");

                两种关联方式的区别:

                    1: 本质区别,link是标签,@import是css提供的一种写法

                    2: 加载顺序区别,link同时加载,@import是后加载

                    3: 兼容性区别,link没有兼容问题,@import低版本ie不兼容

                    4: 能否被dom控制,link能被js控制,@import不能被js控制

    css样式表的权重关系:

        内联样式 > 内部样式 / 外部样式

    选择器:选中指定的元素

        类型选择器: div p ul li....

        类选择器(class选择器):

            <标签  class="name"></标签>

            .name{}

            【注】

                1: 在同一个页面中相同的class值可以有多个

                2: 在同一个class中可以有多个值

                3: 具有重用性,通常用来写样式

        id选择器:

            <标签 id="name"></标签>

            #name{}

            【注】

                1: 在同一个页面中相同的id值只有一个

                2: 在同一个id中只有一个值

                3: 具有唯一性,通常不用来写样式

        * 通配符: 匹配页面中所有的元素

            *{margin:0;padding:0;} 样式初始化

        群组选择器:

            选择器1,选择器2,选择器3{} 匹配1 2 3

        包含选择器:

            选择器1 选择器2 选择器3{} 匹配1里面的2里面的3,最终匹配3

选择器权重:

        id选择器 > 类选择器 > 类型选择器

    css属性:

        font-size:文本大小;

            12px 最小文本大小

            16px 默认文本大小

            em 跟随最近的font-size值成倍数关系

            rem 跟随根元素(html)的font-size值成倍数关系

            关键字

        color:文本颜色;

            颜色单词: red blue green..

            十六进制:

                # 0-9 a-f #aabbcc => #abc

            三原色: r 红色 g 绿色 b 蓝色 a 透明度

                rgb(0,0,0)

                rgba(0,0,0,0)

                    rgb 取值范围 0-255

                    a 取值范围 0-1

        font-family:字体1,字体2,字体3;

            【注】多个字体时,用逗号隔开

                  中文标示一个字体时要添加引号

                  多个单词表示一个字体时,需要添加引号

        font-weight:是否加粗;

            bold 加粗效果

            bolder 粗体字

            normal 常规文本(不加粗)

            100-300 不加粗

            400 == normal 常规文本

            500 不加粗

            600-900 加粗

        font-style:是否倾斜;

            italic 倾斜效果

            oblique 斜体字

            normal 常规文本

        line-height:行高; 文本垂直对齐方式

            行高值 < 高度值 偏上

            行高值 = 高度值 居中

            行高值 > 高度值 偏下

            【注】不能为负数

        line-height: 1;

        去除默认间距,只保留字的大小

        font:倾斜 加粗 大小/行高 字体;

        text-align:文本水平对齐方式;

            left 靠左

            center 居中

            right 靠右

            justify 两端对齐

        text-indent:首行缩进;

            px em

            【注】只针对第一行有效

                  可以为负数

        list-style:none; == list-style-type:none;取消修饰符

        背景相关属性:

            background-color:背景颜色;

                颜色单词: red blue green..

                十六进制:

                    # 0-9 a-f #aabbcc => #abc

                三原色: r 红色 g 绿色 b 蓝色 a 透明度

                    rgb(0,0,0)

                    rgba(0,0,0,0)

                        rgb 取值范围 0-255

                        a 取值范围 0-1

            background-image:url('背景图片地址');

                【注】图片默认重复

            background-repeat:图片是否重复;

                repeat 重复

                no-repeat 不重复

                repeat-x 水平重复

                repeat-y 垂直重复

            background-position:背景图定位;

                left center right

                top center bottom

                px %

                【注】可以为负数

            bakground-attachment:背景图是否关联;

                scroll 滚动查看

                fixed 固定

            background-size:背景图大小;

                px %

            background:颜色 url("图片地址") 是否重复 定位/大小 关联;


 

        浮动: 让原本竖着排列的元素横着排列

            float:;

                none 不浮动

                left 左浮动

                right 右浮动

                【注】在一行显示的元素都必须加浮动

            特征:

                1: 脱离文档流(元素默认从上至下从左至右的排列顺序)

                2: 左浮动找左浮动,右浮动找右浮动

                3: 贴靠现象

                4: 图文混排

                【注】如果子元素添加了浮动,那父元素就要添加高度(暂时的解决办法)

        继承: 给父元素设置样式,未给子元素设置,但是作用到了子元素身上

盒模型的组成:

        内容区     width height

        内边距区    padding

        边框区     border

        外边距区    margin

    padding:内边距;

        padding-top:上内边距;

        padding-right:右内边距;

        padding-bottom:下内边距;

        padding-left:左内边距;

        padding:四个方向;

        padding:上下  左右;

        padding:上  左右   下;

        padding:上  右   下  左;

        【注】

            没有负数,没有auto

            会撑大元素的大小

            不会对背景图造成影响

    margin:外边距;

        margin-top:上外边距;

        margin-right:右外边距;

        margin-bottom:下外边距;

        margin-left:左外边距;

        margin:四个方向;

        margin:上下  左右;

        margin:上  左右   下;

        margin:上  右   下  左;

        【注】

            有负数,有auto,表示水平自适应

            步会撑大元素的大小

        问题: 垂直防线的外边距相遇会重合

        解决办法:

            兄弟关系: 给一个方向加足够的间距

            嵌套关系: 给父元素添加上内边距

    border:边框大小 形态 颜色;

        常见形态:

            solid 实线

            dashed 虚线

            dotted 点状线

            double 双线

        border-top:上边框大小 形态 颜色;

        border-top-width:上边框大小;

        border-top-style:上边框形态;

        border-top-color:上边框颜色;

        borer-width:边框大小;

        border-syle:边框形态;

        border-color:边框颜色;

        三角形:

            width:0;

            height:0;

            border:30px solid transparent;

            border-top-color:red;

    盒模型大小计算:

        W = width + 左右内边距 + 左右边框 + 左右外边距

        H = height + 上下内边距 + 上下边框 + 上下外边距

overflow:文本溢出;

        visible 默认值

        hidden 超出隐藏

        scroll 滚动查看

        auto 自适应

    white-space:文本格式;

        normal

        pre       保留格式

        pre-wrap  缩进不换行

        pre-line  缩进换行

        nowrap 强制不换行,遇到br还是会换行

    text-overflow:是否显示省略号;

        clip 裁剪

        ellipsis 省略号

        省略号步骤:

            width:200px;

            white-space:nowrap;

            overflow:hidden;

            text-overflow:ellipsis;

            【注】只针对单行文本有效

    元素类型分类:

        块级元素(block): div p ul ol li dt dd dl h1 h2....

            1: 独占一行

            2: 矩形显示

            3: 能设置宽高

            4: 能正常设置内外边距

            5: 通常作为容器使用

        内联元素(inline):a u i em b strong....

            1: 只占据自己内容大小的位置

            2: 非矩形显示(最小单位除外)

            3: 不能设置宽高

            4: 不能正常设置垂直方向的内外边距

            5: 通常不作为容器使用

        内联块元素(inline-block): input img

            1: 只占据自己内容大小的位置

            2: 矩形显示

            3: 能设置宽高

            4: 能正常设置内外边距

        元素类型转换:

            display:;

                block 块级元素(显示)

                inline 内联元素

                inline-block 内联块级元素

                none 隐藏

        vertical-align:行块级元素垂直对齐方式;

            top     顶部对齐

            middle  居中对齐

            bottom  底部对齐

            【注】

                只针对行块级元素有效

                要对齐的元素都要添加

        标尺:让一个行块级元素水平垂直居中

            父元素设置:

                .box{

                    line-height:值;

                    text-align:center;

                }

            标尺:

                .spa1{

                    display:inline-block;

                    width:0;

                    height:100%;

                    vertical-align:middle;

                }

            居中元素:

                .spa2{

                    display:inline-block;

                    vertical-align:middle;

                }

        伪类选择器:

            a:link{}    未访问状态

            a:visited{} 访问过后状态

            a:hover{}   鼠标移入状态

            a:active{}  鼠标按下状态

            【注】

                主要针对a的文本颜色

                有顺序要求 LoVe - HAte

            .box1:hover{} 鼠标移入box1,改变box1

            .box1:hover .box2{} 鼠标移入box1,改变子元素box2, box1和box2一定是嵌套关系

        置换元素: img  input

        非置换元素: div a i p u...


 

        css核心属性补充

            text-decoration:文本修饰;

                none 取消线

                overline 上划线

                line-through 中划线

                underline 下划线

普通流(文档流): 元素默认从上至下,从左至右的排列顺序

    文档流分为: 普通流 浮动流 定位刘

    定位: 用来改变元素的位置的

        position:;

            static 默认定位

            absolute 绝对定位

                脱离文档流

                默认参考根元素(html)改变自己的位置

                或者参考最近的有定位的父元素(默认定位除外)

            relative 相对定位

                占据文档流

                参考自身加载到页面中的初始位置

            fixed 固定定位

                脱离文档流

                参考浏览器窗口改变自己的位置

            sticky 粘性定位

                结合了相对定位和固定定位的特征

        定位坐标值:

            left right

            top bottom

        绝对定位 和 相对定位的区别:

            1: 参考物不同

            2: 绝对定位脱离文档流,相对定位占据文档流

        包含块:(子绝父相)

            1: 嵌套结构

            2: 父元素添加position:relative;

                子元素添加position:absolute;

        层级关系:

            z-index:层级关系;

                数字 auto

                【注】数字越大,层级越高,反之越小,可以为负数

                      必须添加了定位的元素才能修改层级(默认定位除外)

            1:  并列关系

                    都可以修改层级噶虚拟

                嵌套关系

                    只能修改子元素的层级关系

        定个位居中:

            方式一:

                position:absolute;

                left:0;

                right:0;

                bottom:0;

                top:0;

                margin:auto;

            方式二:

                position:absolute;

                left:50%;

                margin-left:-宽度的一半;

                top:50%;

                margin-top:-高度的一半;

        锚点:

            <a href="#id值'>点击位置</a>

            <标签 id="值">跳转位置</标签>

        透明度:

            opacity:0.5;

            filter:alpha(opacity=50);  过滤器

表格:用来展示数据

        相关标签:

            table > tr > td: 表格>行>单元格

            th: 列标题

            colgroup: 列分组

                span="数字" 几列为一组

            caption: 表格标题

            thead 表头

            tbody 表体(会自动生成)

            tfoot 表尾

        相关属性:

            width="表格的宽度"

            height="表格的高度"

            border="表格的边框"

            bordercolor="边框色"

            cellspacing="单元格与单元格之间的间距"

            cellpadding=“单元格与内容之间的距离"

                【注】只能给table添加

            align="表格水平对齐方式"

                取值:left、right、center、

            valign=“垂直对齐”

                取值: top middle bottom

                【注】给table添加无效

            合并单元格属性:(在td上添加) 必须掌握

                合并列: colspan=“左右合并"

                合并行: rowspan=“上下合并”

                【注】多余的单元格需要删除

        css相关属性:

            border-spacing:边框之间的间距;

                px

            border-collapse:是否合并边框;

                separate 默认值

                collapse 合并为单边靠

            【注】以上两个属性只能给table添加

            table-layout:行和列的算法;

                auto 默认值

                fixed 固定宽度


 

    表单内容:

        input:

            type="radio" 单选按钮

                【注】同组的单选按钮name值必须一致

                checked="checked" 默认选中

                disabled="disabled" 禁用

            type="checkbox" 多选框

            type="file" 文件上传域

                multiple="multiple" 多选

            type="hidden" 隐藏表单

                【注】在页面中不显示、value值可记录数据

            type="image" 图片提交按钮

                src="图片地址"

       

        select > option: 下拉列表>下拉项

            selected="selected" 默认选中

        textarea: 多行文本输入框

            cols="字符宽"

            rows="行数"

            【注】resize:none; css设置禁止拖拽

        fieldset > legend: 表单字段级> 字段级标题

            【注】在一个fieldset中只有一个子集legend

        label: 关联标签

            for="关联元素的id值"

    BFC: 块级格式化上下文,简单理解为有特殊功能的盒模型

        BFC规则:

            1:内部的Box会在垂直方向,一个接一个地放置。

            2:Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠(按照最大margin值设置)

            3:每个元素的margin box的左边, 与包含块border box的左边相接触

            4:BFC的区域不会与float box重叠。

            5:BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。

            6:计算BFC的高度时,浮动元素也参与计算

        BFC触发方式:

            1:根元素(html)

            2:float属性不为none

            3:position为absolute或fixed

            4:display为inline-block, table-cell, table-caption, flex, inline-flex

            5:overflow不为visible

        BFC的应用:

            1、自适应两栏布局

            2、清除内部浮动

            3、防止margin上下重叠

宽高自适应:元素的大小随着浏览器窗口或子元素自动调整,也就是pc端自适应

    自适应优点:

        灵活性强

        能适配不同的设备,不同的分辨率

    宽度自适应:

        元素宽度设置为100% (块级元素默认为100%)

        或者不设置宽度

    高度自适应:

        height:auto;或者不设置;(是子元素撑开父元素的高度)

   

        元素高度自适应窗口高度

            设置方法:html,body{height:100%;}

            注:如果设置子元素的高度跟随父元素的高度变化而变化,那么父元素必须有高度。

    最小宽高,最大宽高:

        min-width:;

        min-height:;

        max-width:;

        max-height:;

        【注】低版本ie浏览器不兼容

       

        最小高度兼容写法:

            兼容ie写法一

                min-height:100px;/*ie低版本不识别*/

                _height:100px;/*在ie低版本中会识别为像min-height的效果*/

               

            兼容ie写法二

                min-height:100px;/*ie低版本不识别*/

                height:auto !important;/*ie低版本不识别!important*/

                height:100px;

                【注】有顺序要求

    visibility:显示隐藏;

        visible 默认值

        hidden 隐藏

        【注】隐藏时是占据文档流的

        display:none; 和 visibility:hidden; 的区别

            1: 都是隐藏

            2: 前者脱离文档流,后者占据文档流

    伪对象选择器:

        :after{content:"";} 在...之后

       

        :before{content:"";} 在...之前

        :first-letter{} 第一个字的样式

        :firset-line{} 第一行字的样式

            【注】只用于块级元素

    高度塌陷: 父元素未设置高度,子元素设置了浮动,父元素将高度塌陷,引起页面布局混乱

    清除浮动: 解决高度塌陷问题

        解决方式

            1: 给父元素添加高度

            缺点: 不灵活

            2: 给父元素添加overflow:hidden; (原理: 触发成为了BFC)

            缺点: 超出父元素的内容将被隐藏

            3: 给浮动元素最后添加一个空的块级兄弟元素,并设置clear:left/right/both;

            缺点: 代码冗余

            4: 万能清除法

            .clearFix:after{

                content:".";

                display:block;

                clear:both;

                width:0;

                height:0;

                overflow:hidden;

                visibility:hidden;

            }

           

语义化标签

        section元素 表示页面中的一个区块

        article元素 表示一块与上下文无关的独立的内容

        aside元素 在article之外的,与article内容相关的辅助信息

        header元素 表示页面中一个内容区块或整个页面的标题

        footer元素 表示页面中一个内容区块或整个页面的脚注

        nav元素 表示页面中导航链接部分

        figure元素 表示一段独立的内容,使用figcaption元素为其添加标题(第一个或最后一个子元素的位置)

        main元素 表示页面中的主要的内容(ie不兼容)

    多媒体标签:

        video 视频标签

        audio 音频标签

        source 媒介元素(备份文件)

            src="音视频地址"

            controls="显示控件"

            autoplay="自动播放"

            loop="循环播放"

            poster="第一帧图像"

            muted="静音属性"

            type="文件类型"

                视频类型:   type="video/ogg"

                            type="video/mp4"

                            type="video/webm"

                音频类型:   type="audio/ogg"

                            type="udio/mpeg"

    html5表单:

        input

            type="类型"

                type="email"   限制用户必须输入email类型

                type="url"        限制用户必须输入url类型

                type="range"   产生一个滑动条表单

                type="number" 限制用户必须输入数字

                type="search"   产生一个搜索意义的表单

                type="color"     生成一个颜色选择的表单

                type="time"      限制用户必须输入时间类型

                type="month"        限制用户必须输入月类型

                type="week"        限制用户必须输入周类型

                type="datetime-local"        选取本地时间

                type="date"     日期

        datalist 提示信息标签

            id=""

            【注】必须结合list="id值"属性使用

        output 输出框

        相关属性

            新增表单属性

                required     监测是否为空。

                min      最小

                max      最大

                step     步幅  确定一个法定值。 -3 0 3 6 9

                list     必须结合datalist标签,绑定datalist  id名称。

                autocomplete    是否自动提示信息    属性值   on    off

                placeholder    文本框的提示信息

                autofocus      自动聚焦。一个页面只能由一个。

                pattern    后面的属性值是一个正则表达式。

                novalidate     取消验证

                multiple     选择(上传)多个

浏览器兼容前缀:

        -ms- ie浏览器

        -moz- 火狐浏览器

        -webkit- 谷歌浏览器(webkit内核的浏览器)

        -o- 欧朋浏览器

    渐变:至少两个颜色之间的过渡

        background-image:;

        线性渐变: 由一个方向到另一个防线的颜色过渡

        background-image:linear-gradient(方位,颜色1 起始位1,颜色2 结束位2,....);

            方位: left right top bottom

                 to left  to bottom

                 to left top

                 deg

            颜色:

                颜色单词

                十六进制

                rgb() rgba()

            起始位:

                px %

        重复线性渐变 repeating-linear-gradient()

        径向渐变:由一个点向四周的扩散

        background-image:radial-gradient(起点坐标,渐变的形状,渐变的大小,颜色1 起始位1,颜色2 结束位2,...);

            方位: % px  center

                 

            颜色:

                颜色单词

                十六进制

                rgb() rgba()

            起始位:

                px %

            形状:

                ellipse 椭圆

                circle 正圆

            大小:

                closest-side 最近边;

                farthest-side 最远边

                closest-corner 最近角

                farthest-corner 最远角

            重复渐变: repeating-radial-gradient()

    过渡: 由一种状态到另一种状态的平滑变化

        transition:过渡属性 运动事件 延迟时间 动画类型;

        transition-property:过渡属性;

        transition-delay:延迟时间;

        transition-duration:过渡时间;

        transition-timing-function:动画类型;

            linear 匀速运动

            ease 逐渐慢下来

            ease-in 加速

            ease-out 减速

            ease-in-out 先加速后减速

            贝塞尔曲线

    变换 transform:;

        功能函数:

            位移:

                trasnlateX()

                trasnlateY()

                translate(x,y)

                translate(x)

            缩放:

                scaleX()

                scaleY()

                scale(x,y)

                scale(xy)

                【注】

                    1是默认大小

                    比1大是放大

                    比1小,比0大,是缩小

                    大于1,或者小于-1,最终是放大

            旋转:

                rotateX()

                rotateY()

                rotate(z)

            倾斜:

                skewX()

                skewY()

                skew(x)

                skew(x,y)

            先位移,后旋转  和 先旋转,后位移,效果一样吗?

                不一样,因为先旋转改变了位移的方向

        变形原点: transform-origin:;

                left center right

                top center bottom

                px %

3D

景深: 近大远小的效果

        perspective:; 取值范围 900px - 1200px

        【注】给父元素设置,提供给子元素

           

    3d环境:

        transform-style:;

            flat            2d环境,默认值

            preserve-3d     3d环境

            【注】给父元素设置,提供给子元素

    功能函数:

        位移:

            translateZ()

            translate3D(x,y,z)

        旋转:

            rotateX()

            rotateY()

            rotateZ()

            rotate3D(x,y,z,a)

        缩放:

            scaleZ()

            scale3D(x,y,z)

            【注】效果不明显,需要结合其他的功能函数一块使用

    perspective-origin:水平  垂直; 观测角度

        left center right

        top center bottom

        px %

    动画:

        1: 定义关键帧

        2: 调用动画

            定义关键帧:

                方式一:

                    @keyframes 动画名{

                        from{} 起始状态

                        to{}  结束状态

                    }

                方式二:

                    @keyframes 动画名{

                        0%{}

                        50%{}

                        100%{}

                    }

            调用动画:

                animation:动画名 运动时间  延迟时间 运动次数 运动方向 动画类型 是否运动;

                    animation-name:动画名;

                    animation-duration:运动事件;

                    animation-delay:延迟时间;

                    animation-iteration-count:运动次数;

                        number 具体次数

                        infinite 无限循环

                    animation-direction:运动方向;

                        normal 默认方向

                        reverse 反向运动

                        alternate 先正后反

                        alternate-reverse 先反后正

                    animation-timing-function:动画类型;

                        linear

                        ease

                        ease-in

                        ease-out

                        ease-in-out

                        step-start 一帧一跳

                        贝塞尔曲线

                    animation-play-state:是否运动;

                        running 默认值,运动

                        paused 暂停,通常结合hover一块使用

CSS3选择器

优雅降级: 优先匹配高版本浏览器,再匹配低版本浏览器

        渐进增强: 优先匹配地板版浏览器,再匹配高版本浏览器

       

        css3选择器:

            属性选择器

              1、E[attr]:只使用属性名,但没有确定任何属性值

              2、E[attr=“value”]:指定属性名,并指定了该属性的属性值

              3、E[attr~=“value”]:指定属性名,并且具有属性值,或者此属性值是一个词列表,并且以空格隔开,其中词列表中包含了一个value词,而且等号前面的“〜”必须的

            [扩展知识]

              4、E[attr^=“value”]:指定了属性名,并且有属性值,属性值是以value开头的

              5、E[attr$=“value”]:指定了属性名,并且有属性值,而且属性值是以value结束的

              6、E[attr*=“value”]:指定了属性名,并且有属性值,而且属值中包含了value

            - 7、E[attr|=“value”]:指定了属性名,并且属性值仅是value或者以“value-”开头的值(比如说left-con)

           

            结构伪类选择器:

                .box:first-child{} box是第一个子元素

                .box:last-child{} box是最后一个子元素

               

                .box:nth-child(n){} box是指定位置的子元素

                    n是从0开始的自然数

                    2n = even 偶数序列

                    2n-1 = odd 奇数序列

                   

                .box:only-child{} 匹配box,但是box是位移的子元素,没有任何兄弟元素

               

                html:root匹配文档的根元素。在HTML(标准通用标记语言下的一个应用)中,根元素永远是HTML

               

                .box:empty{}匹配box,box是空元素,没有任何子元素、图片、文本

               

                .box:not(.list){} 否定伪类选择器,匹配box,但是排除box有class="list"

               

                .box:target{} 目标伪类选择器

               

            UI 元素状态伪类选择器

                E:enabled{} 可用状态的E元素

                E:disabled{} 不可用状态的E元素

                E:checked{} 选中状态的元素E

               

             动态伪类选择器

                E:link{} 未被访问过

                E:visited{}已被访问过

                E:hover{} 鼠标停留在元素E上

                E:active{} 鼠标按下的状态

               

                input:focus{} 获取光标状态

               

            层级选择器:

                e > f{} 子元素选择器

                e + f{} 相邻兄弟选择器

                e ~ f{} 通用兄弟选择器

        css3属性:

            text-shadow:水平  垂直  模糊度 阴影颜色; 文本阴影

           

            box-shadow:水平  垂直  模糊度 阴影大小 阴影颜色 内部阴影; 盒子阴影            

                inset 内部阴影

               

            背景相关属性:

                background-origin:背景图起始位置;

                    padding-box 内边距区域开始(默认值)

                    border-box 边框区域开始

                    content-box 内容区域开始

                   

                background-clip:背景图裁剪区域;

                    border-box 边框区域开始(默认值)

                    padding-box 内边距区域开始

                    content-box 内容区域开始

                   

                background-size:背景图大小;

                    px %

                    cover 等比例缩放,图片有可能超出元素

                    contain 等比例缩放,元素有可能留白

                   

                【拓展】多张背景图设置

                    background:url(),url();

                   

            颜色模式:

                hsl(0,0,0)

                hsla(0,0,0,0)

                    h: 色调 0-360

                    s: 饱和度 0%-100%

                    l: 亮度 0%-100%

                    a: 透明度 0-1

                   

            边框图片模式:

                    border-image: url(图片地址)垂直偏移量 水平偏移量 / 图片大小 / 图片往外扩张倍数 图片填充方式;

                    border-image-source: url(图片地址);

                    border-image-slice: 垂直偏移量 水平偏移量;

                    border-image-width: 图片大小;

                    border-image-outset: 图片往外扩张倍数 ;

                    border-image-repeat: 图片填充方式;

                        stretch 拉伸(默认值)

                        round 从一边到另一边的重复方式

                        repeat 从中间到两边的重复方式

                       

            圆角:

                border-radius:圆角;

                border-radius:水平圆角/垂直㢗;

                px %

               

            穿透模式

                pointer-events:none;

               

            计算模式:

                calc(100% - 200px)

                用于计算不同单位之间的运算

                运算符前后需要添加空格

Flex布局

标准盒模型:

        内容区域: width height

        内边距区域: padding

        边框区域: border

        外边距区域: margin

       

    怪异盒模型(IE盒模型):

        内容区域(包含了内边距区域 和 边框区域)

        外边距区域

       

    盒模型设置:

        box-sizing:;

            content-box 标准盒模型(默认值)

            border-box 怪异盒模型(IE盒模型)

           

    flex布局:

        分为容器(父元素) 和 项目(子元素)

        容器分为主轴和侧轴,主轴方向可变,侧轴方向也可变

        子元素的浮动 清除浮动 vertical-align 都无效

        子元素默认沿着主轴方向排列

       

        容器属性:

            1: display:设置为弹性盒;

                flex

                inline-flex

               

            2:flex-direction:设置主轴方向;

                row             水平主轴

                row-reverse     反向水平主轴

                column          垂直主轴

                column-reverse  反向垂直主轴

               

            3: flex-wrap:是否换行;

                nowrap 不换行(默认值)

                wrap 换行

                wrap-reverse 反向换行

               

            4: flex-flow:设置主轴方向 是否换行;

           

            5: justify-content:主轴对齐方式;

                flex-start      起始位置

                center          居中位置

                flex-end        结束为止

                space-around    两端平分

                space-between   两端对齐

                space-evenly    平均分配

           

            6: align-items:侧轴对齐方式; (没有换行的情况下使用)

                flex-start      起始位置

                center          居中位置

                flex-end        结束为止

                stretch         拉伸

                baseline        文本底部对齐

                【注】没有换行的情况下使用

               

            7: align-content:多根侧轴对齐方式; (有换行的情况下使用)

                flex-start      起始位置

                center          居中位置

                flex-end        结束为止

                space-around    两端平分

                space-between   两端对齐

                space-evenly    平均分配

                stretch         拉伸(默认值)

                【注】只有换行了才能使用

               

               

       

        项目属性:

            1: align-self:侧轴对齐方式;

                flex-start      起始位置

                center          居中位置

                flex-end        结束为止

                stretch         拉伸

                auto            主动继承父元素的侧轴对齐方式

               

            2: order:反向排序;

                数字越大,越靠后

                反之靠前

                可以为负数

               

            3: flex:缩放大小;

                flex-grow:放大;

                flex-shrink:缩小;

                flex-basis:大小;

               

    多列布局:

        column-count:列数;

        column-gap:列间距;

        column-rule:列边框;

        column-span:是否横跨;

            none 不横跨

            all 横跨

        column-fill:填充方式;.

       

            auto 优先填满上一列

            balance 尽可能平均分配

        column-width:列宽;

        columns:列宽 列数;

       

常见的布局方案:

        1: 固定布局

       

        2: 可切换的固定布局

       

        3: 弹性布局

       

        4: 混合布局

         

        5: 布局响应

   

    响应式布局设计特点:

        面对不同分辨率设备灵活性强

        能够快捷解决多设备显示适应问题

       

        缺点:

            兼容各种设备工作量大,效率低下

            代码累赘,会出现隐藏无用的元素,加载时间加长

            其实这是一种折中性质的设计解决方案,多方面因素影响而达不到最佳效果

            一定程度上改变了网站原有的布局结构,会出现用户混淆的情况

           

           

        媒体查询:

            @media 媒体 and (条件表达式) {

                选择器{属性:值;}

             }

             

            条件表达式:

                max-width:

                    值从大到小去写

                   

                min-width:

                    值从小到大去写

                   

           

            @media not 媒体 and (条件表达式) {

                选择器{属性:值;}

             }

             not 排除当前媒体的当前范围显示

             

             @media only 媒体 and (条件表达式) {

                选择器{属性:值;}

             }

             only 指定在当前媒体的当前范围去显示

             

            /*竖屏*/

            @media all and (orientation:portrait){}

           

            /*横屏*/

            @media screen and (orientation:landscape){}

           

        移动端适配准备:

            <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

            name="viewport"  视窗,窗口

            width=device-width 宽度等于当前设备的宽度

            initial-scale=1 初始缩放比例

            minimum-scale=1 最小缩放比例

            maximum-scale=1, 最大缩放比例

            user-scalable=no 是否能缩放

           

        设备像素比 = 设备像素(物理像素) / 设备独立像素(逻辑像素)

       

       

        常见单位:

            px 像素单位

           

            em 跟随最近的font-size:;的值成倍数关系

           

            rem 跟根元素的font-size:;值成倍数关系

           

            % 百分比

           

            vw 跟随视窗宽度的变化而变化

                100vw = 满屏

           

           

            vh 跟随视窗高度的变化而变化

            vmin 谁小听谁的

            vmax 谁大听谁的

           

        需求: 希望页面内容能随着浏览器窗口宽度变化而变化

            ps中测量出来的是          px单位

            因为需求需要用到的单位是   rem

            因为需求要求跟着浏览器窗口宽度的变化而变化 vw

           

        常见页面尺寸:

            750px  dpr=2

                375px = 满屏 = 100vw

                375px = 100vw

                1vw = 3.75px

               

            假设: html{font-size:120px;}

                1rem = 120px

                1rem = 120px / 3.75px = 32vw

                1rem = 32vw

            结论: html{font-size:32vw;}

                工具设置 240     测量出来的数据直接转

                工具设置 120     测量出来的数据减半再转

               

           

           

            640px

                dpr = 2

                320px = 满屏 = 100vw

                1vw = 3.2px

               

                假设html{font-size:120px;}

                1rem = 120px

               

                1rem = 120px /  3.2px = 37.5vw

                结论:

                    html{font-size:37.5vw;}

                    工具设置: 120px  测量出来的数据需要减半再转

                    工具设置: 240px  测量出来的数据直接转

           

            1080px

                dpr = 3

                360px = 满屏 = 100vw

                1vw = 3.6px

               

                假设html{font-size:80px;}

                1rem = 80px

                1rem = 80px / 3.6px = 22.22vw              

               

                结论:

                    html{font-size:22.22vw;}

                    工具设置: 80px  测量出来的数据需要除以3再转

                    工具设置: 240px  测量出来的数据直接转

网格布局

1.  display:grid;  

            display:inline-grid;

            指定一个容器采用网格布局

        2、 grid-template-columns 属性  

            设置每列的列宽,参数的个数决定是几列

                A、grid-template-columns: 100px 100px 100px;

                B、grid-template-columns: repeat(3, 33.33% 200px 300px);

                    repeat()接受两个参数,

                    第一个参数是重复的次数(上例是3),

                    第二个参数是所要重复的值。

                C、grid-template-columns: 1fr 1fr;  

                    fr关键字(fraction 的缩写,意为"片段")

        3、 grid-template-rows属性

            定义每一行的行高

                /* grid-template-rows: repeat(3,120px); */

        4、 grid-gap属性是grid-column-gap和grid-row-gap的合并简写,设置行和列间距

                grid-column-gap: 10px;

                grid-row-gap: 10px;

                grid-gap: 20px;

        5、 子元素在网格中垂直方向的对齐方式

            align-items: stretch; 默认 拉伸

            align-items: start; 垂直上对齐

            align-items: center; 垂直居中对齐

            align-items: end;  垂直靠下对齐

            子元素在网格中水平方向的对齐方式

            justify-items: stretch; 默认 拉伸

            justify-items: start; 水平靠左对齐

            justify-items: center; 水平居中对齐

            justify-items: end;  水平靠右对齐

            简写

            place-items: 垂直方向对齐 水平方向对齐;

        6、 垂直方向上网格在容器中的对齐方式

            align-content: stretch; 默认拉伸

            align-content: start;   垂直靠上对齐

            align-content: center;  垂直居中对齐

            align-content: end;     垂直靠下对齐

            align-content: space-around;    垂直2:1对齐

            align-content: space-between;   垂直两端对齐

            align-content: space-evenly;    垂直均分对齐

            水平方向上网格在容器中的对齐方式

            justify-content: stretch; 默认拉伸

            justify-content: start;   水平靠左对齐

            justify-content: center;  水平居中对齐

            justify-content: end;     水平靠右对齐

            justify-content: space-around;    水平2:1对齐

            justify-content: space-between;   水平两端对齐

            justify-content: space-evenly;    水平均分对齐

            默认

            place-content: 垂直方向 水平方向;

        7、 (一)移动区域:

            先给父元素划分区域

            grid-template-areas 属性  网格布局允许指定"区域"(area)

                .container {

                    display: grid;

                    grid-template-columns: 100px 100px 100px;

                    grid-template-rows: 100px 100px 100px;

                    grid-template-areas:

                                    'a b c'

                                    'd e f'

                                    'g h i';

                }

            再给子元素grid-area属性指定项目放在哪一个区域

            grid-area:a1;或者

            grid-area: <row-start>行开始 / <column-start>列开始 / <row-end>行结束 / <column-end>列结束;

                例如:

                    第一种:

                        li:nth-child(1){

                            grid-area: i(目标位置);

                        }

                    第二种:

                        li:nth-child(1){

                            grid-area: 行开始 列开始 行结束 列结束;

                        }

            (二)跨行合并

            先给父元素划分区域

            grid-template-areas 属性  网格布局允许指定"区域"(area)

                .container {

                    display: grid;

                    grid-template-columns: 100px 100px 100px;

                    grid-template-rows: 100px 100px 100px;

                    grid-template-areas:

                                    'a b c'

                                    'd e f'

                                    'g h i';

                }

            再给子元素grid-area属性指定项目放在哪一个区域

            grid-area:a1;或者

            grid-area: <row-start>行开始 / <column-start>列开始 / <row-end>行结束 / <column-end>列结束;

                例如:

                li:nth-child(1){

                    grid-area: a;

                }

                再把父元素中的  grid-template-areas:

                                    'a b c'

                                    'd e f'

                                    'g h i';

                        改成    grid-template-areas:

                                    'a a a'

                                    'd e f'

                                    'g h i';

        8、 项目自己垂直方向的对齐方式

            align-self: stretch; 默认 拉伸

            align-self: start; 垂直上对齐

            align-self: center; 垂直居中对齐

            align-self: end;  垂直靠下对齐

            项目自己水平方向的对齐方式

            justify-self: stretch; 默认 拉伸

            justify-self: start; 水平靠左对齐

            justify-self: center; 水平居中对齐

            justify-self: end;  水平靠右对齐

            place-self  设置项目自己的对齐方式

            place-self是align-self和justify-self的简写

            place-self:start | end | center | stretch;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值