黑马程序员技术交流社区

标题: 前端笔记 [打印本页]

作者: yby    时间: 2019-4-11 13:54
标题: 前端笔记
语义化标签
               (1)header  头部标签
                        <header><header/>
               (2)nav 导航标签
                        <nav><nav/>
               (3)article 内容标签
                        <article><article/>
                (4)section 块级标签
                        <section><section/>
                 (5)aside侧边栏标签
                        <aside><aside/>
                 (6)footer 尾部标签
                        <footer><footer/>
audio 音频标签
        语法:(1)<audio src="音频路径" controls="controls"></audio>
                (2)<audio controls="controls">
                                <source src="media/snow.mp3" type="audio/mpeg" />
                                <source src="media/snow.ogg" type="audio/ogg" />
                                    您的浏览器不支持播放声音
                    </audio>
                注:不同浏览器支持的格式不同,解决浏览器兼容问题
                注:谷歌浏览器必须加静音属性,才能实现自动播放
        属性:(1)autoplay="autoplay"
                        如果出现该属性,则音频在就绪后马上播放。
                    (2)controls="controls"
                        如果出现该属性,则向用户显示控件,比如播放按钮。
                    (3)loop="loop"
                        如果出现该属性,则每当音频结束时重新开始播放。
                    (4)preload="preload"
                        如果出现该属性,则音频在页面加载时进行加载,并预备播放。   如果使用 "autoplay",则忽略该属性。
                    (5)src="路径"
                        要播放的音频的 URL。
video 视频标签
        语法:(1)<video src="音频路径" controls="controls"></video>
                (2)<video muted="muted" loop="loop" poster="media/pig.jpg" controls>
                                <source src="media/video.mp4" type="video/mp4" />
                                <source src="media/video.ogg" type="video/ogg" />
                                您的浏览器太low了,不支持播放此视频               
                </video>
                注:不同浏览器支持的格式不同,解决浏览器兼容问题
                注:谷歌浏览器必须加静音属性,才能实现自动播放
        属性:
                (1)autoplay=“autoplay”
                        视频就绪自动播放(谷歌浏览器需要添加muted来解决自动播放问题)
                (2)controls=“controls”
                        向用户显示播放控件
                (3)loop=“loop”
                        播放完是否继续播放该视频,循环播放
                (4)muted=“muted”
                        静音播放
                (5)preload=“auto”(预先加载视频)
                         preload=“none”(不预先加载视频)
                        规定是否预加载视频(如果有了autoplay   就忽略该属性)
                (6)poster="文件路径"
                        加载等待的画面图片
新增input表单
        语法:<input type="输入类型">
        输入类型:(1)type="email"
                        限制用户输入必须为Email类型
                (2)type="url"
                        限制用户输入必须为URL类型
                (3)type="date"
                        限制用户输入必须为日期类型
                (4)type="time"
                       

限制用户输入必须为时间类型

                (5)type="month"
                        限制用户输入必须为月类型
                (6)type="week"
                        限制用户输入必须为周类型
                (7)type="number"
                        限制用户输入必须为数字类型
                (8)type="tel"
                        手机号码
                (9)type="search"
                        搜索框
                (10)type="color"
                        生成一个颜色选择表单
        表单属性:(1)required


=“required



                        表单拥有该属性表示其内容不能为空,必填
                (2)placeholder="提示文字"
                        表单的提示信息,存在默认值将不显示
                (3)autofocus=“autofocus”
                        输入光标自动聚焦到指定输入框
                (4)autocomplete=”on “ (默认)打开
                         autocomplete =”off”  关闭
                        当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中曾经已填写的选项
                (5)disabled="disibled"
                        使按钮不能点击
属性选择器
                语法:(1)div[att]   选择具有att属性的div元素
                          (2)div[class="val"]   选择具有class属性且属性值等于val的div元素
                          (3)div[class^="val"]  匹配具有class属性,且属性值为val开头div元素
                          (4)div[class$=''val'']   匹配具有class属性,且属性值为val结尾div元素
                          (5)div[class*=''val'']  匹配具有class属性,且属性值中含有val结尾div元素
