css小结

作者: 熊少年 | 来源:发表于2018-08-05 16:10 被阅读39次

    CSS选择器和写法

    1 常用选择器--为元素绘画效果
    ID:选择器,class选择器,标签选择器

    ID写法  #test {
    width: 100px;
    height: 100px;
    background-color: lightgreen;
    }

    class写法  .test {
    width: 100px;
    height: 100px;
    background-color: lightgreen;
    }

    标签写法  div {
    width: 100px;
    height: 100px;
    background-color: lightgreen;
    }

    2 伪类选择器--CSS伪类是用来添加一些选择器的特殊效果。

    a:link {color:#FF0000;} /* 未访问的链接 /
    a:visited {color:#00FF00;} /
    已访问的链接 /
    a:hover {color:#FF00FF;} /
    鼠标划过链接 /
    a:active {color:#0000FF;} /
    已选中的链接 */
    :lang 伪类使你有能力为不同的语言定义特殊的规则

    注意: 在CSS定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。 在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。伪类的名称不区分大小写。

    3 子类选择器

    p::nth-child(an+b)

    1 li:nth-child(3){background:blue;}
    2 li:nth-child(3n){background:blue;}
    3 li:nth-child(an+b) 与 :nth-child(an-b)
    4 :nth-child(odd) 与 :nth-child(even) 奇数(odd)与(2n+1)结果一样;偶数(even)与(2n+0)及(2n)结果一样。

    4 伪元素

    p:before;p:after

    5 选择器优先级
    (1) 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。
    (2) 作为style属性写在元素内的样式
    (3) id选择器
    (4) 类选择器
    (5) 标签选择器
    (6) 通配符选择器
    (7) 浏览器自定义或继承
    总结排序:!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
    同一级别中后写的会覆盖先写的样式
    权值
    内联样式表的权值为 1000
    ID 选择器的权值为 100
    Class 类选择器的权值为 10
    HTML 标签选择器的权值为 1

    CSS盒模型

    box-sizing: content-box;
    指定元素的宽度和高度(最小/最大属性)适用于box的宽度和高度。元素的填充和边框布局和绘制指定宽度和高度除外
    1 总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
    2总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

    box-sizing: border-box;
    指定宽度和高度(最小/最大属性)确定元素边框box。也就是说,对元素指定宽度和高度包括padding和border的指定。内容的宽度和高度减去各自双方该边框和填充的宽度从指定的"宽度"和"高度"属性计算

    CSS常用的布局

    1 块级元素:div p form ul ol li 等(块级元素独自占一行且宽度会占满父元素宽度);
    A 居中对起
    a知道宽度和高度

    .box {
            height: 500px;
            width: 500px;
            border: 1px saddlebrown solid;
        }
    
        .test {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
            margin-top: 200px;
            margin-left: 200px;
        }
    

    b不知道宽度和高度
    flex居中

      .box {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 50%;
            height: 50%;
            border: 1px saddlebrown solid;
        }
    
        .test {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    

    transform居中

    .box {
            width: 500px;
            height: 500px;
            border: 1px saddlebrown solid;
            position: relative;
        }
    
        .test {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    

    margin居中

       .box {
            width: 500px;
            height: 500px;
            border: 1px saddlebrown solid;
            position: relative;
        }
    
        .test {
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            top: 0;
            margin: auto;
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    

    c table居中

        .box {
            width: 500px;
            height: 500px;
            display: table-cell;
            border: 1px saddlebrown solid;
            vertical-align: middle;
        }
    
        .test {
            margin: auto;
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    

    2 行内元素:span strong em等(行内元素不会独占一行,没有宽度和高度);
    水平居中:text-align:center
    ul水平居中:加
    display:table;
    margin:0 auto;
    此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
    垂直居中:line-height:父元素的height

    CSS float闭合

    .box {
    border: 1px saddlebrown solid;
    }

        .test1 {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
            float: left;
        }
    
        .clearfix:after {
            content: '.';
            display: block;
            height: 0;
            clear: both;
            visibility: hidden;
        }
        .clearfix:after {
            content:”.”;
            display:block;
            height:0;
            clear:both;
            visibility:hidden;
        }
    

    给需要闭合的div加上 class=”clearfix” 即可

    <div class="box clearfix">
    <div class="test1 "></div>
    </div>

    CSS 动画

    一在CSS 3引入Transition(过渡)这个概念之前,CSS是没有时间轴的。也就是说,所有的状态变化,都是即时完成。
    1Transition 加上时间

        .box {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    
        .box:hover {
            background-color: black;
            width: 200px;
            height: 300px;
        }
    
        .box {
            transition: 2s;
        }
    

    2 Transition 确认范围

        .box {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    
        .box:hover {
            background-color: black;
            width: 200px;
            height: 300px;
        }
    
        .box {
            transition: 2s height;
        }
    

    3 Transition,可以分别指定多个属性。

        .box {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    
        .box:hover {
            background-color: black;
            width: 200px;
            height: 300px;
        }
    
        .box {
            transition: 2s height, 5s width, 3s background-color;
        }
    

    4 Transition,添加延迟参数。

        .box {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    
        .box:hover {
            background-color: black;
            width: 200px;
            height: 300px;
        }
    
        .box {
            transition: 2s height, 5s width,5s 3s background-color;
        }
    

    5 Transition,添加动画函数。
    (1)linear:匀速

    (2)ease-in:加速

    (3)ease-out:减速

    (4)cubic-bezier函数:自定义速度模式

        .box {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    
        .box:hover {
            background-color: black;
            width: 200px;
            height: 300px;
        }
    
        .box {
            transition: 2s height, 5s width,5s 3s background-color ease;
        }
    

    6 Transition 完整写法

        .box {
            transition-property: height;
            transition-duration: 1s;
            transition-delay: 1s;
            transition-timing-function: ease;
            /*transition: 2s height cubic-bezier(.83,.97,.05,1.44), 5s width,5s 3s background-color ease;*/
        }
    

    7 Transition使用注意
    (1)目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀。
    (2)不是所有的CSS属性都支持transition,完整的列表查看这里,以及具体的效果
    (3)transition需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态。比如,height从0px变化到100px,transition可以算出中间状态。但是,transition没法算出0px到auto的中间状态,也就是说,如果开始或结束的设置是height: auto,那么就不会产生动画效果。类似的情况还有,display: none到block,background: url(foo.jpg)到url(bar.jpg)等等。
    8 Transition使用局限
    (1)transition需要事件触发,所以没法在网页加载时自动发生。
    (2)transition是一次性的,不能重复发生,除非一再触发。
    (3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。
    (4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。
    二CSS Animation
    1 CSS Animation需要指定动画一个周期持续的时间,以及动画效果的名称。

        @keyframes changeBG {
            0% {
                background: #c00;
            }
            50% {
                background: orange;
            }
            100% {
                background: yellowgreen;
            }
        }
    
        .box {
            width: 100px;
            height: 100px;
            background-color: lightgreen;
        }
    
        .box:hover {
            animation: 1s changeBG;
        }
    

    2 指定动画播放次数(加入infinite关键字,可以让动画无限次播放)

        .box:hover {
            animation: 1s changeBG 3;
        }
    

    3animation-fill-mode还可以使用下列值。确定动画结束时的状态
    (1)none:默认值,回到动画没开始时的状态。
    (2)backwards:让动画回到第一帧的状态。
    (3)forwards表示让动画停留在结束状态
    (4)both: 根据animation-direction(见后)轮流应用forwards和backwards规则。

        .box:hover {
            animation: 1s changeBG 3 forwards;
        }
    

    4animation-direction指定了动画播放的方向(最常用的值是normal和reverse)

        .box:hover {
            animation: 1s changeBG 3 forwards reverse;
        }
    

    5完整写法

        .box:hover {
            animation-name: rainbow;
            animation-duration: 1s;
            animation-timing-function: linear;
            animation-delay: 1s;
            animation-fill-mode:forwards;
            animation-direction: normal;
            animation-iteration-count: 3;
        }
    

    CSS兼容性

    主流浏览器css兼容问题的总结

    -webkit- ,针对safari,chrome浏览器的内核CSS写法
    -moz-,针对firefox浏览器的内核CSS写法
    -ms-,针对ie内核的CSS写法
    -o-,针对Opera内核的CSS写法

    相关文章

      网友评论

          本文标题:css小结

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