css 基础知识 (待完善...)

CSS
 
1.position 属性
    对元素进行定位.
 
    absolute
        相对于 非static类型的position 的 第一个(临近的) 父元素 进行定位.
 
    relative
        相对于 正常文档流的位置进行定位. 可以简单理解为 相对于自己本身 进行偏移量定位.
        例如,"position:relative;left:20;" 会让该元素在left位置增加20px.
        
    fixed
        也是生成绝对定位元素.与absolute不同的是,它是相对于浏览器窗口 进行定位.
        todo : 所谓浏览器窗口 到底指代的 html标签 还是 body标签 ? 或者就是字面的'浏览器窗口'?
 
    static
        默认值.表示元素会出现在正常的文档流中的位置.
        该类型定位会让元素 忽略掉 top , left , right , bottom 以及 z-index 属性.
 
    inherit
        从 直接父级 继承position属性的值.
 
    补充:
        position的默认属性是static.不可继承的.
        css2开始支持position.
        当是absolute/fixed时,无论什么元素都会变成块级的.
        IE8及以下版本 均不支持 inherit值 .(todo , IE9 及以上 支持不?)
 
    JS语法: object.style.position = '';
 
 
2.display 属性
    规定了元素 应该生成的 框的类型.
 
    none
        此元素不会被显示.
 
    block
        元素显示为 块级元素. 元素的前后 都会带有换行符.
 
    inline
        默认值.元素显示为 内联元素. 元素前后 没有换行符.
 
    inline-block
        元素显示为 行内块元素.
 
    list-item
        元素会作为 列表 显示.
 
    run-in
        根据上下文 来决定 元素是以 块级/内联 方式显示.
 
    table
        元素显示为 块级表格(类似于<table>). 元素前后带有换行符.
 
    inline-table
        元素显示为 内联表格(类似于<table>). 元素前后 没有换行符.
 
    table-row-group
        元素显示为 一个/多个 行的分组(类似于<tbody>).
 
    table-header-group
        元素显示为 一个/多个 行的分组(类似于<thead>).
 
    table-footer-group
        元素显示为 一个/多个 行的分组(类似于<tfoot>).
 
    table-row
        元素显示为 一个 表格行(类似于<tr>).
 
    table-column-group
        元素显示为 一个/多个 列的分组(类似于<colgroup>).
 
    table-column
        元素显示为 一个 单元格列(类似于<col>).
 
    table-cell
        元素显示为 一个 表格单元格(类似于<td>或<th>).
 
    table-caption
        元素显示为 一个 表格标题(类似于<caption>).
 
    inherit
        规定从父级元素 继承 display属性.
 
 
    补充:
        IE7及以下 不支持 inline-table, inherit, run-in, 以及所有 table-* 属性.
        从css1开始支持display属性.
        display属性的默认值是inline.不可继承的.
 
    JS语法 : object.style.display = ''
 
 
 