结构伪类选择器
        语法:(1) ul li:first-child
                        选择ul里第一个li
                (2)ul li:last-child
                        选择ul里最后一个li
                (3)ul li:nth-child(6)
                        选择ul里第6个li
                     ul li:nth-child(even)
                        选择ul里偶数的li标签
                     ul li:nth-child(odd)
                        选择ul里奇数的li标签
                     ul li:nth-child(2n)
                        选择ul里2*n的li标签,也可以(3n)(4n)....   n从0开始计算,2n相当于选择偶数
                     ul li:nth-child(n+5)
                        选择ul里从第5个开始后的所有li,包含第五个
                     ul li:nth-child(-n+5)
                        选择ul里第5个li前的所有li,包含第五个
                注::nth-child(n) 选择父元素里的第n个孩子,不管是否是同一种类型
                (4)div span:first-of-type
                        选择div里第一个span
                 (5)div span:last-of-type
                        选择div里最后一个span
                  (6)div span:nth-of-type(2)
                        选择div里第2个span,也可以(3)(4)......
伪元素选择器
        语法:(1)div::before {content:"内容"}
                        在div里的内容前添加一个内容
                  (2)div::after {content:"内容"}
                        在div里的内容后添加一个内容
                注:1.必须有content属性,但可以为空内容
                       2.before和after会创建一个行内元素,可以通过display转为行内块

二。2D转换(变换)transform(移动,旋转,缩放)
        (移动)语法:(1)transform:translate(x,y)
                        连写
                  (2)transform:translateX(100px)
                        向x轴移动100px,X为大写
                  (3)transform:translateY(100px)
                        向y轴移动100px,Y为大写
              注:1.X,Y为大写
                     2.translate类似定位,不会影响到其他元素的位置
                     3.transform:translateX(50%),表示向x轴移动自身宽度的一半
                     4.对行内标签没有效果

        让盒子垂直居中,水平居中
                   (1)transform:translate(-50%,-50%)
             注:同样要使用子绝父相


        (旋转)语法:(1)transform:rotate(度数deg);        顺时针
                       (2)transform:rotate(-度数deg);       逆时针
                注:通常和过渡一起使用
                模拟三角:1.使用伪元素添加一个正方形盒子,给正方形只设置两个边框
                        2.定位到指定位置
                        3.旋转45度


         转换中心点 transform-origin
                语法:(1)transform-origin:left  top;等
                注:1.可以是方位名词
                           (2)transform-origin:x  y;例:transform-origin:50px  50px;
                注:2.可以是像素值
                           (3)transform-origin:0;  只写一个值的时候  第二个值默认为 50%;


        2d缩放 scale
                语法:转换的属性值为 scale(宽的倍数,高的倍数) ;
                          (1)transform-scale(2,2);或transform-scale(2);
                注:修改了宽高为原来的2倍
                          (2)transform-scale(.5,.5);或transform-scale(.5);
                注:缩小了1倍


        2D旋转综合写法
                语法:transform:translate()rotate(度数deg)  scale(.5,.5);
                注:1.顺序.位移,旋转,缩放
                       2.顺序不能变更,有位移及其他属性时,位移必须最前面


动画
        语法: /* 我们想页面一打开,一个盒子就从左边走到右边 */
                        /* 1. 定义动画 */        
                        @keyframes 名称 {
                            /* 开始状态 */
                                    0% {
                                        transform: translateX(0px);
                                    }
                            /* 结束状态 */
                                    100% {
                                transform: translateX(1000px);
                                    }
                        }
                 div {
                                    width: 200px;
                                    height: 200px;
                                    background-color: pink;
                                    /* 2. 调用(使用)动画 */
                                    /* 动画名称 */
                                    animation-name: 名称;
                                    /* 持续时间 */
                                    animation-duration: 2s;
                        }
                注:必须属性:动画名称,动画执行时间


        常用属性:1. 动画名
   设置要使用的动画名 animation-name:xxx;
               
