css小结

2018-08-05  本文已影响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写法

上一篇下一篇

猜你喜欢

热点阅读