3.background 属性
    设置元素的 背景属性.
 
    background-color
        规定要使用的背景色.
        该颜色为纯色,会覆盖 元素的内容,内边距,边框(直到边框的边界为止,即不包括外边距,但是包括边框本身的区域).
        因此,如果边框有部分是透明的(比如虚线边框),那么透明的地方会显示背景颜色.
 
        color_name
            代指颜色名称,如 'red'
 
        hex_number
            代指 十六进制的 颜色值, 如 '#ff0000'
 
        rgn_number
            代指 rgb类型的 颜色值, 如 'rgb(0,255,255)'
 
        transparent
            默认值.表示元素的背景色为透明的.
 
        inherit
            规定从父级继承的 background-color 属性的值.
 
        JS语法 : object.style.backgroundColor = 'rgb(0,255,255)';
 
 
    background-position
        规定背景图像的位置.
 
        该值有三种设置方式:(其中方式二 和方式三 可以混合使用)
 
        方式一 (如果只指定了一个 那么第二个值默认为center)
            top  left   或 top center    或 top right
            center left 或 center center 或 center right
            bottom left 或 bottom center 或 bottom right
 
        方式二 (如果仅指定了一个值 , 那么第二个值默认为 50%)
            x% y%   如: 0% 0%
 
        方式三 (如果仅指定了一个值 , 那么第二个值默认为 50%)
            xpos ypos  如: 0 0 , 单位可以是任何css单位 px em rem等
 
        JS语法 : object.style.backgroundPosition = '0% 10%';
 
 
    background-repeat
        规定 是否/如何 重复背景图像.(其实就是 设置哪种 平铺模式).
 
        repeat
            默认值. 图像在 水平以及垂直方向上重复.
 
        repeat-x
            图像在 水平方向上重复.
 
        repeat-y
            图像在 垂直方向上重复.
 
        no-repeat
            背景图像仅显示一次.
 
        inherit
            从父级元素上继承background-repeat 属性的值.
 
        JS语法 : object.style.backgroundRepeat = 'repeat-x'
 
 
 
    background-attachment
        规定背景图像是 固定的/随着页面其余部分滚动 .
 
        scroll
            默认值. 背景图像随着页面其余部分滚动.
 
        fixed
            背景图像是固定的,不会随着页面其余部分滚动.
 
        inherit
            从父级元素上继承background-attachment属性的值
 
        JS语法 : object.style.backgroundAttachment = 'fixed'
 
 
    background-image
        规定要使用的背景图像.
 
        url('URL')
            指向背景图片的路径.
 
        none
            默认值.不显示背景图像.
 
        inherit
            从父级元素上继承background-image属性的值.
 
        JS语法 : object.style.backgroundImage = 'url("../xxx/xx.jpg")'
 
 
    inherit
        从父级元素上继承background属性的值.
 
 
    background-size
        规定背景图像的尺寸.
 
        length
            设置背景图像的宽高.如果只设置一个值,则第二个值默认为'auto'.
 
        percentage
            百分比形式设置宽高.如果只设置一个值,则第二个值默认为'auto'.
 
        cover
            把背景图片扩展至足够大,使背景图像覆盖背景区域.
            背景图像的某些部分有可能无法显示在指定的背景定位区域内(说白了,就是背景图像可能只能局部显示,多余的部分已经超出背景区域的管辖了).
 
        contain
            把图像扩展至最大尺寸,以使得宽高完全适应内容区域.(智能填充有木有!)
 
        JS语法 : object.style.backgroundSize = '10px auto'
 
 
    background-origin
        规定背景图像的定位区域(即设置以盒模型的哪个部位来定位).
 
        padding-box
            默认值.以内边距来定位背景图片
 
        border-box
            以边框来定位背景图片.
 
        content-box
            以内容框来定位背景图片.
 
        JS语法 : object.style.backgroundOrigin = 'content-box'
 
 
    background-clip
        规定背景的绘制区域.(todo 看效果,网页提供的用例 没有明显效果)
 
        padding-box
            背景被裁剪到内边距框.
 
        border-box
            默认值.背景被裁剪到边框盒.
 
        content-box
            背景被裁剪到内容框.
 
        JS语法 : object.style.backgroundClip = 'padding-box'
 
 
    JS语法 : object.style.background = 'orange url("../xxx.jpg") repeat-y'
 
    补充:
        后三个属性是css3新出的.前者是css1的.
        IE8及以下版本均不支持一个元素多个背景图片.
        IE7及以下版本不支持inherit.IE8需要声明 !DOCTYPE .
        对于background属性本身,可以不指定某个/某几个值(即只设定部分值).
        推荐使用background属性 , 而不是以值 作为属性 分别设置:
            不但可以减少文字的键入 , 还可以保证老版本的浏览器 能有更好的兼容性.
 
    
 
        