2. 持续时间
   设置动画播放的持续时间  animation-duration:3s

                3. 速度曲线
   和设置过渡的速度曲线一样 animation-timing-function:linear;
  
                          linear: 匀速
  
                          ease: 慢-快-慢   (逐渐慢下来)  默认值
  
                          ease-in: 慢-快。
  (加速)
                          ease-out: 快-慢。(减速)
  
                          ease-in-out: 慢-快-慢。(先加速后减速)
                          steps(2)  设置分几步完成动画效果
               
4. 延迟时间
   animation-delay: 0s; 默认是0
               
5. 循环次数
   设置动画播放的循环次数  animation-iteration-count: 2;
                         infinite 为无限循环

                6. 循环方向
   animation-direction
:normal;  
                        1. normal  默认值 ,正向运行
   
                        2. reverse 反向运行
   
                        3. alternate  正-反-正...
  (倒车)
                        4. alternate-reverse  反-正-反..   
   
                        5. 以上与循环次数有关
               
7. 动画结束状态:
   animation-fill-mode 设置动画在等待或者结束的时候的状态
   
                         forwards:动画结束后,元素样式停留在 100% 的样式
   
                         backwards: 在延迟等待的时间内,元素样式停留在 0% 的样式
   (默认)
                         both: 同时设置了 forwards和backwards两个属性值
                        注:有了无限播放就不要结束状态
               
8. 暂停和播放
   animation-play-state  控制 播放 还是 暂停
  
                        running 播放   
                        paused 暂停

                        注:一般鼠标悬停(hover)时使用此属性


        动画简写
                语法:animation:动画名称  持续时间  运动曲线  何时开始  播放次数  是否反方向  动画起始或结束的状态;
                animation: name   duration   timing-function   delay   iteration-count   direction   fill-mode;
                注:1.前两个属性必须写,暂停动画不在简写里
                      2.给同一个盒子加两个动画,中间用逗号隔开animation: name   duration,name   duration;


3D transform:translate3d
        语法:
        移动:

1. transform:translate3d(x,y,z)  其中 x y z 分别指要移动的轴的方向的距离
(简写)
                   2. translform:translateX(100px)  仅仅是移动在x轴上移动

                           3. translform:translateY(100px)  仅仅是移动在Y轴上移动

                           4. translform:translateZ(100px)  仅仅是移动在Z轴上移动  
(一般用px为单位)
                注:1.xyz不能省略,没有的用0表示
                      2.z轴是垂直屏幕的方向,到眼睛的方向是正值


        旋转:1. transform:rotateX(45deg); 沿着x轴正方向旋转 45度
                 2. transform:rotateY(45deg) 沿着y轴正方向旋转 45deg
                3. transform:rotateZ(45deg) 沿着Z轴正方向旋转 45deg
                4. transform:rotate3d(x,y,z,deg) 沿着自定义轴旋转 deg为角度  了解即可
                注:1.x轴旋转时正值为往后倒,负值往前倒。(耍单杠)
                       2.y轴旋转时正值为往右转,负值往左转。(钢管舞)
                       3.z轴旋转时正值为往右转,负值往左转。(抽奖转盘)


         透视 perspertive:100px;
                注:1.给需要呈现3d效果的父盒子添加这个值
                       2.使用3d时必须设置这个值


        3d呈现  transform-style
                transform-style: flat;  平面模式,不开启3维立体环境
               
transform-style: preserve-3d;  3维立体环境
                注: 代码写给父级,但是影响的是子盒子


