Day4 Flex的学习及CSS动画的学习笔记

197 阅读5分钟

昨天的作业回顾:
1图片在div里显示不完整时候,给img加一个属性width:100%
2对于div内的图片"子div"和文字"子div",善用padding: px;使它们尽量居中,不必将“子div”设置大小刚刚等于"母div",而是稍小一点,用“padding”标签使得它们尽量居中。

一 flex弹性布局
属性一   Justify-content:将fexl元素和主轴对齐

Justify-content:  flex-start:主轴左对齐
Justify-content:  flex-end:主轴右对齐
Justify-content:  center:主轴居中
Justify-content:  space-between:主轴元素之间保持相等的距离
Justify-content:  space-around:主轴元素周围保持相等的距离
    注:(between散开程度略大于around)

属性二   `align-items:` 在交叉轴上对齐多个元素
Align-items:  flex-start: 交叉轴顶部
Align-items:  flex-end: 交叉轴底部
Align-itemscenter: 交叉轴居中
Align-itemsbaseline:元素在容器基线位置显示
Align-itemsstretch:元素(交叉轴方向)被拉伸以填满整个容器

属性三   flex-direction: 定义主轴的方向

Flex-direction:  row 元素摆放的方向和文字方向一致(左->右)
Flex-direction:row-reverse 元素摆放方向和文字方向相反(右->左)
Flex-direction:column元素从上放到下
Flex-direction:column-reverse;元素从下放到上
    注意
    ①    当调换了行或列的方向后,flex-start和flex-end对应的方向也被调转了
    ②    当flex以列为方向时,justify-content控制纵向对齐,align-items控制横向对齐。

属性四   单个元素的order属性
-1,0,1……
属性五   align-self    控制单个元素的属性

align-self: flex-start    交叉轴顶部
align-self: flex-end    交叉轴底部
align-self: center       交叉轴居中
align-self: baseline   单个元素在容器基线位置显示
align-self: stretch     单个元素(交叉轴方向)被拉伸以填满整个容器

  属性六   flex-warp  定义flex元素必须在单行或自动换行成多行

Flex-wrap: nowrap   所有元素都在一行
Flex-wrap: wrap 元素自动换成多行
Flex-wrap: wrap-reverse  元素自动换成多行逆序

属性七  align-content 决定交叉轴行与行之间的距离

align-content:    flex-start 多行集中在顶部
align-content:    flex-end: 多行都集中在底部。
align-content:    center: 多行居中。
align-content:    space-between: 行与行之间保持相等距离。
align-content:    space-around: 每行的周围保持相等距离。
align-content:    stretch: 每一行都被拉伸以填满容器。
    区别:align-content决定行之间的间隔,而align-items决定元素
    整体在容器的什么位置。只有一行的时候align-content没有任何效果。<br>

二 定位
1相对定位 2绝对定位 3fixed定位
1相对定位 position: relative;
相对于原来位置移动,元素设置此属性之后仍然处在文档流中,不影响其他元素的布局

           { position: relative;
            /* 定位居中的方法 */
            left: 50%;
            transform: translateX(-50%);
            /* 以上是定位居中 */}

2绝对定位 position: absolute;
元素会脱离文档流,如果设置偏移量,会影响其他元素的位置定位

3 fixed定位 position:fixed;
比所有的元素权限高,z-index 值越大,越靠前,常常用于“网页右下角的控件”
两个div或图片进行嵌套时,要“子绝对,父相对”

三 浏览器对CSS的渲染步骤
1 生成Dom数
2 生成CSS树
3 组合渲染树
4 paint(解析边框,颜色,阴影等效果)
5 composite(组合)
csstriggers.com/

四@keyframes关键帧动画
eg:

<style>
    @keyframes trans-all{
        0%{
            transform: translate(0%,300%);
        }
        30%{
            transform: translate(300%,300%);
        }
        66%{
            transform: translate(300%,0%);
        }
        82%{
            transform: translate(0%,0%);
        }
        100%{
            transform: translate(0%,300%);
        }
    }
    
    .box{
        animation:trans-all 0.6s linear infinite;
    }
<style>

2动画效果
linear 动画从头到尾的速度是相同的。
ease 默认。动画以低速开始,然后加快,在结束前变慢。
ease-in 动画以低速开始。
ease-out 动画以低速结束。
ease-in-out 动画以低速开始和结束。
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。
详细见blog.csdn.net/aSuncat/art…


3伪元素
::before和::after是伪元素,(css3中为了与伪类做区别,伪元素采用双冒号的写法
“:before” 伪元素可以在元素的内容前面插入新内容。
“:after” 伪元素可以在元素的内容之后插入新内容。
::before或::after都必须和content属性结合使用,content不能没有,内容至少为空;伪元素的display默认为inline,可以自己改.
详细见https://blog.csdn.net/ladream/article/details/104828444

注:
1 flex标签是响应式的,无论网页大小怎么变化,所以只要涉及到横向排列,flex是一个比较优越的解决方案。

2 vscode中快捷操作,如: li*5按住鼠标中键往下拖可以多行一起编辑等等

3 子代选择器的权重更高,不容易被其他样式替代

4 固定定位fixed,最好不要用于手机

5 Manrope字体,适合做标题;格式化插件pretti,margin和padding属性是上右下左的顺序,右键命令行 powershell code.启动,npm i http-server -g进行环境配置,vscode终端http-server命令即可用本地服务打开网页

6 纯CSS实现动画往往比JS参与的动画对浏览器的负担更加小,因为前者只需要对CSS的渲染步骤的最后一步进行重置,后者需要执行最后两步