4.@keyframes 规则 及 animation属性 (-webkit , -moz ,-o 前缀对 它们都适用)
 
    @keyframes 规定动画规则.
        语法:
            @keyframes animation_name {
                keyframes_selector_1 {
                    css_styles ;
                }
                keyframes_selector_2 {
                    css_styles ;
                }
            }
        其中,
            animation_name : 自定义的动画名称
            keyframes_selector_* : 动画时长百分比(0-100%).
            css_styles : 一个/多个 合法的css样式.
 
        样例:
            @keyframes mymove
            {
                0%   {top:0px; left:0px; background:red;}
                25%  {top:0px; left:100px; background:blue;}
                50%  {top:100px; left:100px; background:yellow;}
                75%  {top:100px; left:0px; background:green;}
                100% {top:0px; left:0px; background:red;}
            }
 
        补充:
            和@keyframes用法一样,兼容不同浏览器的规则如下:
                @-moz-keyframes mymove          /* Firefox */
                @-webkit-keyframes mymove       /* Safari 和 Chrome */
                @-o-keyframes mymove            /* Opera */
 
 
    animation
        动画属性的一个统称.它有六个更细颗粒的动画属性.
 
        animation-name
            绑定到@keyframes规则 上的动画名称.
 
            none    
                默认值.无动画效果.
 
            keyframes_name
                需要绑定到选择器上的keyframes名称.
 
            JS语法 : object.style.animationName = 'mymove'
        
 
        animation-duration
            动画的周期(即耗时).单位为 秒/毫秒. 只的是单次的耗时,和animation-count属性无关.
 
            time
                动画时长.
 
            JS语法 : object.style.animationDuration = '5s'
 
 
        animation-timing-function
            规定动画的速度曲线.
 
            ease
                默认值. 低速 -> 变快 -> 变慢
 
            linear
                匀速.
 
            ease-in
                低速开始.
 
            ease-out
                低速结束.
 
            ease-in-out
                低速开始和结束.
 
            cubic-bezier(n,n,n,n)
                设置速率曲线. n 是0~1之间的值.
 
            JS语法 : object.style.animationTimingFunction = 'linear'
 
 
        animation-delay
            动画开始前的延迟时间.
 
            time
                延迟时间.默认为0.
 
            JS语法 : object.style.animationDelay = '2s'
 
 
        animation-iteration-count
            动画的播放次数.
            
            n
                播放次数.
            
            infinite
                无限循环.
 
            JS语法 : object.style.animationIterationCount = 18 ;
 
 
        animation-direction
            是否轮流反向播放动画.
 
            normal
                默认值. 正常顺序播放.
 
            alternate
                反向播放动画.
 
            JS语法 : object.style.animationDirection = 'alternate'
 
 
    JS语法 : object.style.animation = 'mymove 5s infinite'
 
 
    补充:
        Internet Explorer 9 以及更早的版本不支持 animation 属性。
        Internet Explorer 10、Firefox 以及 Opera 支持 animation 属性。
        Safari 和 Chrome 支持替代的 -webkit-animation 属性。
        animation-duration属性 一定要设定,否则时长为 0,就不会播放动画了
 
 
 