过渡transition
        语法:1.transition-duration   定义过渡效果花费的时间。默认是 0。
                  2.transition-property   规定应用过渡的 CSS 属性的名称。
                 3.transition-timing-function   规定过渡效果的时间曲线。默认是 "ease"。
                 4.transition-delay    规定过渡效果何时开始。默认是 0。
                简写:transition: 要过渡的属性  花费时间  运动曲线  何时开始;  
                例:transition: all (全部属性) 1s(运动完成所需时间)  linear(匀速)  1s(延迟1秒运动);
                        常用:transition: all 1s;
       
        属性值:运动曲线:    linear: 匀速
  
                          ease: 慢-快-慢   (逐渐慢下来)  默认值
  
                          ease-in: 慢-快。
  (加速)
                          ease-out: 快-慢。(减速)
  
                          ease-in-out: 慢-快-慢。(先加速后减速)



旋转木马案例
        注:1.先放6张图片在同一位置,每张图片沿y轴转60度,依次度数变大60度,并沿z轴前移300px。


css3兼容处理
        - 谷歌 -webkit
-
        火狐 -moz
-
        IE -ms
-
        欧朋-o-
        注:如对 border-radius 进行兼容性处理   

         
        -webkit-border-radius: 30px 10px;
         
        -moz-border-radius: 30px 10px;
         
        -ms-border-radius: 30px 10px;
              
         border-radius 一定要放在最后
         
         border-radius: 30px 10px;

如果发现添加前缀也解决不了兼容性问题,那么就不要使用该css3属性

三。 理想视口 ideal viewport
        语法:<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
         属性:1.

背景缩放background-size
        语法: background-size: 图片的宽度 图片的高度;
             注:1.background-size: 500px; 只写一个参数 肯定是宽度 高度省略了  会等比例缩放
                    2.background-size: 50%;  里面的单位可以跟%  相对于父盒子来说的
                         3. background-size: cover;   cover 等比例拉伸 要完全覆盖div盒子  可能有部分背景图片显示不全
                    4. background-size: contain;  高度和宽度等比例拉伸 当宽度 或者高度 铺满div盒子就不再进行拉伸了 可能有部分空白区域

CSS3盒子模型box-sizin
        语法:box-sizing: border-box;   
          注:1.移动端使用,加到盒子的css中去
                 2.好处:padding和border不会撑大盒子,设置百分比时会将边框和外边距也算在内

移动端特殊样式
         /*CSS3盒子模型*/
            box-sizing: border-box;
            -webkit-box-sizing: border-box;
            /*点击高亮我们需要清除清除  设置为transparent 完成透明*/
            -webkit-tap-highlight-color: transparent;
            /*在移动端浏览器默认的外观在iOS上加上这个属性才能给按钮和输入框自定义样式*/
            -webkit-appearance: none;
            /*禁用长按页面时的弹出菜单*/
            img,a { -webkit-touch-callout: none; }
        /*禁用横向滚动条*/
         overflow-x: hidden;




移动端常见布局(注:固定的盒子必须有宽度)
1. 流式布局(百分比布局)
        语法:width:100%;    100%代表为浏览器显示的宽度
           注:max-width   最大宽度 (max-height  最大高度)  
                  min-width    最小宽度 (min-height  最小高度)
                设置浏览器拉伸时最大和最小的显示宽度和高度,也就是让他不能无限放大或缩小


2. flex 弹性布局(强烈推荐)
                语法:display:flex;(必须添加这个属性才能设置其他属性)
                注:给父元素添加display:flex;属性来控制子盒子的位置和排列方式。

   父项常见属性
             1. 设置主轴的方向:
                 语法:flex-direction:;
                   属性值:1.flex-direction: row; (默认,从左往右)
                        2.flex-direction:row-reverse ;(从右到左)
                        3.flex-direction: column; (从上到下)
                        4.flex-direction:column-reverse;(从下到上)
                注:1.水平轴的默认方向是:水平向右,

