CSS3学习笔记大全

此片文章是CSS3学习,如果要学习CSS基础,点击CSS基础入门学习笔记
目录

  • 新增选择器
    • 属性选择器
    • 结构伪类选择器
      • 兄弟伪类
      • 目标伪类
    • 伪元素选择器
  • 盒模型
  • 颜色
    • RGBA
    • HSLA
  • 渐变
    • 线性渐变
    • 径向渐变
    • 重复渐变
  • 边框
    • 边框圆角
    • 边框阴影
    • 边框图片
  • 背景
    • 背景属性
    • 背景缩放
    • 多背景
  • 过渡
  • transform2D
  • transform3D
  • 透规(pespective)
    • backface-visibility
  • 动画animation
  • Flex伸缩布局(CSS3)
    • 容器的属性
    • 项目的属性

参考手册解读指南:

  • [] 表示可选项
  • | 表示或者
  • || 表示多选一
  • ? 0个或1个
  • *表示0个或多个
  • {} 表示范围

新增选择器

属性选择器

选取标签带有某些特殊属性的选择器

/* 获取到拥有该属性的元素 */
div[class^=font] { /*  class^=font 表示 font 开始位置就行了 */
            color: pink;
        }
div[class$=footer] { /*  class$=footer 表示 footer 结束位置就行了 */
            color: skyblue;
        }
div[class*=tao] { /* class*=tao  *=  表示tao 在任意位置都可以 */
            color: green;
        }

结构伪类选择器

结构伪类选择器 功能描述
E:last-child 选择父元素的倒数第一个子元素E,相当于E:nth-last-child(1)
E:nth-child(n) 选择父元素的第n个子元素,n从1开始计算
E:nth-last-child(n) 选择父元素的倒数第n个子元素,n从1开始计算
E:first-of-type 选择父元素下同种标签的第一个元素,相当于E:nth-of-type(1)
E:last-of-type 选择父元素下同种标签的倒数第一个元素,相当于E:nth-last-of-type(1)
E:nth-of-type(n) 与:nth-child(n)作用类似,用作选择使用同种标签的第n个元素
E:nth-last-of-type 与:nth-last-child作用类似,用作选择同种标签的倒数第一个元素
E:only-child 选择父元素下仅有的一个子元素,相当于E:first-child:last-child或E:nth-child(1):nth-last-child(1)
E:only-of-type 选择父元素下使用同种标签的唯一子元素,相当于E:first-of-type:last-of-type或
E:empty 选择空节点,即没有子元素的元素,而且该元素也不包含任何文本节点
E:root 选择文档的根元素,对于HTML文档,根元素永远HTML
li:first-child { /*  选择第一个孩子 */
                color: pink; }
li:last-child {   /* 最后一个孩子 */
                color: purple;}
li:nth-child(4) {   /* 选择第4个孩子n代表 第几个的意思 */ 
                color: skyblue;}

li:first-of-type{
   color: red;
}
li:last-of-type{
    color: orange;
}
li:nth-last-of-type(-n+5){
     font-size: 30px;/*前五个*/
}
兄弟伪类
  • +:获取当前元素的相邻的满足条件的元素 ,相邻;必须是指定类型的元素

    .first + li{
    			color: blue;
    		}
    
  • ~:获取当前元素的满足条件的兄弟元素,必须是指定类型的元素

    .first ~ li{
    			color: pink;
    		}
    
目标伪类

:target目标伪类选择器 :选择器可用于选取当前活动的目标元素

可以为锚点目标元素添加样式,当目标元素被触发为当前锚链接的目标时,调用此伪类样式

:target {
        color: red;
        font-size: 30px;
}

伪元素选择器

  1. E::before和E::after

在E元素内部的开始位置和结束位创建一个元素,该元素为行内元素,需要转块,且必须要结合content属性使用。

​ i.是一个行内元素,需要转换成块position;display:block ;float;

​ ii.必须添加content, 哪怕不设置内容,也需要content:””,否则不可见

注意:伪元素:before和:after添加的内容默认是行内元素;这个两个伪元素的content属性,表示伪元素的内容,设置:before和:after时必须设置其content属性,否则伪元素就不起作用。

