首页 > 代码库 > css3的基本语法和简单妙用

css3的基本语法和简单妙用

选择器

属性选择器:

    E[attr=val]

    E[attr]

    E[attr^=val] 属性值以val开头

    E[attr$=val] 属性值以val结尾

    E[attr*m=val]属性值含有val,不管在什么位置

伪类选择器:

    E:first-child 选中父元素中的第一个E子元素

    E:last-child  选中父元素中的最后一个E子元素

    E:nth-child(n)  选中父元素中第n个子元素(元素0开始,n从0开始)n(数字,表达式 -5+n,2n+1,odd,even)

    E:nth-last-child(n)  选中父元素中倒数第n个子元素(元素0开始,n从0开始)


    E:empty 选中内容为空,或没有子元素

    E:target    选中锚点的的目标元素

    E:not(选择器)

    eg:

        /*p:first-child  先找父元素 找到所有的子元素  在去找第一个子元素  匹配是不是p  如果不是无效的选择器*/

        /*p:first-of-type 先找父元素 找到所有的p元素  找第一个*/

        /*p:nth-of-type 第几个*/

   /*p:last-of-type 最后一个p*/

        /*p:nth-last-of-type 倒数第几个*/

结构选择器:+ ~

    E[attrxxxx]+E   选择当前的元素 然后找到相邻的下一个元素

    E[attrxxxx]~E   选择当前的元素 然后后面所有的元素

eg:

技术分享
 1 <style>
 2         body{
 3             margin: 0;
 4             padding: 0;
 5         }
 6         div{
 7             color: red;
 8             font-size: 20px;
 9             text-align: center;
10         }
11         /* + 选择到当前的元素然后找到紧邻的下一个元素*/
12         div:nth-child(3) + div{
13             color: blue;
14         }
15 
16         /* ~ 先选择到某个元素 然后找后面所有的元素*/
17         /*div ~ div{
18             color: blue;
19         }*/
20     </style>
21 </head>
22 <body>
23     <div>1</div>
24     <div>2</div>
25     <div>3</div>
26     <div>4</div>
27     <div>5</div>
28 </body>
View Code

伪元素:

    :before :after
    推荐单冒号兼容性好

    出现省略号:
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;

    ::first-letter 选择首字母
    ::first-line   第一行
    ::selection    选中的区域  只能变color和background-color

私有前缀:

    webkit chrome  safari 新版opera
    moz    firefox
    ms     IE
    o      老版opeara

透明色:

    rgba
    opacity 能继承 取值0-1
    transparent 完全透明
    hsla
        h 色调
        s 饱和度0-100%
        l 亮度 0-100%
        a alpha 透明度

阴影

    文字阴影
        text-shadow:水平位移  垂直位移  模糊程度 颜色
        水平位移 值越大越往右 反之往左
        垂直位移 值越大越往下 反之往上
        模糊程度 值从0开始,越大越模糊
        颜色     
 
    盒子阴影
        box-shadow:水平位移  垂直位移  模糊程度 扩展半径 颜色 内阴影(inset)
        水平位移  
        垂直位移  
        模糊程度 
        扩展半径  可以为负值,值越大,扩展半径越大
        颜色 
        内阴影  inset(可选)

盒子尺寸

    box-sizing
        content-box 盒子的尺寸=CSS中的尺寸+padding+border
        border-box  盒子的尺寸=CSS中的尺寸=padding+border+可变的内容尺寸
*, ::before, ::after {
    /*防止溢出*/
    box-sizing: border-box;
    /*盒子的大小从边框开始计算*/
    -webkit-box-sizing: border-box;
  
}

 

边框

    边框半径
      border-radius:x x x x/y y y y
      正圆:border-radius:50%;
 
  边框图片
    border-image-source:url();
    切割图片 border-image-slice:
    border-image-repeat:round;

背景:

background-size:
    数字,百分比,
    cover 完全覆盖整个元素,不考虑图片内容是否损失
    contain 完全显示图片,不考虑是否覆盖整个元素
 
background-origin 背景原点(默认是padding-box)
background-clip 背景图片的显示位置
 
多背景:
    background-image: 
    url("images/bg1.png") left top,
    url("images/bg2.png") right top,
    url("images/bg3.png") right bottom,
    url("images/bg4.png") left bottom,
    url("images/bg5.png") center center;