垂直轴的默认方向是:垂直向下

                       2.设置父盒子内子盒子的排列方式,加给父盒子。

             2.设置子盒子在主轴上的排列方式(也就是让盒子在大盒子里居中,靠下,还是靠上)
                语法:justify-content:flex-start;
                属性值:1.justify-content:flex-start; (默认,从头部开始,主轴是x轴则从左到右,主轴是y轴则从上到下)
                        2.justify-content: flex-end;(从尾部开始排列)
                        3.justify-content: center;(在主轴上居中)
                        4. justify-content: space-around;(平分剩余空间)
                        5.justify-content: space-between;(两边的子元素贴边,中间的平分剩下的空间)
                注:1.要注意主轴的方向。

            3.设置是否换行(设置子盒子满了是否换行)
                语法:flex-wrap:nowrap;(默认,不换行)
                属性值:1.flex-wrap:nowrap;(默认,不换行)
                        2.flex-wrap:wrap; (换行)
                注:默认子元素不会换行,显示不下时会改变子盒子的大小

            4.设置侧轴上的子元素排列方式(单行 )y轴
                语法:align-items:  ;
                属性值:flex-start 从头部开始

                             flex-end 从尾部开始

                             center 居中显示

                             stretch 拉伸

                注:1.拉伸时需要没有高度。
                       2.子盒子只有单行时使用。

            5.设置侧轴上的子元素的排列方式(多行)y轴
                语法:align-content:;
                属性值:flex-start (默认,在侧轴的头部开始排列)
                        center(在侧轴中间显示)
                        space-between(在侧轴两边的子元素贴边,中间的平分剩下的空间)
                        space-around(在侧轴平分剩余空间)
                        flex-end(在侧轴尾部开始排列)
                        stretch(设置侧轴上子盒子平分父盒子的高度)
                注:1.仅限子盒子有换行(多行)时使用


             小简写: flex-flow 属性是 flex-direction 和 flex-wrap 属性的复合属性
                语法:flex-flow:row wrap;  
                        flex-flow:主轴方向    是否换行;

   子项常见属性
            1.   flex 属性(放大当前元素的宽度,用来设置某个盒子占剩余空间的比例值)
                语法:flex: 0;(默认值0)
                          flex:20%;
             注:1.谁设置了谁就占。
                2.不能直接设置0,可以不写。
                3.可以写百分比,相对于父亲的宽度。


            2.控制子项自己在侧轴上的排列方式
                语法:align-self:;
                属性值:flex-start 从头部开始

                             flex-end 从尾部开始

                             center 居中显示

             注:1.控制某一个子盒子的排列顺序
                2.相当于某一个子盒子需要单独设置排列位置时使用(靠上,靠下,居中......)
       
            3.order 属性定义盒子的排列顺序(相当于第3个可以变到第一个)
                语法:order: 0; (默认是0,负值小)
            注:越小越靠前。值为负




背景线性渐变
        语法:background: linear-gradient(起始方向,?颜色1,?颜色2, ...);
                  background: -webkit-linear-gradient(left, red , blue);(从左往右)
                  background: -webkit-linear-gradient(left top, red , blue);(左上往右下)
        注:1.背景渐变必须添加浏览器私有前缀
               2.起始方向可以是: 方位名词  或者 度数 , 如果省略默认就是 top


3.
less+rem+媒体查询布局
            1.媒体查询语法规范
                语法: @media screen(查询类型) and(关键词) (max-width: 800px)(媒体特性:小于等于800时) {
                                    body {
                                        background-color: pink;
                                            }
                                }
                注:1. 这句话的意思就是: 在我们屏幕上 并且 最大的宽度是 800像素 设置我们想要的样式
                        2.从小往大写或从大往小写
               
            查询类型
                属性值:1.all(用于所有设备)
                        2.print (用于打印机和打印预览)
                        *3.scree (用于电脑屏幕,平板电脑,手机等)

           关键词
                属性值:*1.and:可以将多个媒体特性连接到一起,相当于“且”的意思。
                        2.not:排除某个媒体类型,相当于“非”的意思,可以省略。
                        3.only:指定某个特定的媒体类型,可以省略。

          媒体特性
                属性值:1.width :定义输出设备中页面可见区域的宽度
                        2.min-width :定义输出设备中页面最小可见区域的宽度(大于设定的值时改变样式)
                        3.max-width :定义输出设备中页面最大可见区域的宽度(小于设定的值时改变样式)
               
       
混合布局






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2