美文网首页
从0开始学习HTML5CSS3(二)

从0开始学习HTML5CSS3(二)

作者: xinhongwu | 来源:发表于2019-02-21 16:46 被阅读0次

    css3新增内容

    1 伪类选择器

    特点: 都是以:开头,连在一起的写法其实是交集选择器

    以下这些主要是给a标签用的(hover除外)
            :hover   鼠标悬停
            :active  点击a标签时的样式
            :link    尚未访问的样式
            :visited 访问后的样式
    

    1.1 xxx-child

    :first-child:找到第一个子元素
    :last-child:找到最后一个子元素
    :nth-child:找到某一个子元素
    写几就代表找到第几个
    写n代表找到所有
    写odd代表找到所有奇数
    写even代表找到所有偶数
    写mn: m是一个数字,代表m的倍数 3n 代表 3的倍数
    写n+m:m是一个数字,代表找到从m开始到最后 例:n+6 从6开始
    xxx-child:必须满足是在父元素中也是第几个子元素

    <body>
        <ul>
            <span>我是span</span>
            <li>隔壁老王1</li>
            <li>隔壁老王2</li>
            <li>隔壁老王3</li>
            <li>隔壁老王4</li>
            <li>隔壁老王5</li>
            <li>隔壁老王6</li>
            <li>隔壁老王7</li>
            <li>隔壁老王8</li>
            <li>隔壁老王9</li>
            <li>隔壁老王10</li>
            <span>最后的span</span>
        </ul>
    
    </body>
    //第一个子元素是span li:nth-child(1)找不到,因为li不是第一个子元素
    

    1.2 xxx-of-type

    xxx-of-type:用法和特点几乎跟xxx-child是一样的
    xxx-of-type就是直接找到第几个,不用管在父元素中是第几个子元素,但是xxx-child要管
    注意:不是说找到整个文件里的第几个,而是找到自己所在的盒子的第几个

     <ul>
            <span>我是span</span>
            <li>隔壁老王1</li>
            <li>隔壁老王2</li>
            <li>隔壁老王3</li>
            <li>隔壁老王4</li>
            <li>隔壁老王5</li>
            <span>我是最后的span</span>
        </ul>
    
        <ul>
            <li>隔壁老周1</li>
            <li>隔壁老周2</li>
            <li>隔壁老周3</li>
            <li>隔壁老周4</li>
            <li>隔壁老周5</li>
        </ul>
    ///* 找到第一个li,不用管在父元素中是第几个 */
             li:first-of-type{
                 color:red;
             }
    老王1和老周一都会变红色
    

    2 伪元素选择器

    伪元素选择器:前面有两个冒号
    ::before
    在不改变html的情况下,给元素内容的前面加一个子元素
    ::after
    在不改变html的情况下,给元素内容的后面加一个子元素
    默认都是行内元素,哪怕没有内容,也要写content,只不过content为空就行了
    因为它们的应用场景主要只是用来清除浮动带来的影响

    ::first-letter 匹配首字母
    ::first-line 匹配第一行
    ::selection匹配选中的部分
    ::placeholder 匹配占位符

    3 transition

    transition:过渡. 让你的样式变化的时候具有动画效果
    /*
    参数1:参与过渡的属性,写一个all代表所有属性都参与过渡,一般写的是all,有默认值,默认值就是all
    参数2:过渡的持续时间
    参数3:延迟时间
    参数4:运动曲线:linear,steps() 分步骤动画
    顺序其实可以打乱,随便写都行,但是先写的是动画时间,后写的时间是延迟时间
    /
    /
    transition:all 2s 1s steps(3); /
    /
    以下是顺序打乱写法 /
    /
    transition: 1s all steps(2) 2s; /
    /
    代表所有属性参与过渡,并且动画时间为2s /
    /
    transition: 2s; /
    transition: all 1s;
    /
    transition其实也个是复合属性,由下面四个子属性组成 /
    /
    transition-property: 参与过渡的属性 /
    /
    transition-duration: 持续时间 /
    /
    transition-delay: 延迟时间 /
    /
    transition-timing-function: 运动曲线 */

    4 box-shadow(盒子阴影)

    box-shadow:盒子阴影 所有元素都可以加阴影

    参数1:阴影水平偏移位置
    参数2:阴影处置偏移位置
    参数3:阴影模糊度
    参数4:阴影的宽度 阴影默认跟盒子一样大,如果给正的数,在盒子的基础上四边加多少
    参数5:阴影的颜色
    参数6:是否为内阴影,默认为外阴影 如果加一个inset就是内阴影,不加就是外阴影
    多个阴影之间用逗号隔开,先写的阴影层级更高
    实例:box-shadow:0px 0px 20px 10px green,0px 0px 20px 10px gold;

    5 box-sizing

    box-sizing:它可以设置边框是外扩还是内聚

    设置后盒子宽高不用再加上边框

    //加上后盒子宽高为100px
    .box{
                 width: 100px;
                 height: 100px;
                 background-color: #f00;
                 border: 10px solid black;
    
                 /* 让边框内聚
                    border-box代表内聚
                    content-box代表外扩,它也是默认值
                  */
                 box-sizing: border-box;
             }
    

    6 text-shadow

    text-shadow:文字阴影,给文字加阴影
    参数1:水平偏移,正数往右边
    参数2:垂直偏移,正数往下边
    参数3:模糊度
    参数4:阴影的颜色
    多个阴影之间用逗号隔开,先写的层级更高
    实例:text-shadow: -5px -5px 10px green,-10px -10px 10px yellow,-15px -15px 10px red;

    7 background

    参数1:图片路径,路径里可以写引号也可以不写
    参数2:是否平铺,默认值是repeat:水平和垂直都平铺
    no-repeat 用的多,代表不平铺
    repeat-x:代表水平平铺
    repeat-y:代表垂直平铺
    参数3:图片偏移位置,默认在左上角
    第一个数给的是水平方向,值越大越往右,越小往左
    第二个数给的是垂直方向,值越大越往下,越小往上
    除了可以给数字具体数据外,还可以给单词,如果你要居中,写一个center就够了
    还可以给百分比50%代表居中
    参数4:图片的大小,默认用的是图片自身大小
    参数4前面必须加 /
    两个单词:
    cover: 覆盖的意思。图片最终一定要覆盖整个盒子
    contain:包含的意思。图片一定会被盒子包含住
    它们两都是等比例缩放
    参数5:背景颜色
    如果要放多个背景图片,用逗号隔开,如果多张背景图片,那么背景颜色,一定只能写在最后
    先写的层级更高!
    代码示例:background: url(images/pl.png) no-repeat 0 0 / 300px 200px, url(images/lq.png) no-repeat 0 200px/300px 200px red;

    background也是一个复合属性

    background-image: 路径
    background-repeat: 是否平铺
    background-position: 位置
    background-position-x:x轴位置
    background-position-y:y轴位置
    background-size: 大小
    background-color: 背景颜色

    8 线性渐变

    参数1:渐变的方向 可以写 to 单词
    还可以写角度,单位是deg,0deg从下开始,值越大顺时针转
    参数2:渐变的颜色1
    参数3:渐变的颜色2
    每个颜色后面还可以写百分比,第一个颜色写百分比代表它到哪结束,后面的颜色写百分比代表从哪开始,如果要指定它在哪结束,就再写一个相同的颜色再来一个百分比,这时候百分比就是结束位置
    渐变颜色可以写N多个,至少2个
    但其实C3是把它当图片处理的,所以你赋值是给background-image赋值
    代码: background-image: linear-gradient(to right,red 30%,blue 30%,blue 60%,yellow 60%)

    9 径向线变

    参数1:圆的大小和圆心的位置
    后面接颜色,颜色至少2个,多了可以N个
    它除了渐变方式不一样以外,其他跟线性渐变都是一样的
    background-image: radial-gradient(100px at center,red 30%,blue 30%,blue 60%,yellow 60%);

    10 二维变换

    二维:就是指只有x轴和y轴
    变换:旋转、平移、缩放、扭曲
    以上变换,改的都是同一个属性:transform
    旋转:rotate
    平移:translate
    缩放:scale
    扭曲:skew

    li:nth-child(1):hover {
    
            /* 传入角度,正为顺时针旋转,负为逆时针旋转 */
             transform: rotate(-45deg);
    
                 /* 
                    参数1:x轴方向,值越大越往右,越小越往左
                    参数2:y轴方向,值越大越往下,越小越往上
                    只写一个只移动x轴
                */
                transform: translate(-500px, 200px);
    
     /* 传入的是缩放的倍数
                    如果只写一个代表宽高都缩放
                    参数1:代表宽的缩放(x轴方向)
                    参数2:代表高的缩放(y轴方向)
                */
                transform: scale(1.5,0.5);
            }
    /* 传入角度 */
                transform: skew(15deg);
    

    多个变换使用空格隔开,先旋转后平移会改变方向

    /* 空格隔开,只有改transform的时候是空格隔开 */
    transform: translate(500px) rotate(45deg);

    11 三维变换

    三维变换要给父盒子加一个视距perspective: 600px;这样看起来才会有3d效果

    三维旋转,transform:rotateX(45deg) x轴
    transform:rotateY(45deg) y轴
    transform:rotateZ(45deg) z轴
    三维平移
    x轴:transform: translateX(200px);
    y轴:transform: translateY(200px);
    z轴:transform: translateZ(200px);
    设置旋转固定点,默认值是center center
    trasnform-origin:left top;
    开启3D层次显示,默认情况下浏览器没有开启元素的层次显示
    transform-style: preserve-3d;

    12 animation动画

    transition动画的局限:
    1.必须要满足一定条件才会触发,无法自动开始
    2.不能设置动画播放的次数
    animation属性就是一套用来做动画效果的属性,可以自动开始,可以设置动画的次数

    1 使用
    首先要写一个剧本

    @keyframes swimming{
              //from一般不写
                from{}
                to{
              //要变成的样子
                    background-position-y: -1386px;
                }
            }
    

    调用
    animation: swimming 1s steps(11) infinite;
    详解:

    参数1:剧本名字
    参数2:动画持续时间
    参数3:延迟时间
    参数4:运动曲线 linear匀速 steps分步骤
    参数5:动画次数,默认为1,不要加单位 infinite代表无限次
    参数6:默认情况下动画完成后会复原,加一个属性叫forwards就不会复原了
    加了代表停在动画结束的最终效果
    参数7:默认情况下多次动画的时候,每次动画完成会闪现回最初的样子,如果我希望用动画效果回到最初样子
    就加一个属性叫alternate,但是注意回去的那次动画也算一次动画
    参数8:是播放还是暂停
    running:默认值 播放
    paused:暂停
    这些参数没有顺序之分,想到哪个就写哪个就行了,后写的时间是延迟时间
    */
    animation: bigger 1s .1s linear 3 forwards alternate paused;

    13百分比动画

    之前的from,to这种动画,它无法达到想先做什么动画,再做什么动画,然后又做什么动画的效果.它只能同时去做某一种动画,这时候需要写百分比动画,先做什么,再做什么,然后做什么

     @keyframes ani2{
                /* 从动画一开始,到动画总时长的百分之50,干下面这件事 */
                /* 从0到百分之40的时间做平移 */
                40%{
                    transform: translateX(800px);
                }
    
                /* 从40%以后到80%用来放大 */
                80%{
                    /* 在已经到800的基础再放大 */
                    transform: translateX(800px) scale(1.5);
                }
    
                /* 80%到90%做旋转 */
                90%{
                    
                    transform: translateX(800px) scale(1.5) rotate(45deg);
                }
    
                /* 剩下的时间如果我们没写,它就代表用剩余的时间动画效果去复原 */
            }
    

    相关文章

      网友评论

          本文标题:从0开始学习HTML5CSS3(二)

          本文链接:https://www.haomeiwen.com/subject/howryqtx.html