5.transition 属性
    元素过渡属性的统称.分为四个细颗粒度的过渡属性.
 
    transition-property
        过渡效果的css名称.(当指定的css属性的值改变了,过渡效果开始启动)
 
        none
            没有属性会获得过渡效果.
 
        all
            默认值.所有属性获得过渡效果.
 
        property
            定义 应用过渡效果的css属性名称列表. 列表以逗号","作为分隔符.
 
        JS语法 : object.style.transitionProperty = 'width,height';
 
 
    transition-duration
        完成过渡效果需要花费的时间.
 
        time
            默认值为0,意味着不会发生过渡效果.单位可以是秒或者毫秒.
 
        JS语法 : object.style.transitionDuration = '10s';
 
 
    transition-timing-function
        该函数定义了 过渡效果的 速度曲线.
        
        (具体值的意义 参考 animation-timing-function)
        linear , ease (默认值), ease-in , ease-out , ease-in-out , cubic-bezier(n,n,n,n)
 
        JS语法 : object.style.transitionTimingFunction = 'ease'
 
 
    transition-delay
        过渡效果 开始前的 延迟时间.单位为秒或毫秒.
 
        time
            延迟时间,默认为0s.
 
        JS语法 : object.style.transitionDelay = '3000 ms'
 
 
    补充:
        transition-duration属性 一定要设置,否则过渡时长为0,不会有过渡效果.
        过渡效果一般发生在 鼠标指针浮动到元素身上时候发生.
        Internet Explorer 10、Firefox、Opera 和 Chrome 支持 transition 属性。
        Safari 支持替代的 -webkit-transition 属性。
        Internet Explorer 9 以及更早版本的浏览器不支持 transition 属性。
    
 
6.transform 属性
    元素 在 2d/3d层面 的转换. 其中x,y,z皆为数值.
 
    none
        默认值. 不进行转换.
 
    matrix(n,n,n,n,n,n)
        2d转换. 使用六个值的矩阵. (md..矩阵咋算 ..)
 
    matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)
        3d转换. 使用十六个值的 4*4矩阵.
 
    translate(x,y)
        2d转换.
 
    translate3d(x,y,z)
        3d转换.
 
    translateX(x)
        x轴上的转换.
 
    translateY(y)
        y轴上的转换.
 
    translateZ(z)
        3d转换.z轴上的转换
 
    scale(x,y)
        2d缩放转换.
 
    scale3d(x,y,z)
        3d缩放转换.
 
    scaleX(x)
        x轴上的缩放转换.
 
    scaleY(y)
        y轴上的缩放转换.
 
    scaleZ(z)
        z轴上的3d缩放转换.
 
    rotate(angle)
        2d旋转. angle为旋转角度.
 
    rotate3d(x,y,z,angle)
        3d旋转.
 
    rotateX(x)
        绕x轴进行3d转换.
 
    rotateY(y)
        绕y轴进行3d转换.
 
    rotateZ(z)
        绕z轴进行3d转换.
 
    skew(x_angle,y_angle)
        x轴以及y轴进行倾斜转换.
 
    skewX(x)
        x轴进行倾斜转换.
 
    skewY(y)
        y轴进行倾斜转换.
 
    perspective(n)
        为3d转换元素定义透视视图(todo 什么鬼?没试出来..)
 
    JS语法 : object.style.transform="rotate(7deg)"
 
    补充:
        Internet Explorer 10、Firefox、Opera 支持 transform 属性。
        Internet Explorer 9 支持替代的 -ms-transform 属性(仅适用于 2D 转换)。
        Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。
        Opera 只支持 2D 转换。
 
 
 