div::befor {/*内部前面插入开始*/
  content:"开始";
}
div::after {
  content:"结束";/*内部后面插入结束*/
}

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

“:” 与 “::” 区别在于区分伪类和伪元素(低版本只能识别:,效果相同)

之所以被称为伪元素,是因为他们不是真正的页面元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用诸如页面元素一样的css样式,表面上看上去貌似是页面的某些元素来展现,实际上是css样式展现的行为,因此被称为伪元素。是伪元素在html代码机构中的展现,可以看出无法伪元素的结构无法审查

  1. E::first-letter文本的第一个单词或字(如中文、日文、韩文等)
  2. E::first-line 文本第一行;
  3. E::selection 可改变选中文本的样式,不能改变大小 ;
p::first-letter {/* 首字或单词特殊样式 */
  font-size: 20px;
  color: hotpink;
}
p::first-line {/* 首行特殊样式 */
  color: skyblue;
}
p::selection {/*选中后的文本样式*/
  /* font-size: 50px; */
  color: orange;
}

盒模型

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

1、box-sizing: content-box 外加模式,盒子大小为 width + padding + border content-box:此值为其默认值,其让元素维持W3C的标准Box Mode

2、box-sizing: border-box 内减模式,盒子大小为 width ,就是说 padding 和 border 是包含到width里面的

注:上面的标注的width指的是CSS属性里设置的width: length,content的值是会自动调整的。

div:first-child {
            width: 200px;
            height: 200px;
            background-color: pink; 
            box-sizing: content-box;  /*  就是以前的标准盒模型  w3c */
            padding: 10px;
            border: 15px solid red;
        }
        div:last-child {
            width: 200px;
            height: 200px;
            background-color: purple;
            padding: 10px;
            box-sizing: border-box;   /* padding border  不撑开盒子 */
            border: 15px solid red;
            /* margin: 10px; */
}

颜色

RGBA

在RGB的基础上加进了一个通道Alpha。RGBA在RGB的基础上多了控制alpha透明度的参数

以上R、G、B三个参数,正整数值的取值范围为:0 - 255。百分数值的取值范围为:0.0% - 100.0%。超出范围的数值将被截至其最接近的取值极限。(并非所有浏览器都支持使用百分数值)A参数,取值在0~1之间,不可为负值。

RGBA比元素设置CSS的透明度更好,因为单独的颜色可以在不影响整个元素的透明度,他不会影响到元素其他的属性,比如说边框,字体同时也不会影响到其他元素的相关透明度

语法:

  • R:红色值。正整数 | 百分数

  • G:绿色值。正整数 | 百分数

  • B:蓝色值。正整数| 百分数

  • A:透明度。取值0~1之间

使用示例:

div{
   width: 200px;
   height: 200px;
   background-color: rgba(10,20,245,0.5);
   color: white;
 }

HSLA

此色彩模式与HSL相同,只是在HSL模式上新增了Alpha透明度

语法:

  • H:Hue(色调,色相)。0(或360)表示红色,120表示绿色,240表示蓝色,也可取其他数值来指定颜色。取值为:0 – 360,过渡为:(红橙黄绿青蓝紫红)

  • S:Saturation(饱和度)。取值为:0.0% - 100.0% (加白色,最终白色100%)

  • L:Lightness(亮度)。取值为:0.0% - 100.0%,默认50%是平衡值 Brightness (加黑色,0%黑色)

  • A:Alpha(透明度)。取值0~1之间。

span{
   width: 200px;
   height: 200px;
   display: block;
   background-color: hsla(360,100%,50%,0.6);
   color: white;
 }

H色调,色相:

在这里插入图片描述

关于透明度的补充说明:

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

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

c) 使用rgba 来控制颜色,相对opacity ,不具有继承性

渐变

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

线性渐变

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

语法:linear-gradient(方向,开始颜色 位置,颜色2 位置,颜色3 位置…);

linear-gradient( [<point> || <angle>,]? <stop>, <stop> [, <stop>]* )