渐变

    线性:
    (方向,颜色 位置,颜色 位置)
    background-image:linear-gradient(to right,red,green);
    background-image:linear-gradient(0deg,red,green);
    径向:
    (半径 at 位置,颜色 位置,颜色 位置)
     background-image:radial-gradient(20px at 10px,red,green);
过渡:
    transition:过渡属性     过渡时间        过渡延迟     过渡速度
    transition-property ..-duration     ..-delay    transition-timing-function:ease  linear  ease-in ease-in-out
    
    transition: all 0.2s
    过渡all所有变化的属性  0.2s代表属性从初始变化到结束所用的时间

    事件:transitionend

2D转换:
    1)位移 translateX(),translateY(),translate(X,Y)
    2) 旋转 rotate 值越大 是顺时针 反之则逆时针
    3)缩放 scale   值越大 放大 反之缩小
    4)倾斜 skewX skewY skew
3D转换:
    translateZ() translate(X,Y,Z)
    视角:perspective
    3d转换:transform-style:
        flat 2d平面呈现
        perserve-3d 3d空间呈现 

元素水平和垂直的方向上都居中:

1)如何水平垂直居中一个已知尺寸的元素
                position:absolute;
                top:50%;
                left:50%;
                margin-left:-宽的一半
                margin-top:-高的一般
2)如何水平垂直居中一个未知尺寸的元素
                position:absolute;
                top:50%;
                left:50%;
                transform:translate(-50%,-50%);

3)利用 flex 布局
.container {
    display: flex;
    align-items: center;        /* 垂直居中 */
    justify-content: center;    /* 水平居中 */

}
.container div {
    width: 100px;
    height: 100px;
    background-color: pink;     /* 方便看效果 */
}  

animation:

    1)定义动画:
        格式:@keyframes 动画名称{
             0%{}
            25%{}
            50%{}
            75%{}
            100%{} 
        }
     2)调用动画 
        复合属性:    animation:动画名称  动画总时间 动画延迟 动画速度
        动画名称     animation-name  自定义的
        动画总时间   animation-duration 时间
        动画延迟     animation-delay    时间
        动画速度     animation-timing-function  ease ease-in  ease-in-out linear steps(n)
        动画次数     animation-iteration-count  数字  infinite(无线)
        动画播放状态   animation-play-state    running  paused
        动画完成时的状态 animation-fill-mode  backwards回到最初  forwards停留在最后完成时的状态
        动画方向        animation-direction    reverse(反方向)
    事件:animationend

伸缩布局:

    ..容器    给某个元素设置display:flex 就是伸缩容器
    ..项目    伸缩容器中直接的子元素就是伸缩项目
    主  轴    默认水平方向,可调整
    侧  轴    永远垂直主轴

    主轴方向:
        flex-direction: row;默认水平 
        flex-direction: row-reverse;水平反向
        flex-direction: column;竖直
        flex-direction: column-reverse;竖直反向

    伸缩项目在主轴上的对齐方式:
        /*主轴对齐方式  开始点对齐*/
        justify-content:flex-start;
          /*结束点对齐*/
        justify-content: flex-end;
            /*中心对齐*/
        justify-content: center;
            /*两端对齐*/
        justify-content: space-between;
            /*空间环绕*/
        justify-content: space-around;

    flex-wrap  nowrap(不换行) wrap(换行) 默认不换

    设置换行后的排列方式
        align-content  flex-start(起始点对齐)  flex-end(终止点对齐) center(居中对齐)  space-between(两端对齐)  space-around(空间环绕)
    设置不换行的排列方式 
        align-items(侧轴对齐)    flex-start(起始点对齐)  flex-end(终止点对齐) center(居中对齐) stretch(拉伸)

    伸缩项目 
        1.伸缩项目在伸缩容器中所占的空间
            flex:伸缩项目在伸缩容器剩余空间的比例
        2.自己排列自己的对齐方式
            align-self: flex-start(起始点对齐)  flex-end(终止点对齐) center(居中对齐) 
        3.定义自己的排列顺序
            order  值越小,越靠前

em rem:

    em:的基准值  16px  默认的字体大小是16px,基准值是相对于父元素来的
    rem:的基准值  16px  默认的字体大小是16px
    r 是root  根元素的意思  html文档的根元素是  html标签
    基准值是相对于来根元素(html)来的

css3的基本语法和简单妙用