• CSS3基础知识


    基础知识

    1.1 选择器

    CSS3新增了许多灵活查找元素的方法,极大的提高了查找元素的效率和精准度CSS3选择器与jQuery中所提供的绝大部分选择器兼容。

    1.1.1 属性选择器

    其特点是通过属性来选择元素,具体有以下5种形式:

    1E[attr] 表示存在attr属性即可;

    2E[attr=val] 表示属性值完全等于val

    3E[attr*=val] 表示的属性值里包含val字符并且在“任意”位置;

    4E[attr^=val] 表示的属性值里包含val字符并且在“开始”位置;

    5E[attr$=val] 表示的属性值里包含val字符并且在“结束”位置;

    1.1.2 伪类选择器

    除了以前学过的:link:active:visited:hoverCSS3又新增了其它的伪类选择器。

    1、以某元素相对于其父元素或兄弟元素的位置来获取无素的结构伪类。

    重点理解通过E来确定元素的父元素。

    E:first-child第一个子元素

    向上找到E的父元素,父元素的第一个子元素若为E,则实现选择效果,如果第一个不为E,则没有筛选到任何元素。

    E:last-child最后一个子元素

    E:nth-child(n) n个子元素,计算方法是E元素的全部兄弟元素;

    E:nth-last-child(n) E:nth-child(n) 相似,只是倒着计算;

    n遵循线性变化,其取值01234... 但是当n<=0时,选取无效。

    n可是多种形式:nth-child(2n+0)nth-child(2n+1)nth-child(-1n+3)等;

    需要满足y=ax+b

    注:指E元素的父元素,并对应位置的子元素必须是E

    nth-of-type

    /*nth-of-type 是section里面的1 3 5 7...*/
    /*匹配完成section后,在来 拿1 3 5 7.*/
    
    section:nth-of-type(odd){
        
    }
    
            /*
    nth-child(index) 是从当前指定的元素去找父元素,拿到父元素下面的所有的子元素,给他们编一个序号
     再从序号中过滤我们要拿到的元素。
     nth-of-type(index) 拿到对应的指定的 类型的元素。
            */

    E:empty 选中没有任何子节点的E元素;(使用不是非常广泛)

    /*当元内容为空时会被选中*/
    /*在某些特定场合灵活使用会带来很好的效果*/
    /*学习它的目的只是知道有这个一个特殊的选择器*/
    span:empty {
       display: none;
    }

    2、目标伪类

    E:target 结合锚点进行使用,处于当前锚点的元素会被选中;

    not();

    /*
    not()
     拿到没有指定的 类样式 的元素,并且给它设置样式.
    */
    li:not(.special){
           background-color:red;
    }

    1.1.3 伪元素选择器

    E::first-letter文本的第一个单词或字(如中文、日文、韩文等);

    E::first-line 文本第一行;

    E::selection 可改变选中文本的样式;

    重点:E::beforeE::after

    是一个行内元素,需要转换成块元素

    E:afterE:before 旧版本里是伪元素,CSS3的规范里“:”用来表示伪类,“::”用来表示伪元素,但是在高版本浏览器下E:afterE:before会被自动识别为E::afterE::before,这样做的目的是用来做兼容处理。

    E:afterE:before后面的练习中会反复用到,目前只需要有个大致了解

    ":" "::" 区别在于区分伪类和伪元素

    /*
    注意:
      after、before与content 一起使用!!!
      before 是一个行内元素(默认)
      伪元素使用2个冒号
    */

    参考文档

    :before::before的区别

    https://www.qianduan.net/before-and-before-the-difference-between/

    selection

    /*
    selection 将选中的字体设置样式,但是不支持 font-size
    */
    
    div::selection{
        
        font-size:40px;
        color:red;
    }
    
    /*
     first-letter 拿到第一个字体,在设置样式。 常见的效果 首字母下沉
     */
    li:first-letter{
        font-size:40px;
    }
    
    /* first-line 拿到首行字母(不管浏览器放大缩小,始终是第一行),设置样式  */
       div::first-line{
    font-size:40px;
           color:yellow;
       }

    1.1.4 对象文字占位

    • ::placeholder 伪元素用于控制表单输入框占位符的外观,它允许开发者/设计师改变文字占位符的样式,默认的文字占位符为浅灰色。
    • 当表单背景色为类似的颜色时它可能效果并不是很明显,那么就可以使用这个伪元素来改变文字占位符的颜色。
    • 需要注意的是,除了Firefox::[prefix]placeholder,其他浏览器都是使用 ::[prefix]input-placeholder
    • Firefox支持该伪元素使用text-overflow属性来处理溢出问题。
    <input type="text" placeholder="占位符" />
    
    input::-webkit-input-placeholder {
    
    color: #999;
    
    }

    1.1.5 calc()函数值

    .test {
    
    width: calc(100% - 50px);
    
    background: #eee;
    
    }
    
    <div class="test">我的宽度为100% - 50px</div>

    1.1.6 attr()属性函数

    div:after {
    
    content: attr(title);
    
    }
    
    <div title="title"></div>

    div.end();找到div前一个元素,就是父级元素

    https://www.qianduan.net/before-and-before-the-difference-between/

    1.2 颜色

    新增了RGBAHSLA模式,其中的A 表示透明度通道,即可以设置颜色值的透明度,相较opacity,它们不具有继承性,即不会影响子元素的透明度。

    RedGreenBlueAlphaRGBA

    HueSaturation、Lightness、AlphaHSLA

    RGB 取值范围0~255

    H 色调 取值范围0~3600/360表示红色、120表示绿色、240表示蓝色

    S 饱和度 取值范围0%~100%

    L 亮度 取值范围0%~100%

    A 透明度 取值范围0~1

    关于透明度:

    1opacity只能针对整个盒子设置透明度,子盒子及内容会继承父盒子的透明度;

    2 transparent 不可调节透明度,始终完全透明

    border:3px solid transparent;
    
    /*transparent :透明,完全继承父元素的颜色,不能修改透明程度,相当于opacity:0;*/
    
    /*子盒子会继承父盒子的opacity*/
    
    background: hsla(120, 0%, 50%, 1);

    RGBAHSLA可应用于所有使用颜色的地方。

    1.3 文本

    text-shadow,可分别设置偏移量、模糊度、颜色(可设透明度)。

    1、水平偏移量 正值向右 负值向左;

    2、垂直偏移量 正值向下 负值向上;

    3、模糊度是不能为负值;

      

        /*
           text-shadow:
            第一个值,表示水平方向,如果给负数往左边走,如果是正数,往右边
            第二个值,表示垂直方向,正数表是像下,负数表示向上
            第三值,表 模糊程度,不能为负数
            第四个参数:表颜色 可以 red 
    gb 
    gba
          */
    li {
       font-size: 24px;
       line-height: 40px;
       margin: 10px 0;
        text-shadow:1px 1px 10px yellow;
    }

    1.4 边框

    其中边框圆角、边框阴影属性,应用十分广泛,兼容性也相对较好,具有符合渐进增强原则的特征,我们需要重点掌握。

    1.4.1 边框圆角

    border-radius

    圆角处理时,脑中要形成圆、圆心、横轴、纵轴的概念,正圆是椭圆的一种特殊情况。如下图

     

    可分别设置长、短半径,以/”进行分隔,遵循“1234”规则,“/”前面的1~4个用来设置横轴半径(分别对应横轴1234位置 ),“/”后面1~4个参数用来设置纵轴半径(分别对应纵轴1234位置 )

    border-radius 给一个值,表示四个角
       如果是2个值:第一个值表示,左上,右下。第二个值:右上与左下。
        如果是3个值:第一个值表示左上,第二个值表示 右上与左下,第三个参数表示右下。
        如果是4个值:分别表示左上、右上、右下、左下
         1~4个参数用来设置纵轴半径(分别对应纵轴1234位置
    如果是一个值得时候,参数大于半径的,默认会取半径

    /:/前的是设置x,后边的是设置y

    .border-radius {
       width: 200px;
       height: 200px;
       margin: 100px auto;
       /*border-radius:10px 30px 50px 80px;这种情况就是x=y*/
       /*border-radius: 100px 150px/100px 30px;*/
       /*border-radius:10px 40px  80px  100px;*/
       /*border-radius:40px 50px/ 40px;*/
       border-radius:50PX 100PX 100PX  20PX/ 50PX  70PX;
    }

    1.4.2 边框阴影

    box-shadow

    1、水平偏移量 正值向右 负值向左;

    2、垂直偏移量 正值向下 负值向上;

    3、模糊度是不能为负值;

    4inset可以设置内阴影;

    设置边框阴影不会改变盒子的大小,即不会影响其兄弟元素的布局。

    可以设置多重边框阴影,实现更好的效果,增强立体感。

    /*
     box-shadow: 表示盒子的阴影
       第一个参数:水平方向 正数是右边==>, 负数左边 《==
       第二个参数:垂直方式 正数是下边,负数是上边
       第三个参数:模糊程度
       第四参数:颜色
       第五个是:如果加上 inset 之 后是内阴影,否则默认是外阴影
    */
    
    
    div{
        height:100px;
        width:100px;
        
        margin:2px;
        float:left;
       box-shadow:10px 10px  30px #c0c0c0 ,-10px -20px 10px  red ;
    }

    1.5 盒模型

    CSS3中可以通过box-sizing 来指定盒模型,即可指定为content-boxborder-box,这样我们计算盒子大小的方式就发生了改变。

    可以分成两种情况:

    1box-sizing: border-box  计算方式为content = width – border - padding

    2box-sizing: content-box  计算方式为content = width(默认)

    兼容性比较好

    1.6 背景

    背景在CSS3中也得到很大程度的增强,比如背景图片尺寸、背景裁切区域、背景定位参照点、多重背景等。

    1、background-size设置背景图片的尺寸

    Background-size:cover/contain/auto/70% 50%/20px 50px;

    cover会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分则会被隐藏。

    contain会自动调整缩放比例,保证图片始终完整显示在背景区域。可能会留空白。

    也可以使用长度单位或百分比

     background-size:auto 默认值 只会显示部分,从左上角算起
    background-size:100% 100%;给宽与高 进行100%的拉伸显示.完全显示,但是由于图片的比例与盒子的比例不协调,会导致失真

    background-size:50px 50px;

    2、background-origin设置背景定位的原点

    background-origin:border-box/padding-box/content-box;

    默认是从border里面,padding

    background-origin:border-box;
    图片的起点就是border-box
    background-origin:content-box;
    图片的起点就是content
    background-origin:padding-box;
     图片的起点就是padding

    border-box以边框做为参考原点;

    padding-box以内边距做为参考原点;

    content-box以内容区做为参考点;

    3background-clip设置背景区域裁切

    border-box裁切边框以内为背景区域;

    padding-box裁切内边距以内为背景区域;

    content-box裁切内容区做为背景区域;

    background-clip:padding-box;
    只会留下 padding-box 以为的内容作为背景图片
    background-clip:content-box;
    只会留下 content-box以为的内容作为背景图片
    background-clip:border-box; 是默认值,留下边框以内的内容作为背景图片

    4、以逗号分隔可以设置多背景,可用于自适应

    background: url(./images/bg1.png) left top no-repeat,
             url(./images/bg2.png) right top no-repeat,
             url(./images/bg3.png) right bottom no-repeat,
             url(./images/bg4.png) left bottom no-repeat,
             url(./images/bg5.png) center center no-repeat;

    背景图片尺寸在实际开发中应用十分广泛。

    1.7渐变

    渐变是CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性。

    可分为线性渐变、径向渐变

    1.7.1 线性渐变

    linear-gradient线性渐变指沿着某条直线朝一个方向产生渐变效果。

    <linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+);

    <side-or-corner> = [left | right] || [top | bottom]

    <color-stop> = <color> [ <length> | <percentage> ]?

    取值:

    下述值用来表示渐变的方向,可以使用角度或者关键字来设置:

    <angle>

    用角度值指定渐变的方向(或角度)。

    to left:

    设置渐变为从右到左。相当于: 270deg

    to right:

    设置渐变从左到右。相当于: 90deg

    to top:

    设置渐变从下到上。相当于: 0deg

    to bottom:

    设置渐变从上到下。相当于: 180deg。这是默认值,等同于留空不写。 

    <color-stop> 用于指定渐变的起止颜色:

    <color>

    指定颜色。

    <length>

    用长度值指定起止色位置。不允许负值

    <percentage>

    用百分比指定起止色位置。

     

    1、必要的元素:

    a、方向

    b、起始颜色

    c、终止色;

    2、关于方向如下图

     

    0deg:表示顶部方向 top

    90deg 表示右边方向right
    180deg表示底部bottom
    270deg 表示左边方式left

    .bg{
        width:50px;
        height:400px;
        border:1px solid #000;
        background:linear-gradient(135deg, white 25%,black 25%,black  50%, white 50%,white 75%, #000 75%);
        background-size:40px 40px;
        animation:move 4s linear infinite ;
    }
    @keyframes move{
        from{}
        to{background-position:100px 100px;}
    }

    1.7.2 径向渐变

    语法:

    <radial-gradient> = radial-gradient([ [ <shape> || <size> ] [ at <position> ]? , | at <position>, ]?<color-stop>[ , <color-stop> ]+)

    <position> = [ <length>① | <percentage>① | left | center① | right ]? [ <length>② | <percentage>② | top | center② | bottom ]?

    <shape> = circle | ellipse

    <size> = <extent-keyword> | [ <circle-size> || <ellipse-size> ]

    <extent-keyword> = closest-side | closest-corner | farthest-side | farthest-corner

    <circle-size> = <length>

    <ellipse-size> = [ <length> | <percentage> ]{2}

    <shape-size> = <length> | <percentage>

    <color-stop> = <color> [ <length> | <percentage> ]?

    取值:

    <position> 确定圆心的位置。如果提供2个参数,第一个表示横坐标,第二个表示纵坐标;如果只提供一个,第二值默认为50%,即center

    <percentage>①:

    用百分比指定径向渐变圆心的横坐标值。可以为负值。

    <length>①:

    用长度值指定径向渐变圆心的横坐标值。可以为负值。

    left:

    设置左边为径向渐变圆心的横坐标值。

    center①:

    设置中间为径向渐变圆心的横坐标值。

    right:

    设置右边为径向渐变圆心的横坐标值。

    <percentage>②:

    用百分比指定径向渐变圆心的纵坐标值。可以为负值。

    <length>②:

    用长度值指定径向渐变圆心的纵坐标值。可以为负值。

    top:

    设置顶部为径向渐变圆心的纵坐标值。

    center②:

    设置中间为径向渐变圆心的纵坐标值。

    bottom:

    设置底部为径向渐变圆心的纵坐标值。

    <shape> 确定圆的类型

    circle:

    指定圆形的径向渐变

    ellipse:

    指定椭圆形的径向渐变。

    <extent-keyword> circle | ellipse 都接受该值作为 size

    closest-side:

    指定径向渐变的半径长度为从圆心到离圆心最近的边

    closest-corner:

    指定径向渐变的半径长度为从圆心到离圆心最近的角

    farthest-side:

    指定径向渐变的半径长度为从圆心到离圆心最远的边

    farthest-corner:

    指定径向渐变的半径长度为从圆心到离圆心最远的角

    <circle-size> circle 接受该值作为 size

    <length>

    用长度值指定正圆径向渐变的半径长度。不允许负值。

    <ellipse-size> ellipse 接受该值作为 size

    <length>

    用长度值指定椭圆径向渐变的横向或纵向半径长度。不允许负值。

    <percentage>

    用百分比指定椭圆径向渐变的横向或纵向半径长度。不允许负值。

    <color-stop> 用于指定渐变的起止颜色:

    <color>

    指定颜色。

    <length>

    用长度值指定起止色位置。不允许负值

    <percentage>

    用百分比指定起止色位置。不允许负值

    background:radial-gradient(50px at 100px 100px,red 40%,pink 50% ,blue 80% ,yellow);

    radial-gradient径向渐变指从一个中心点开始沿着四周产生渐变效果

     

    1、必要的元素:

    a、辐射范围即圆半径

    b、中心点 即圆的中心

    c、渐变起始色

    d、渐变终止色

    2、关于中心点:中心位置参照的是盒子的左上角

    3、关于辐射范围:其半径可以不等,即可以是椭圆

    1.8 过渡transition

    过渡是CSS3中具有颠覆性的特征之一,可以实现元素不同状态间的平滑过渡(补间动画),经常用来制作动画效果。

    帧动画:通过一帧一帧的画面按照固定顺序和速度播放。如电影胶片

    补间动画:自动完成从起始状态到终止状态的的过渡。

    关于补间动画更多学习可查看http://mux.alimama.com/posts/1009

    特点:当前元素只要有“属性”发生变化时,可以平滑的进行过渡。

    transition-property设置过渡属性

    transition-duration设置过渡时间

    transition-timing-function设置过渡速度

    transition-delay设置过渡延时

    transition:all 0.5s 0s linear;

    语法

    transition: property duration timing-function delay;

    描述

    transition-property

    规定设置过渡效果的 CSS 属性的名称。

    none  all  property

    transition-duration

    规定完成过渡效果需要多少秒或毫秒。

    transition-timing-function

    规定速度效果的速度曲线。

    transition-delay

    定义过渡效果何时开始。

    transition-timing-function

    描述

    linear

    规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。

    ease

    规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。

    ease-in

    规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。

    ease-out

    规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。

    ease-in-out

    规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。

    cubic-bezier(n,n,n,n)

    cubic-bezier 函数中定义自己的值。可能的值是 0 1 之间的数值。

    Steps(number,start/end)

    第一个参数指定了时间函数中的间隔数量(必须是正整数)

    第二个参数可选,接受 start end 两个值,指定在每个间隔的起点或是终点发生阶跃变化,默认为 end

    step-start等同于steps(1,start),动画分成1步,动画执行时为开始左侧端点的部分为开始;

    step-end等同于steps(1,end):动画分成一步,动画执行时以结尾端点为开始,默认值为end

    1.9 2D转换(transform)

    语法

    transform: none|transform-functions;

    描述

    none

    定义不进行转换。

    matrix(n,n,n,n,n,n)

    定义 2D 转换,使用六个值的矩阵。

    matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)

    定义 3D 转换,使用 16 个值的 4x4 矩阵。

    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 旋转,在参数中规定角度。

    rotate3d(x,y,z,angle)

    定义 3D 旋转。

    rotateX(angle)

    定义沿着 X 轴的 3D 旋转。

    rotateY(angle)

    定义沿着 Y 轴的 3D 旋转。

    rotateZ(angle)

    定义沿着 Z 轴的 3D 旋转。

    skew(x-angle,y-angle)

    定义沿着 X 和 Y 轴的 2D 倾斜转换。

    skewX(angle)

    定义沿着 X 轴的 2D 倾斜转换。

    skewY(angle)

    定义沿着 Y 轴的 2D 倾斜转换。

    perspective(n)

    为 3D 转换元素定义透视视图。

    转换是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、变形、缩放,甚至支持矩阵方式,配合即将学习的过渡和动画知识,可以取代大量之前只能靠Flash才可以实现的效果。

    1、移动 translate(x, y) 可以改变元素的位置,xy可为负值;

    2、缩放 scale(x, y) 可以对元素进行水平和垂直方向的缩放,xy的取值可为小数,不可为负值;

    4、旋转 rotate(deg) 可以对元素进行旋转,正值为顺时针,负值为逆时针;

    5、倾斜 skew(deg, deg) 可以使元素按一定的角度进行倾斜

    6、旋转原点transform-origin:top left;transform-origin:20px  70px;transform-origin:30%  20%;

    1.10 3D转换(animation)

    语法

    animation: name duration timing-function delay iteration-count direction;

    描述

    animation-name

    规定需要绑定到选择器的 keyframe 名称。。

    animation-duration

    规定完成动画所花费的时间,以秒或毫秒计。

    animation-timing-function

    规定动画的速度曲线。

    animation-delay

    规定在动画开始之前的延迟。

    animation-iteration-count

    规定动画应该播放的次数。

    animation-direction

    规定是否应该轮流反向播放动画。

    13D坐标轴animation

    XYZ分别表示空间的3个维度,三条轴互相垂直。如下图

     

    2、左手坐标系

    伸出左手,让拇指和食指成L形,大拇指向右,食指向上中指指向前方。这样我们就建立了一个左手坐标系,拇指、食指和指分别代表XYZ轴的正方向。如下图

     

    3、左手法则

    左手握住旋转轴,竖起拇指指向旋转轴正方向,正向就是其余手指卷曲的方向

    配置3d环境:给父盒子添加

    配置3d环境:给父盒子添加属性

    transform-style:preserve-3d;

    近大远小效果:(值越大元素越小)

    perspective:1000px;
    
    perspective: 1000px;
    transform-style: preserve-3d;
    
    /* 背面出现,就隐藏 */
    backface-visibility: hidden;

     

    1.11 动画

    动画是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。

    .bigbox{
        width:300px;
        animation:move  8s 2s linear 3 backwards;
    }

    animation:第一个参数是动画序列名称;第二个参数是动画完成时间;第三个参数是延时执行时长;第四个是动画执行速度;第五个是动画执行次数,不写默认1;第六个是动画执行完毕后状态。

    keyframes : keyframes后面接上一个 定义的动画组名称, 可以将动画组划分100等份
    0%{}..100%{}
    另外一种
    from{} to{}

    @keyframes move{
        0%{height:0;}
        100%{height:200px;}
    }
    
    @keyframes move{
        from{height:0;}
        to{height:200px;}
    }

    1、必要元素:

    a、通过@keyframes指定动画序列;

    b、通过百分比将动画序列分割成多个节点;

    c、在各节点中分别定义各属性

    d、通过animation将动画应用于相应元素;

    2、关键属性

    aanimation-name设置动画序列名称

    banimation-duration动画持续时间

    canimation-delay动画延时时间

    danimation-timing-function动画执行速度,linearease、ease-in-out、steps(60)(参数为分多少步完成)ease-inease-out等

    eanimation-play-state动画播放状态,runningpaused(暂停)等

    fanimation-direction动画播放方向alternate(先正方向再反方向,并交替进行)、reverse(反向)alternate-reverse(先反方向再正方向)、normal

    normal: 正常方向
    reverse: 反方向运行
    alternate: 动画先正常运行再反方向运行,并持续交替运行
    alternate-reverse: 动画先反运行再正方向运行,并持续交替运行

    ganimation-fill-mode动画执行完毕后状态,forwards(停留在结束状态)backwards(停留在初始状态)等

    hanimation-iteration-count动画执行次数,infinite,默认一次

    1.12 伸缩布局(display:flex)

    参考学习网址:http://blog.csdn.net/liujianhuan0622/article/details/46894857

    CSS3在布局方面做了非常大的改进,使得我们对块级元素的布局排列变得十分灵活,适应性非常强,其强大的伸缩性,在响应式开中可以发挥极大的作用。

    如下图,学习新的概念:

    主轴:Flex容器的主轴主要用来配置Flex项目,默认是水平方向

    侧轴:与主轴垂直的轴称作侧轴,默认是垂直方向的

    方向:默认主轴从左向右,侧轴默认从上到下

    主轴和侧轴并不是固定不变的,通过flex-direction可以互换。

     

    1、必要元素:

    a、指定一个盒子为伸缩盒子 display: flex,(行内元素可以设置为display:inline-flex;)

    b、设置属性来调整此盒的子元素的布局方式 例如 flex-direction

    c、明确主侧轴及方向

    d、可互换主侧轴,也可改变方向

    2、各属性详解

    aflex-direction调整主轴方向(默认为水平方向)(该属性写在父元素上) 

     flex-direction: row | row-reverse | column | column-reverse;

    bjustify-content调整主轴对齐方式 (给父元素)

       justify-content:flex-start | flex-end | center | space-between | space-around;

    calign-items调整侧轴对齐方式(给父元素)

      align-items:flex-start | flex-end | center | baseline | stretch;

    baseline:项目的第一行文字的基线对齐stretch(默认是):如果项目未设置高度或设为auto,将占满整个容器的高度

    dflex-wrap控制是否换行,默认值 nowarp (写在父元素上)

     flex-wrap:nowrap | wrap | wrap-reverse;

    ealign-content堆栈(由flex-wrap产生的独立行)对齐

    align-content属性定义了多根轴线的对齐方式,如果项目只有一根轴线,该属性不起作用堆栈排列,可对应用flex-wrap: wrap后产生的换行进行控制

    align-content:flex-start | flex-end | center | space-between | space-around | strech;

    fflex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap;(写在父元素上)

    flex-flow:<flex-direction> || <flex-wrap>;

    gflex控制子项目的缩放比例,给元素本身

    flex属性是flex-grow,flex-shrink和flex-basis的简写,默认值为0,1,auto,后两个属性可选

    .item{

    flex:none 该属性有两个快捷值:auto(1 1 auto)和none(0 0 auto);

    }

    flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大,如果所有项目的flex-grow属性都为1,则它们将等分剩余空间;如果一个项目的flex-grow属性为2,其他项目都为1 则前者占据的剩余空间将比其他项目多一倍。

    flex-grow:<number>;

    flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小,如果所有项目的flex-shrink属性都为1,当空间不足的时候,都将等比例缩小;如果一个项目的flex-shrink属性为0,其他项目都为1 则空间不足时,前者不缩小

    flex-shrink:<number>;

    flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间main size,浏览器根据这个属性,计算主轴是否有多余空间,它的默认值是auto,即项目的本来大小。它可以设置为跟width或height属性一样的值,则项目将占据固定空间 

    flex-basis:<length> | auto;

    horder控制子项目的排列顺序,数值越小,排列越靠前,默认为0,如果没有添加此属性,默认排到最前边(给元素本身)

    order:<integer>;(整数)

    Ialign-self属性允许单个项目有与其他不一样的对齐方式,可覆盖align-items属性,默认值为auto,表示继承父元素的align-items属性, 如果没有父元素,则等同于stretch

    .item{

    align-self:auto | flex-start | flex-end | center | baseline | strech;

    }

    此知识点重在理解,要明确找出主轴、侧轴、方向,各属性对应的属性值可参考示例源码

    1.13 多列布局

    类似报纸或杂志中的排版方式,上要用以控制大篇幅文本。

    了解即可,实际意义不大。

          /* 设置成几列 */
          column-count:4;
    
         /* 列的宽度 */
         column-300px;
           /* 多列的间隙的宽度 */
          column-gap:40px;
          /* 设置间隙的线条 */
          column-rule:2px dashed red;
    
          /* 横跨所有列  */
          -webkit-column-span:all;

     

  • 相关阅读:
    ServletConfig类
    坑爹的去哪儿网订酒店经历
    python + opencv + pycharm +语音生成
    最近看到的工作要求
    pip in windows
    路由器外接硬盘做nas可行吗?
    阅读201706
    scrum学习
    学习concurrency programming进展
    Reactor/Proactor的比较 (ZZ)
  • 原文地址:https://www.cnblogs.com/SPHmomo/p/6913663.html
Copyright © 2020-2023  润新知