参数说明:

  • 第一个参数表示线性渐变的方向

    • to left:设置渐变为从右到左。相当于: 270deg;
    • to right:设置渐变从左到右。相当于: 90deg;
    • to top:设置渐变从下到上。相当于: 0deg;
    • to bottom:设置渐变从上到下。相当于: 180deg。这是默认值,等同于留空不写。也可以直接指定度数,如45deg
  • 第二个参数是起点颜色,可以指定颜色的位置

  • 第三个参数是终点颜色,你还可以在后面添加更多的参数,表示多种颜色的渐变

示例:

div{
   width: 400px;
   height: 400px;
   margin: 100px auto;
   background: linear-gradient(0deg,red,orange,yellow,green, #00ffff,blue,purple);
 }

径向渐变

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

a) 语法:radial-gradient(形状 大小 坐标 颜色1,颜色2…):

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

b) 取值:

  • position 确定圆心的位置。+at 如果提供2个参数,第一个表示横坐标,第二个表示纵坐标;如果只提供一个,第二值默认为50%,即center;可以赋值坐标(参照元素的左上角),也可以赋值关键字(left center right top bottom)

  • shape:渐变的形状,ellipse表示椭圆形,circle表示圆形。默认为ellipse,如果元素形状为正方形的元素,则ellipse和circle显示一样

  • size:渐变的大小,即渐变到哪里停止,它有四个值。 closest-side:最近边; farthest-side:最远边; closest-corner:最近角; farthest-corner:最远角。默认是最远的角farthest-corner

  • color:指定颜色。Rgba hsla

重复渐变

repeating-radial-gradient