7.伪类
    其实,它是css选择器的一部分.抽离出来记录下.
 
    :before
        在该元素前面插入内容
 
    :after  
        在该元素后面插入内容
 
    :link   
        选择所有未被访问过的链接
 
    :visited    
        选择所有已被访问过的链接
 
    :active
        选择活动链接/元素
 
    :hover
        鼠标悬停状态的元素
 
    :focus
        选择 获得了焦点的元素
 
    :first-letter
        选择该元素的首个字母.
 
    :first-line
        选择该元素的第一行
 
    :first-child
        选择 所有符合 属于父元素的第一个该类型的子元素
 
    :lang(language)
        选择 带有指定字符开头的lang属性值 的每个元素
 
    :first-of-type
        选择 所有符合 属于父元素的 第一个 该类型的子元素
 
    :last-of-type
        选择 所有符合 属于父元素的 最后一个 该类型的子元素
 
    :only-of-type
        选择 所有符合 '属于父元素的该类型 有且仅有一个该类型子元素' 的该类型元素.
 
    :only-child
        选择 所有符合 '属于父元素的  有且仅有 一个子元素' 的 该类型元素.
 
    :nth-child(n)
        选择 所有符合 属于父元素的 第n个 该类型的子元素
 
    :nth-last-child(n)
        选择 所有符合 属于父元素的 倒数第n个 该类型的子元素
 
    :nth-of-type(n)
        选择 所有符合 属于父元素的 第n个 该类型的子元素
 
    :nth-last-of-type(n)
        选择 所有符合 属于父元素的 倒数第n个 该类型的子元素
 
    :last-child
        选择 所有符合 属于父元素的 最后一个 该类型的子元素
 
    :root
        选择文档的根元素. (那么对于html来讲,应该就是html了)
 
    :empty
        选取所有 不含子元素的 元素
 
    :target
        选取当前活动的元素. 实际上 和 active 是不同的.(todo 查下不同点)
        (测试 能感受到 :
            target 针对的是 目标活动元素
                --该目标元素处于活动的原因可能是其他元素影响的,
                比如实现锚点定位 后 活动的不是锚点本身,而是 锚点所指向的目标元素 ,
            active针对的是 该元素本身是否活动)
 
    :enabled
        选取每个 处于启用状态的该元素
 
    :disabled
        选取所有 处于禁用状态的该元素
 
    :checked
        匹配所有 处于勾选状态的该元素
 
    :not(selector)
        匹配所有 除了指定类型元素 的元素
 
    ::selection
        选择被用户选取的元素部分
 
 
 
8.content 属性 (todo css文档和html文档中 该属性的值不一样 mmp ...)
    配合 :before 或 :after 使用. 来插入生成内容.
 
    string
        文本内容
 
    url
        资源存储位置,文本内容就是该资源.
 
    attr(X)
        该元素 某个指定属性的值 作为伪类元素所修饰的元素的插入内容.
 
    open-quote
        双引号 中 前面(即第一个)引号
 
    close-quote
        双引号 中 后面(即第二个)引号
 
    no-open-quote (不知道是什么鬼)
    no-close-quote (不知道是什么鬼)
 
    counter(..args)
    counter-increment
    counter-reset
 
    JS语法 : object.style.content = 'url(deep.wave)'
 
 
 
9.定位属性
 
 
 
 
 
 
 
10.文本属性
    color
        文本颜色
 
    direction
        文本书写方向
 
    letter-spacing
 
 
    line-height
 
 
    text-align
 
 
    text-decoration
 
 
    text-indent
 
 
    text-shadow
 
 
    text-transform
 
 
    white-space
 
 
    word-spacing
 
 
    text-justify
 
 
    text-outline
 
 
    text-overflow
 
 
    text-wrap
 
 
    word-break
 
 
    word-wrap
 
 
 
    unicode-bidi
 
 
 
 
 
 
11. 字体
 
 
 
 
.清除浮动
 
 
 
 
 
 
.垂直居中
 
 
 
 
 
 
 
.css单位
    css单位有两种 : 尺寸单位 和 颜色单位.
 
    尺寸单位:
        px
            一个像素点的大小.
 
        em
            (todo .. 重点补充)
 
        %
            百分比
 
        以及 in,cm,mm,ex,pc,pt .
 
 
    颜色单位:
        rgb(x,x,x)
            rgb值.
 
        rgb(x%,x%,x%)
            rgb百分比值.
 
        #rrggbb
            十六进制 值.
 
        实际上 还有很多比如
            rgba , 相比rgb增加了一个透明度选项.rgba(r,g,b,alpha)
            hsl(色调,饱和度,亮度), hsla(色调,饱和度,亮度,透明度). 其中色调0~360,饱和度和亮度为百分比,透明度为0~1.
 
 
.flex -- 手机
 
 
 
 
 
 
.calc , vh
 
 
 
posted @ 2019-07-04 13:33  豆豆飞  阅读(117)  评论(0编辑  收藏  举报