background: repeating-radial-gradient(circle closest-side at center center,
#fff 0%,#fff 10%,
#000 10%,#000 20%);

语法:text-shadow:水平位置 垂直位置 模糊距离 阴影颜色;

text-shadow : none | <length> none | [<shadow>, ] * <shadow> 或none | <color> [, <color> ]*

(可叠加)
text-shadow:[颜色(Color) x轴(X Offset) y轴(Y Offset) 模糊半径(Blur)],

[颜色(color) x轴(X Offset) y轴(Y Offset) 模糊半径(Blur)]…

或者
text-shadow:[x轴(X Offset) y轴(Y Offset) 模糊半径(Blur) 颜色(Color)],[x轴(X Offset) y轴(Y Offset) 模糊半径(Blur) 颜色(Color)]…

在这里插入图片描述

在这里插入图片描述

图示:

在这里插入图片描述

说明:

可以给一个对象应用一组或多组阴影效果,方式如前面的语法显示一样,用逗号隔开。

text-shadow: X-Offset Y-Offset Blur Color中X-Offset表示阴影的水平偏移距离,其值为正值时阴影向右偏移,如果其值为负值时,阴影向左偏移;Y-Offset是指阴影的垂直偏移距离,如果其值是正值时,阴影向下偏移反之其值是负值时阴影向顶部偏移;Blur是指阴影的模糊程度,其值不能是负值,如果值越大,阴影越模糊,反之阴影越清晰,如果不需要阴影模糊可以将Blur值设置为0;Color是指阴影的颜色,其可以使用rgba色

边框

边框圆角

border-radius可以通过值来定义样式相同的角,也对每个角分别定义

  1. 值的说明
border-radius:*px: 四个大小一样的圆角
border-radius:*px *px *px *px: 左上角、右上角、右下角、左下角(顺时针)
border-radius:*px *px:左上角、右下角;右上角、左下角(对角)
border-radius:*px *px *px:左上角;右上角、左下角;右下角
border-radius:100px/50px; 添加/是用来设置当前个不同方向的半径值;水平x方向/垂直y方向,椭圆

创建两个值的非对称圆角:如border-radius:20px/10px;表示在水平方向上20px,在垂直方向上10px;

  1. 单个圆角的设置:除了同时设置四个圆角以外,还可以单独对每个角进行设置。对应四个角,CSS3提供四个单独的属性:
  • border-top-left-radius
  • border-top-right-radius
  • border-bottom-right-radius
  • border-bottom-left-radius

这四个属性都可以同时设置1到2个值。如果设置1个值,表示水平半径与垂直半径相等。如果设置2个值,第一个值表示水平半径,第二个值表示垂直半径

边框阴影

文本阴影:text-shadow:offsetX offsetY blur color
边框阴影:box-shadow:h v blur spread color inset

  • h:水平方向的偏移值
  • v:垂直方向的偏移值
  • blur:模糊–可选,默认0
  • spread:阴影的尺寸,扩展和收缩阴影的大小–可选 默认0
  • color:颜色–可选,默认黑色
  • inset:内阴影–可选,默认是外阴影

边框图片

功能:将图片规定为包围 div 元素的边框

/*border-image: source slice / width/outset repeat;*/
border-image: url("../images/border1.png") 27 / 27px /0px round;

定义和用法: border-image 属性是一个简写属性,用于设置以下属性

描述
border-image-source 用在边框的图片的路径。
border-image-slice 图片边框向内偏移—裁切。fill:做内容的内部填充;设置受保护的区域大小
border-image-width 图片边框的宽度。如果没有设置这个属性,那么宽度默认就是元素的原始的边框宽度,受保护区域
border-image-outset 边框图像区域超出边框的量。
border-image-repeat 图像边框是否应直接重复平铺(repeat)、将内容缩放进行完整的重复平铺(round)或拉伸(stretch)。

细节:
1.边框图片的本质是背景,并不会影响元素内容的放置
2.内容只会被容器的border和padding影响
建议:一般将值设置为原始的边框的宽度

div{
            width: 500px;
            height: auto;
            border: 10px solid red;
            margin:100px auto;
            /*添加边框图片*/
            border-image-source: url("../images/btn_bg.png");
            /*设置受保护的区域大小*/
            border-image-slice: 10 fill;
            /*设置边框图片的宽度
            1.明确圆角的大小
            2.明确受保护的区域的大小*/
            border-image-width: 10px;
            /*设置背景平铺效果  默认是stretch:拉伸*/
            border-image-repeat: stretch;
        }

背景

背景属性

background-repeat 设置背景平铺

  • round:会将图片进行缩放之后再平铺
  • space:图片不会缩放平铺,只是会在图片之间产生相同的间距值

background-attachment 设置在滚动容器的背景的行为:跟随滚动/固定

  • fixed:背景图片的位置固定不变
  • scroll:当滚动容器的时候,背景图片也会跟随滚动

local和scroll的区别:前提是滚动当前容器的内容

  • local:背景图片会跟随内容一起滚动
  • scroll:背景图片不会跟随内容一起滚动

background-size

通过改变背景尺寸的通过各种不同是属性值改变背景尺寸呈现的大小。往往建议不要将图放大,如果有需要,尽量让图缩小

background-size: auto(原始图片大小) || number(数值) || percentage(百分比) || cover(放大铺满) || contain(缩小铺满)
  • auto:此值为默认值,保持背景图片的原始高度和宽度;

  • number:此值设置具体的值,可以改变背景图片的大小;

  • percentage:此值为百分值,可以是0%〜100%之间任何值,但此值只能应用在块元素上,所设置百分值将使用背景图片大小根据所在元素的宽度的百分比来计算。

  • cover:按比例缩放,不会出现空白,部分不可见;此值是将图片放大,以适合铺满整个容器,将背景图片放大到适合容器的大小

  • contain:按比例缩放,会出现空白,全部可见;此值刚好与cover相反,其主要是将背景图片缩小,以适合铺满整个容器,当背景图片大于元素容器时,而又需要将背景图片全部显示出来,可以使用contain将图片缩小到适合容器大小为止。

  • 当background-size取值为number和percentage时可以设置两个值,也可以设置一个值,当只取一个值时,第二个值相当于auto,但这里的auto并不会使背景图片的高度保持自己原始高度,而是会参照第一个参数值进行等比例缩放。

background-origin

作用:规定 background-position 属性相对于什么位置来定位。默认值是left top左上角;提升移动端响应区域的大小

语法:background-origin: padding-box|border-box|content-box;

属性值说明:

  • padding-box 从padding的位置开始填充背景,会与padding重叠
  • border-box 从border的位置开始填充背景,会与border重叠
  • content-box 背景图像相对于内容框来定位。

background-clip

background-clip 属性规定背景的绘制区:虽然是设置裁切,但是控制的是显示,就是设置最终显示那些区域

语法:background-clip: border-box|padding-box|content-box;

描述
border-box 背景被裁剪到边框盒。显示border及以内的内容
padding-box 背景被裁剪到内边距框。显示padding及以内的内容
content-box 背景被裁剪到内容框。显示content及以内的内容

需求:为块设置精灵图背景,需要更大的展示区域,能够以更大的范围响应用户的需要,但是只需要显示指定的背景图片

a{
     width: 50px;
     height: 50px;
     display: block;
     background-color: #ddd;
     margin:100px auto;
     box-sizing: border-box;        
     background-image: url("../images/sprites.png");
     background-position: -20px 0;
     padding:14px;
     background-origin: content-box;
     background-clip: content-box;
}

背景缩放

通过background-size设置背景图片的尺寸,就像我们设置img的尺寸一样,在移动Web开发中做屏幕适配应用非常广泛。

其参数设置如下:

a) 可以设置长度单位(px)或百分比(设置百分比时,参照盒子的宽高)

b) 设置为cover时,会自动调整缩放比例,保证图片始终填充满背景区域,如有溢出部分则会被隐藏。我们平时用的cover 最多

c) 设置为contain会自动调整缩放比例,保证图片始终完整显示在背景区域。

background-image: url('images/gyt.jpg');
            background-size: 300px 100px;
            /* background-size: contain; */
            /* background-size: cover; */

多背景

以逗号分隔可以设置多背景,可用于自适应布局 做法就是 用逗号隔开就好了。

  • 一个元素可以设置多重背景图像。
  • 每组属性间使用逗号分隔。
  • 如果设置的多重背景图之间存在着交集(即存在着重叠关系),前面的背景图会覆盖在后面的背景图之上。
  • 为了避免背景色将图像盖住,背景色通常都定义在最后一组上,
background:url(test1.jpg) no-repeat scroll 10px 20px/50px 60px  ,
       url(test1.jpg) no-repeat scroll 10px 20px/70px 90px ,
       url(test1.jpg) no-repeat scroll 10px 20px/110px 130px c #aaa;

过渡

过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用 Flash 动画或 JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果

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

在CSS3里使用transition可以实现补间动画(过渡效果),并且当前元素只要有“属性”发生变化时即存在两种状态(我们用A和B代指),就可以实现平滑的过渡,为了方便演示采用hover切换两种状态,但是并不仅仅局限于hover状态来实现过渡。

语法格式:

transition: 要过渡的属性  花费时间  运动曲线  何时开始;
如果有多组属性变化,还是用逗号隔开。
属性 描述
transition 简写属性,用于在一个属性中设置四个过渡属性。
transition-property 规定应用过渡的 CSS 属性的名称
transition-duration 定义过渡效果花费的时间。默认是 0。单位是s
transition-timing-function 规定过渡效果的时间曲线。默认是 “ease”。
transition-delay 规定过渡效果何时开始。默认是 0。

过渡效果:设置为某些css添加火毒效果,设置过度效果耗时,重某个值到另外一个值的过渡

display:none无法添加过渡效果,必须是具体值

如果想要所有的属性都变化过渡, 写一个all 就可以,但是不推荐

父级高度不确定,用auto

transform2D

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

一、移动平移 translate(x, y)

translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动)
translateX(x)仅水平方向移动(X轴移动)
translateY(Y)仅垂直方向移动(Y轴移动)

x、y可为负值;

使用transform实现元素的移动 a.移动是参照元素的左上角 b.执行完毕之后会恢复到原始状态

二、缩放 scale(x, y)

scale(X,Y)使元素水平方向和垂直方向同时缩放(也就是X轴和Y轴同时缩放)
scaleX(x)元素仅水平方向缩放(X轴缩放)
scaleY(y)元素仅垂直方向缩放(Y轴缩放)

  1. 指不缩放,>1.01放大 <0.99缩小 参照元素的几何中心

  2. 只有一个参数,就代表x和y方向都进行相等比例的缩放

transform:scale(0.8,1);
可以对元素进行水平和垂直方向的缩放。该语句使用scale方法使该元素在水平方向上缩小了20%,垂直方向上不缩放。

三、旋转 rotate(deg)

可以对元素进行旋转,正值为顺时针,负值为逆时针; 注意单位是 deg 度数

在这里插入图片描述

transform:rotate(45deg);

transform-origin可以调整元素转换变形的原点

设置旋转轴心

  1. x y
  2. 关键字:left top right bottom center

    在这里插入图片描述

 div{transform-origin: left top;transform: rotate(45deg); }  /* 改变元素原点到左上角,然后进行顺时旋转45度 */  
  div{transform-origin: 10px 10px;transform: rotate(45deg); }  /* 改变元素原点到x 为10  y 为10,然后进行顺时旋转45度 */ 

四、倾斜 skew(deg, deg)

在这里插入图片描述

transform:skew(30deg,0deg);该实例通过skew方法把元素水平方向上倾斜30度,处置方向保持不变。

如果角度为正,则往当前轴的负方向斜切,如果角度为负,则往当前轴的正方向斜切

在这里插入图片描述

可以使元素按一定的角度进行倾斜,第二个参数不写默认为0。

transform连写注意先移动后旋转,因为旋转会将坐标系旋转

transform: none;清除属性值

实现任意元素居中

行级text-alight;块级margin:0 auto(只能同一行居中)

/* 让定位的盒子水平居中 */
.box {
  width: 499.9999px;
  height: 400px;
  background: pink;
     /* absolute参照父元素,走的自己的一半,让定位的盒子水平居中 */
  position: absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%); 
}

transform3D

3D坐标系

在这里插入图片描述

简单记住他们的坐标:

x左边是负的,右边是正的

y 上面是负的, 下面是正的

z 里面是负的, 外面是正的

rotateX()

就是沿着x轴旋转

img {
  transition:all 0.5s ease 0s;
}
img:hove {

  transform:rotateX(180deg);
}

rotateY()

沿着y轴进行旋转

img {
  transition:all 0.5s ease 0s;
}
img:hove {

  transform:rotateX(180deg);
}

rotateZ()

沿着z轴进行旋转

img {
  transition:all .25s ease-in 0s;
}
img:hover {
  /* transform:rotateX(180deg); */
  /* transform:rotateY(180deg); */
  /* transform:rotateZ(180deg); */
  /* transform:rotateX(45deg) rotateY(180deg) rotateZ(90deg) skew(0,10deg); */
}

透视(perspective)

电脑显示屏是一个2D平面,图像之所以具有立体感(3D效果),其实只是一种视觉呈现,通过透视可以实现此目的。

透视可以将一个2D平面,在转换的过程当中,呈现3D效果。

  • 透视原理: 近大远小 。
  • 浏览器透视:把近大远小的所有图像,透视在屏幕上。
  • perspective:视距,表示视点距离屏幕的长短。视点,用于模拟透视效果时人眼的位置

注:并非任何情况下需要透视效果,根据开发需要进行设置。

perspective 一般作为一个属性,设置给父元素,作用于所有3D转换的子元素

理解透视距离原理:

在这里插入图片描述

translateX(x)

仅水平方向移动(X轴移动)

在这里插入图片描述

主要目的实现移动效果

translateY(y)

仅垂直方向移动(Y轴移动)

在这里插入图片描述

translateZ(z)

transformZ的直观表现形式就是大小变化,实质是XY平面相对于视点的远近变化(说远近就一定会说到离什么参照物远或近,在这里参照物就是perspective属性)。比如设置了perspective为200px;那么transformZ的值越接近200,就是离的越近,看上去也就越大,超过200就看不到了,因为相当于跑到后脑勺去了,我相信你正常情况下,是看不到自己的后脑勺的。

translate3d(x,y,z)

[注意]其中,x和y可以是长度值,也可以是百分比,百分比是相对于其本身元素水平方向的宽度和垂直方向的高度和;z只能设置长度值

backface-visibility

backface-visibility 属性定义当元素不面向屏幕时是否可见。

动画animation

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

语法格式:

animation:动画名称 动画时间 运动曲线  何时开始  播放次数  是否反方向;

在这里插入图片描述

关于几个值,除了名字,动画时间,延时有严格顺序要求其它随意

@keyframes 动画名称 {
  from{ 开始位置 }  0%
  to{  结束  }  100%
}
animation-iteration-count:infinite;  无限循环播放
animation-play-state:paused;   暂停动画"

Flex伸缩布局(CSS3)

Flex布局的语法规范经过几年发生了很大的变化,也给Flexbox的使用带来一定的局限性,因为语法规范版本众多,浏览器支持不一致,致使Flexbox布局使用不多

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

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

http://www.ruanyifeng.com/blogimg/asset/2015/bg2015071004.png

容器的属性

以下6个属性设置在容器上。

  • flex-direction:调整主轴方向
  • flex-wrap:如何换行
  • flex-flow:flex-directionflex-wrap的简写形式
  • justify-content:在主轴上的对齐方式(默认水平对齐)
  • align-items:在交叉轴(侧轴)上对齐方式(垂直对齐)
  • align-content:多根轴线的对齐方式

以下对上面属性进行解释:

1.flex子项目在主轴的缩放比例,不指定flex属性,则不参与伸缩分配

min-width 最小值 min-width: 280px 最小宽度 不能小于 280

max-width: 1280px 最大宽度 不能大于 1280

一、flex-direction调整主轴方向(默认为水平方向)

.box {
  flex-direction: row | row-reverse | column | column-reverse;
}
  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

二、flex-wrap

默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

.box{
  flex-wrap: nowrap | wrap | wrap-reverse;
}
  • nowrap(默认):不换行。

  • wrap:换行,第一行在上方。

  • wrap-reverse:换行,第一行在下方。

三、flex-flow

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}

四、justify-content

项目在主轴上的对齐方式(默认水平对齐)

.box {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}
  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

五、align-items

项目在交叉轴(侧轴)上如何对齐。(垂直对齐)

.box {
  align-items: flex-start | flex-end | center | baseline | stretch;
}
  • flex-start:交叉轴的起点对齐。

  • flex-end:交叉轴的终点对齐。

  • center:交叉轴的中点对齐。

  • baseline: 项目的第一行文字的基线对齐。

  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度

六、align-content

align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

项目的属性

以下6个属性设置在项目上。

  • order:定义项目的排列顺序
  • flex-grow:定义项目的放大比例
  • flex-shrink:定义项目的缩小比例
  • flex-basis:定义在分配多余空间之前,项目占据的主轴空间
  • flexflex-grow, flex-shrinkflex-basis的简写
  • align-self:允许单个项目有与其他项目不一样的对齐方式

以下是对上面的属性进行解释:

一、order属性

定义项目的排列顺序。数值越小,排列越靠前,可以为负值。 默认值是 0

.item {
  order: <integer>;
}

二、flex-grow属性

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

.item {
  flex-grow: <number>; /* default 0 */
}

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

三、 flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

.item {
  flex-shrink: <number>; /* default 1 */
}

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效。

四、 flex-basis属性

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

.item {
  flex-basis: <length> | auto; /* default auto */
}

它可以设为跟widthheight属性一样的值(比如350px),则项目将占据固定空间。

五、flex属性

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

.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

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

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

六、align-self属性

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

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

该属性可能取6个值,除了auto,其他都与align-items属性完全一致

Flex部分整理自:Flex 布局教程:语法篇

在这里插入图片描述

furfur-jiang 发布了50 篇原创文章 · 获赞 24 · 访问量 1万+ 私信 关注

原文地址:https://blog.csdn.net/weixin_44523860/article/details/104172025

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


一:display:flex布局display:flex是一种布局方式。它即可以应用于容器中,也可以应用于行内元素。是W3C提出的一种新的方案,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持。Flex是FlexibleBox的缩写,意为"弹性布局",用来为盒状模型提供最大的灵
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何垂直居中对齐,方法有很多,但是在学习了flex布局之后,垂直居中更加容易实现HTML代码:1<divclass="demo">2<divclass="inner">3<p>这是一个测试这是一个测试这是一个测试这是一个测试这是一个测试</p>4</div
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些应用。常见的例子,比如360杀毒,photoShop,VisualStudioCode等等移动端app是什么,有哪些应用。常见的例子,比如手机微信,手机qq,手机浏览器,美颜相机等等PC端与移动端的区别第一:PC考虑的是浏览器的兼容性,移动端考
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周末了,难得学点东西,grid是之前看到的,很好奇,讲的二维的布局,看起来很方便,应该很适合移动端布局,所以今天抽时间学一学,这个当是笔记了。参考的是阮老师的博客。阮一峰:CSSGrid网格布局教程http://www.ruanyifeng.com/blog/2019/03/g
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后,浮动,定位将不会有效果)给父元素设置的属性:(1)display:flex---把容器设置为弹性盒模型。(2)flex-direction---设置弹性盒模型主轴方向默认情况下主
我在网页上运行了一个Flex应用程序,我想使用Command←组合键在应用程序中触发某些操作.这在大多数浏览器上都很好,但在Safari上,浏览器拦截此键盘事件并导致浏览器“返回”事件.有没有办法,通过Flex或通过页面上的其他地方的JavaScript,我可以告诉Safari不要这样做?解决方法:简短的
flex布局,flex-item1<template>2<viewclass="container">3<viewclass="greentxt">4A5</view>6<viewclass="redtxt">7B8<
我应该设计一个大型多点触控屏幕的应用程序.从大到大,我的意思是新闻广播员(大约55英寸及以上).该应用程序是一个交互式地图.我的问题是:开发应用程序的技术.我的第一个想法是在AdobeFlex中制作,但是HTML5也是如此……必须有一些非常棒的Java库用于触摸交互,但是在Windows平台上
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatible&quo
【1】需求:  【2】解决方案:最近遇到布局上要求item两端对齐,且最后一行在列不满的情况下要求左对齐,使用flex的justify-content:space-between;实现时发现最后一行不能左对齐,而是两端对齐方式。 不是项目上想要的效果#网上查了一些资料,有两种方法可以实现效果:**1.
我有一个java套接字服务器,它在连接时将Animal对象发送到Flash客户端.对象发送方式如下:Amf3Outputamf3Output=newAmf3Output(SerializationContext.getSerializationContext());amf3Output.setOutputStream(userSocket.getOutputStream());amf3Output.writeObject(animal)
我正在开发一个Flex3.4应用程序,它通过最新版本的BlazeDS与JBoss-4.2.2服务器上运行的JavaEE后端进行交互.当我在Tomcat上从FlashBuilder4beta2运行Flex应用程序时,一切都很好,Flex应用程序能够进行所需的远程调用.但我的生产环境是在JBoss上,当我将应用程序移动到JBoss时(更
我有一个非常大的问题.我使用Flex3/Tomcat/BlazeDS/Spring编写了一个大型应用程序,在本地开发时运行良好,当我部署到公共开发环境时很好,但是当部署到我们的测试环境时经常失败.当远程处理请求花费大量时间(超过20秒)时,故障似乎最常发生.在我的开发服务器上,错误发生,但仅
弹性和布局display:flex在ie6,ie7不兼容状态,一般在pc用的比较少,在手机端所有的浏览器都是支持的控制子元素在父元素里面的位置关系display:flex是给父元素加的文档流是按照主轴排列,只要父元素加了flex,那么里面的子元素全部可以直接添加宽高主轴的方向
FLEX2.0源码分析(一)https://www.jianshu.com/p/8bc4c5f4b19fFLEX源码分析二(网络监测swizzle)https://www.jianshu.com/p/ffb95f2cbda6FLEX源码分析三(网络监测记录FLEXNetworkRecorder)https://www.jianshu.com/p/66267dc922c5FLEX源码分析四(Systemlog)https://www.jianshu.
1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<title><itle>6<style>7*{8margin:0;9padding:0;10
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-equiv="X-UA-Compatible&qu
flex:将对象作为弹性伸缩盒显示inline-flex:将对象作为内联块级弹性伸缩盒显示两者都是使子元素们弹性布局,但是如果是flex,父元素的尺寸不由子元素尺寸动态调整,不设置时默认是100%,而inline-flex则会使父元素尺寸跟随子元素们的尺寸动态调整。
<html><head><metacharset="utf-8"><metaname="viewport"content="width=device-width"><title>test<itle><stylemedia="screen">.tab-head{list-style-type:no
有没有办法使用邮政编码找到径向距离?我的任务是搜索居住在指定距离内的所有用户.我知道用户的zipcodes.例如,距离当前位置25英里的用户.我有其他搜索类别,我正在使用mysql查询.我无法解决距离问题.我的后端是在PHP中Flex的前端和前端.对我来说最好的选择就是www.zip-codes.com