CSS总结

CSS总结

  • CSS引入方式
  • CSS选择器
  • CSS常用属性总结
  • CSS优先级
  • CSS页面布局
  • Flex布局
  • Grid布局
  • Table布局
  • 布局垂直居中
  • 响应式布局
  • box-sizing属性

CSS引入方式

行内引入:

我是一个块级的标签

嵌入式:将CSS样式表放到head中用


    ...
    

导入式: 将一个独立的.css文件引入HTML文件中,导入式使用@import 引入外部CSS文件,


    ...
    

链接式引入:将一个独立的.css文件引入到HTML文件中,使用标记写在标记中。 链接式会以网页文件主体装载前装载CSS文件。


   ...
   

样式的应用顺序:

  • 行内样式优先级最高
  • 针对相同的样式属性,不同的样式属性将以合并的方式呈现
  • 相同样式并且相同属性,呈现方式在中的顺序决定,后面会覆盖前面属性
  • !important 指定样式规则应用最优先

CSS选择器

基本选择器:

1、通用元素选择器:

表示应用到所有的标签 。*{margin:0;padding:0;}

2、标签选择器

匹配所有使用 div 标签的元素(可以匹配所有标签)div {color: yellow}

3、类选择器

匹配所有class属性中包含info的元素。

语法:.类名{样式}(类名不能以数字开头,类名要区分大小写。)

.yanse{color:yellow}

我的div

4、id选择器

使用id属性来调用样式,在一个网页中id的值都是唯一的(是W3C规范而不是规则,所以不会报错)。

语法:#ID名{样式}(ID名不能以数字开头

#Mycolor {color: yellow}

H3

组合选择器:

1、多元素组合选择器

同时匹配两个或多个标签,用逗号隔开

p,a,div{color: yellow;}

段落

link
kuai

2、后代元素选择器

匹配所有div标签里嵌套的P标签,之间用空格分隔。

div p {color: yellow;}

pppppp

pppppp

3、子代元素选择器

匹配所有div标签里嵌套的子P标签,之间用 >分隔。

div > p {color: yellow;}
  

div

div

4、兄弟元素选择器

匹配所有紧随div标签之后的同级标签P,之间用+分隔(只能匹配一个)。

div + p {color: yellow;}
  
div

ppp

伪类选择器:

  1. link、hover、active、visited

     a:link(未访问的链接状态),用于定义了常规的链接状态。
     a:hover(鼠标放在链接上的状态),用于产生视觉效果。
     a:active(在链接上按下鼠标时的状态)。
     a:visited(已访问过的链接状态),可以看出已经访问过的链接。
    
  2. before、after

     P:before 在每个

    元素的内容之前插入内容; P:after 在每个

    元素的内容之后插入内容。

CSS常用属性总结

1.颜色属性:

transparent

  • 全透明,使用方式:color: transparent

opacity

  • 元素的透明度,语法:opacity: 0.5
  • 属性值在0.0到1.0范围内,0表示透明,1表示不透明。
  • filter滤镜属性(只适用于早期的IE浏览器,语法:filter:alpha(opacity:20);)。

2.字体属性:

font-style: 用于规定斜体文本

  • normal 文本正常显示
  • italic 文本斜体显示
  • oblique 文本倾斜显示

font-weight: 设置文本的粗细

  • normal(默认)
  • bold(加粗)
  • bolder(相当于标签)
  • lighter (常规)
  • 100 ~ 900 整百(400=normal,700=bold)

font-size: 设置字体的大小

  • 默认值:medium
  • 可选参数值:xx-small、 x-small、 small、 medium、 large、 x-large、 xx-large
  • 相对于父标签中字体的尺寸进行调节。可选参数值:smaller、 larger
  • 百分比指定文字大小。
  • 用长度值指定文字大小,不允许负值。

font-family:字体名称

  • 使用逗号隔开多种字体(优先级从前向后,如果系统中没有找到当前字体,则往后面寻找)

font:简写属性

  • 语法:font:字体大小/行高 字体;(字体要在最后)

3.文本属性:

text-align: 文本的水平对齐方式

  • left
  • center
  • right

line-height: 文本行高

  • normal 默认

vertical-align: 文本所在行高的垂直对齐方式

  • baseline 默认
  • sub 垂直对齐文本的下标,和标签一样的效果
  • super 垂直对齐文本的上标,和标签一样的效果
  • top 对象的顶端与所在容器的顶端对齐
  • text-top 对象的顶端与所在行文字顶端对齐
  • middle 元素对象基于基线垂直对齐
  • bottom 对象的底端与所在行的文字底部对齐
  • text-bottom 对象的底端与所在行文字的底端对齐

text-transform: 属性控制文本的大小写

  • capitalize 文本中的每个单词以大写字母开头。
  • uppercase 定义仅有大写字母。
  • lowercase 定义仅有小写字母。
  • text-overflow: 文本溢出样式

text-decoration: 文本的装饰

  • none 默认。
  • underline 下划线。
  • overline 上划线。
  • line-through 中线。

text-shadow:文本阴影

text-shadow: 5px 5px 5px #888;
  • 第一个参数是左右位置
  • 第二个参数是上下位置
  • 第三个参数是虚化效果
  • 第四个参数是颜色

word-wrap:自动换行

  • word-wrap: break-word;

4.背景属性

背景颜色

background-image 设置图像为背景

  • url(“1.png”); 图片地址
  • background-image:linear-gradient(green,blue,yellow,red,black); 颜色渐变效果

background-position 设置背景图像的位置坐标

  • background-position: center center; 图片置中,x轴center,y轴center
  • 1px -195px 截取图片某部分,分别代表坐标x,y轴

background-repeat 设置背景图像不重复平铺

  • no-repeat 设置图像不重复,常用
  • round 自动缩放直到适应并填充满整个容器
  • space 以相同的间距平铺且填充满整个容器

background-attachment 背景图像是否固定或者随着页面的其余部分滚动

background 简写

  • background: url(“1.png”) no-repeat 0 -196px;
  • background: url(“1.png”) no-repeat center bottom 15px;
  • background: url(“1.png”) no-repeat left 30px bottom 15px;

5.列表属性

list-style-type: 列表项标志的类型

  • none 去除标志
  • square; 方框
  • circle; 空心圆
  • upper-alph; & disc; 实心圆

list-style-image:将图象设置为列表项标志

list-style-position:列表项标志的位置

  • inside
  • outside

list-style:(缩写,3个参数为以上属性)

CSS优先级

当有多个样式对作用于一个标签时便使用到CSS优先级,它来决定哪些样式会被作用于该标签,哪些会被覆盖。

1.选择器的优先级

CSS 7 种基础的选择器:

  • ID 选择器, 如 #id{}
  • 类选择器, 如 .class{}
  • 属性选择器, 如 a[href=“segmentfault.com”]{}
  • 伪类选择器, 如 :hover{}
  • 伪元素选择器, 如 ::before{}
  • 标签选择器, 如 span{}
  • 通配选择器, 如 *{}

对于标签自有的属性,选择器的优先级规则为

内联样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器

2.选择符的优先级

所有 CSS 的选择符由上述 7 种基础的选择器或者组合而成,组合的方式有 3 种:

  • 后代选择符: .father .child{}
  • 子选择符: .father > .child{}
  • 相邻选择符: .bro1 + .bro2{}

当一个标签同时被多个选择符选中,我们便需要确定这些选择符的优先级。我们有如下规则:

计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依次比较大小,大的则优先级高,相等则比较下一个。若最后两个的选择符中 a、b、c 都相等,则按照"就近原则"来判断。

3.多重样式优先级

外部样式表和内部样式表的优先级由其引入顺序有关,一般认为内部样式优先级大于外部样式,也可以认为其相等,因为如果外部样式放在内部样式的后面引入,则外部样式将覆盖内部样式。

内联样式 > 内部样式 > 外部样式 > 浏览器默认样式

如果外部样式表和内部样式表中的样式发生冲突会出现什么情况呢?

这与样式表在 HTML 文件中所处的位置有关。样式被应用的位置越在下面则优先级越高

4.继承样式

一般来说对于文字样式的设置都会具有继承性,例如font-family、font-size、font-weight、color等等,当需要继承样式时,最近的祖先样式比其他祖先样式优先级高

T3

规则总结:

CSS 优先规则1: 最近的祖先样式比其他祖先样式优先级高。

CSS 优先规则2:"直接样式"比"祖先样式"优先级高。

CSS 优先规则3:优先级关系:内联样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器

CSS 优先规则4:计算选择符中 ID 选择器的个数(a),计算选择符中类选择器、属性选择器以及伪类选择器的个数之和(b),计算选择符中标签选择器和伪元素选择器的个数之和(c)。按 a、b、c 的顺序依次比较大小,大的则优先级高,相等则比较下一个。若最后两个的选择符中 a、b、c 都相等,则按照"就近原则"来判断

CSS 优先规则5:属性后插有 !important 的属性拥有最高优先级。若同时插有 !important,则再利用规则 3、4 判断优先级。

错误的说法:

在学习过程中,你可能发现给选择器加权值的说法,即 ID 选择器权值为 100,类选择器权值为 10,标签选择器权值为 1,当一个选择器由多个 ID 选择器、类选择器或标签选择器组成时,则将所有权值相加,然后再比较权值。这种说法其实是有问题的。比如一个由 11 个类选择器组成的选择器和一个由 1 个 ID 选择器组成的选择器指向同一个标签,按理说 110 > 100,应该应用前者的样式,然而事实是应用后者的样式。错误的原因是:权重的进制是并不是十进制,CSS 权重进制在 IE6 为 256,后来扩大到了 65536,现代浏览器则采用更大的数量。。还是拿刚刚的例子说明。11 个类选择器组成的选择器的总权值为 110,但因为 11 个均为类选择器,所以其实总权值最多不能超过 100, 你可以理解为 99.99,所以最终应用后者样式。

CSS页面布局

1. 边框

border-style:边框样式

  • solid 默认,实线
  • double 双线
  • dotted 点状线条
  • dashed 虚线

border-color:边框颜色

border-width:边框宽度

border-radius:圆角

  • 1个参数:四个角都应用
  • 2个参数:第一个参数应用于 左上、右下;第二个参数应用于 左下、右上
  • 3个参数:第一个参数应用于 左上;第二个参数应用于 左下、右上;第三个参数应用于右下
  • 4个参数:左上、右上、右下、左下(顺时针

border: 简写

  • border: 2px yellow solid;

box-shadow:边框阴影

box-shadow: 10px 10px 5px #888;
  • 第一个参数是左右位置
  • 第二个参数是上下位置
  • 第三个参数是虚化效果
  • 第四个参数是颜色

2.盒子模型
CSS总结_第1张图片

padding:用于控制内容与边框之间的距离;

margin: 用于控制元素与元素之间的距离; 
padding、margin 表示上右下左都应用
padding-top、margin-top
padding-right、margin-right
padding-bottom、margin-bottom
padding-left、margin-left
有一个参数,应用于四边。
两个参数,第一个用于上、下,第二个用于左、右。
三个参数,第一个用于上,第二个用于左、右,第三个用于下。

当我们写html的时候;在我们写body与浏览器之间还存在一块的空白区域

body{

margin:0;
}

3.display

  • none 不显示。
  • block 显示为块级元素。
  • inline 显示为内联元素。
  • inline-block 行内块元素(会保持块元素的高宽)。
  • list-item 显示为列表元素。

4.visibility

  • visible 元素可见
  • hidden 元素不可见
  • collapse 当在表格元素中使用时,此值可删除一行或一列,不会影响表格的布局。

5. float 浮动

让一行显示两个或多个块级标签,会脱离文档流;如果浮动起来的标签的父级标签没有内容;那么父标签将消失;

  • none
  • left 左浮动
  • right 右浮动

clear 清除浮动:

  • none : 默认值。允许两边都可以有浮动对象
  • left : 不允许左边有浮动对象
  • right : 不允许右边有浮动对象
  • both : 不允许两边有浮动对象

6. clip 剪裁图像

rect 剪裁定位元素:

例:clip:rect(0px,60px,200px,0px);
  • auto 默认值,无剪切
  • 上-右-下-左(顺时针)的顺序提供四个偏移值
  • 区域外的部分是透明的
  • 必须指定 position:absolute;

7.overflow 设置当对象的内容超过其指定高度及宽度时如何显示内容

  • visible 默认值,内容不会被修剪,会呈现在元素框之外。
  • hidden 内容会被修剪,并且其余内容是不可见的。
  • scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
  • auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。

8. position 规定元素的定位类型

  • static: 默认值,没有定位,遵从正常的文档流
  • relative: 相对定位元素,相对于其正常位置进行定位,遵从正常的文档流
  • absolute: 绝对定位元素,脱离正常文档流
  • fixed: 绝对定位元素,固定在浏览器某处

通过以下四种属性进行定位:

left、top、right、bottom、z-index

9.z-index 元素层叠顺序

  • z-index 仅在定位元素上有效(例:position:absolute;)
  • 可以指定负数属性值(例:-1;)

10. outline 边框轮廓

  • outline-width 轮廓宽度
  • outline-color 轮廓颜色
  • outline-style 轮廓样式

11.zoom 缩放比例 :

 .zoom1 {
            zoom: 100%;
        }
        .zoom2 {
            zoom: 150%;
        }
        .zoom3 {
            zoom: 200%;
        }

在这里插入图片描述
12.cursor 鼠标的类型形状

cursor 属性规定要显示的光标的类型(形状)。
该属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状

13.transform、transition 动画效果

transform 转换,变形

  • origin 定义旋转基点(left top center right bottom 坐标值) transform-origin: 50px 50px; transform-origin: left;。
  • rotate 旋转 transform:rotate(50deg) 旋转角度可以为负数,需要先定义origin。
  • skew 扭曲 transform:skew(50deg,50deg) 分别为相对x轴倾斜,相对y轴倾斜。
  • scale 缩放 transform:scale(2,3) 横向放大2倍,纵向放大3倍;transform:scale(2) 横竖都放大2倍。
  • translate 移动 transform:translate(50px, 50px) 分别为相对x轴移动,相对y轴移动

transition 过渡属性是一个简写属性,用于设置四个过渡属性:

  • transition-property: 变换的属性(none(没有属性改变)、all(所有属性改变)、具体属性)
  • transition-duration: 变换持续时间
  • transition-timing-function: 变换的速率(ease:(逐渐变慢)、linear:(匀速)、ease-in:(加速)、ease-out:(减速)、ease-in-out:(加速然后减速)、cubic-bezier:(自定义时间曲线))
  • transition-delay: 变换延迟时间

Flex布局

Flex布局也称弹性布局,可以为盒状模型提供最大的灵活性,是布局的首选方案,现已得到所有现代浏览器的支持。

1.基础

通过指定display: flex来标识一个弹性布局盒子,称为FLEX容器,容器内部的盒子就成为FLEX容器的成员,容器默认两根轴线,水平的主轴与垂直的交叉轴,主轴的开始位置叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end,容器成员默认按照主轴排列。

2.容器属性

flex-direction

flex-direction属性决定主轴的方向,取值为row | row-reverse | column | column-reverse

  • row默认值:主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端,容器成员顺序与row顺序相反。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿,容器成员顺序与column顺序相反。
1
2
3

flex-wrap

flex-wrap属性决定当轴线方向放不下成员时,是否换行,取值为nowrap | wrap | wrap-reverse

  • nowrap默认:不换行,当空间不足时,会按轴线方向成员大小比例缩小的成员
  • wrap:距离不够时换行,新起一行排列
    -wrap-reverse:距离不够时换行,新起的一行在上方
4
5
6

flex-flow

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

7
8
9

justify-content

justify-content属性定义了成员在主轴上的对齐方式,可以很容易地实现多种布局,取值为flex-start | flex-end | center | space-between | space-around

  • flex-start默认值:左对齐
    -flex-end:右对齐
  • center: 居中对齐
    -space-between:两端对齐,成员之间的间隔都相等。
  • space-around:每个成员两侧的间隔相等,成员之间的间隔比成员与边框的间隔大一倍。
a
b
c

align-items

align-items属性定义成员在交叉轴上如何对齐,取值为flex-start | flex-end | center | baseline | stretch

  • stretch默认值:如果成员未设置高度或设为auto,将占满整个容器的高度。
  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 成员的第一行文字的基线对齐。
d
e
f

align-content

align-content属性定义了多根轴线的对齐方式。如果成员只有一根轴线,该属性不起作用,取值为flex-start | flex-end | center | space-between | space-around | stretch

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

3.成员属性

order

order属性定义成员的排列顺序,数值越小,排列越靠前,默认为0

j
k
l

flex-grow

flex-grow属性定义成员的放大比例,默认为0

m
n
o

flex-shrink

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

p
q
r

flex-basis

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

s
t
u

flex

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

v
w
x

align-self

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

y
z
0

Grid布局

目前CSS布局方案中,网格布局可以算得上是最强大的布局方案了。它可以将网页分为一个个网格,然后利用这些网格组合做出各种各样的布局。Grid布局与Flex布局有一定的相似性,都可以指定容器内部多个成员的位置。不同之处在于,Flex布局是轴线布局,只能指定成员针对轴线的位置,可以看作是一维布局。Grid布局则是将容器划分成行和列,产生单元格,然后指定成员所在的单元格,可以看作是二维布局。

1.基础

通过指定display: grid;指定容器使用Grid布局,Grid布局中采用网格布局的区域,称为容器,容器内部采用网格定位的子元素,称为成员。容器中水平区域称为,垂直区域称为,可以将其看作二位数组。划分网格的线就称为网格线,正常情况下n行有n + 1根水平网格线,m列有m + 1根垂直网格线。注意当容器设置为Grid布局以后,容器子元素的float、display: inline-block、display: table-cell、vertical-align和column-*等设置都将失效。

2.容器属性

grid-template-rows grid-template-columns

grid-template-rows属性定义每一行的行高,设定为多少行就设置多少个值,取值可以为固定像素,也可以为百分比,grid-template-columns属性定义每一列的列宽,设定为多少列就设置多少个值,取值可以为固定像素,也可以为百分比

0
1
2
3
4
5
6
7
8

repeat

repeat()函数可以简化重复的值,其可以自动重复设定的规则

.container {
  display: grid;
  grid-template-columns: 33.33% 33.33% 33.33%;
  grid-template-rows: 33.33% 33.33% 33.33%;
}

有时候,重复写同样的值非常麻烦,尤其网格很多时。这时,可以使用repeat()函数,简化重复的值。上面的代码用repeat()改写如下。

.container {
  display: grid;
  grid-template-columns: repeat(3, 33.33%);
  grid-template-rows: repeat(3, 33.33%);
}

auto-fill

有时,单元格的大小是固定的,但是容器的大小不确定。如果希望每一行或每一列容纳尽可能多的单元格,这时可以使用auto-fill关键字表示自动填充,当容器不足容纳成员时会自适应换行。

f
g
h

fr关键字

为表示比例关系,网格布局提供了fr关键字。如果两列的宽度分别为1fr2fr,就表示后者是前者的两倍。

i
j
k

minmax函数

minmax()函数产生一个长度范围,表示长度就在这个范围之中。它接受两个参数,分别为最小值和最大值,当距离不够时会从最大值自动减少长度或宽度到设定最小值为止。
minmax( [ | | min-content | max-content | auto ] , [ | | | min-content | max-content | auto ] )

l
m
n

auto关键字

auto关键字表示由浏览器自己决定长度,基本上等于该列单元格的最大宽度,除非单元格内容设置了min-width,且这个值大于最大宽度。

o
p
q

grid-row-gap / grid-column-gap/ grid-gap

grid-row-gap属性设置行与行的间隔,即行间距

grid-column-gap属性设置列与列的间隔,即列间距

grid-gap属性是grid-column-gapgrid-row-gap的合并简写形式,如果grid-gap省略了第二个值,浏览器认为第二个值等于第一个值

r
s
t

grid-template-areas

网格布局允许指定区域area,一个区域由单个或多个单元格组成,grid-template-areas属性用于定义区域。区域的命名会影响到网格线。每个区域的起始网格线,会自动命名为{areaName}-start,终止网格线自动命名为{areaName}-end

B
C
D
E

grid-auto-flow

划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是先行后列,通过设置grid-auto-flow可以更改为先列后行,grid-auto-flow属性除了设置成rowcolumn,还可以设成row densecolumn dense,这两个值主要用于某些项目指定位置以后,剩下的项目怎么自动放置。

F
G
H
I

justify-items / align-items / place-items

justify-items属性设置成员中内容的水平位置,取值为start | end | center | stretch

align-items属性设置成员中内容的垂直位置,取值为start | end | center | stretch

place-items属性是align-items属性和justify-items属性的合并简写形式,如果省略第二个值,则浏览器认为与第一个值相等。

  • stretch默认值:拉伸,占满单元格的整个宽度。
  • start:对齐单元格的起始边缘。
  • end:对齐单元格的结束边缘。
  • center:单元格内部居中。
J

justify-content / align-content / place-content

justify-content属性是整个内容区域在容器里面的水平位置,也就是成员的水平分布,取值为start | end | center | stretch | space-around | space-between | space-evenly

align-content属性是整个内容区域在容器里面的垂直位置,也就是成员的垂直分布,取值为start | end | center | stretch | space-around | space-between | space-evenly

place-content属性是align-content属性和justify-content属性的合并简写形式,如果省略第二个值,则浏览器认为与第一个值相等。

M
N
  • space-around- 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍。
  • space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔。
  • space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔。

grid-auto-columns grid-auto-rows

有时候,一些项目的指定位置,在现有网格的外部。比如网格只有3行,但是某一个项目指定在第5行。这时,浏览器会自动生成多余的网格,以便放置项目。grid-auto-columns属性和grid-auto-rows属性用来设置,浏览器自动创建的多余网格的列宽和行高。它们的写法与grid-template-columnsgrid-template-rows完全相同。如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高。

S

3.项目属性

grid-column-start / grid-column-end

·grid-column-start·属性指定左边框所在的垂直网格线,·grid-column-end·属性指定右边框所在的垂直网格线

T

grid-row-start / grid-row-end

grid-row-start属性指定上边框所在的水平网格线,grid-row-end属性指定下边框所在的水平网格线

U

还可以给轴线命名来指定位置

V

grid-column / grid-row

grid-column属性是grid-column-startgrid-column-end的合并简写形式,grid-row属性是grid-row-start属性和grid-row-end的合并简写形式。

W

grid-area

grid-area属性指定项目放在grid-template-areas指定的区域,还可用作grid-row-start、grid-column-start、grid-row-end、grid-column-end的合并简写形式,直接指定项目的位置。

X
Y

justify-self / align-self / place-self

justify-self属性设置单元格内容的水平位置,跟justify-items属性的用法完全一致,但只作用于单个项目,取值为start | end | center | stretch;
align-self属性设置单元格内容的垂直位置,跟align-items属性的用法完全一致,也是只作用于单个项目,取值为start | end | center | stretch;

  • stretch默认值:拉伸,占满单元格的整个宽度。
  • start:对齐单元格的起始边缘。
  • end:对齐单元格的结束边缘。
  • center:单元格内部居中。
  • place-self属性是align-self属性和justify-self属性的合并简写形式。
Z

Table布局

最常用的使用方法是制作表格,由于其对占据的空间有着划分的作用,便可以使用
来布局。

实例

实现一个简单的布局,将表格的bordercellpaddingcellspacing全部设置为0,表格的边框和间距就不占有页面空间,它只起到划分空间的作用,如果布局复杂,可以在单元格中再嵌套表格,单元格中的元素或者嵌套的表格用alignvalign设置对齐方式。要注意的是,在HTML5标准中,

alignbgcolorcellpaddingcellspacingframerulessummarywidth属性皆已不再支持,由CSS设置相关属性来呈现效果。



 
 
TABLE布局 



导航栏 内容

问题

使用

来布局绝对不是一个好的解决方案,对于布局方案首选Flex布局,稍微复杂的布局可以选择Grid布局方案,
本身是为呈现表格化的数据而设计的,如果使用
来呈现数据表格是完全没有问题的。

要比其它html标记占更多的字节,代码的复杂度会大大提升。
  • 会阻塞浏览器渲染引擎的渲染顺序,
    是整体载入后才开始显示的,没有加载完毕前,
    为一片空白,而
    等标签可以逐行渲染,一边加载一边显示。
  • >经常需要多个关口,因为
  • 可以影响在它们之前已经进入的DOM元素的显示的元素。假设因为表格最后一个单元格的内容过宽而导致纵列大小完全改变,这会造成浏览器的回流从而引发渲染性能问题。
  • 里显示图片时有可能需要你把单个、有逻辑性的图片切成多个图,这个主要看需求,
    中进行单元格合并操作也是可行的方案。
  • 会影响其单元格内部的某些布局属性的生效。
  • 的各种属性逐渐不受支持,需要使用CSS控制显示相应效果。
  • 的语义是数据表格,使用
    来布局不利于SEO
  • 若布局较为复杂,则可能造成多层
  • 嵌套,代码嵌套过多表现的过于复杂。

    display

    倘若需要类似于表格的布局,可以使用display: table;来呈现,displaytable属性值只是声明了某些元素在浏览器中的样式,其并不包含语义,他的属性基本能够对应

    系列标签,并且还能将缺少的表格元素会被浏览器以匿名方式创建,CSS2.1规范中写道:CSS2.1表格模型中的元素,可能不会全部包含在除HTML之外的文档语言中。这时,那些“丢失”的元素会被模拟出来,从而使得表格模型能够正常工作。所有的表格元素将会自动在自身周围生成所需的匿名table对象,使其符合table/inline-table、table-row、table-cell的三层嵌套关系。

    • table类似
    :此元素会作为块级表格来显示,表格前后带有换行符。
  • inline-table类似
  • :此元素会作为内联表格来显示,表格前后没有换行符。
  • table-header-group类似
  • :此元素会作为一个或多个行的分组来显示。
  • table-footer-group类似
  • :此元素会作为一个或多个行的分组来显示。
  • table-row类似
  • :此元素会作为一个表格行显示。
  • table-row-group类似
  • :此元素会作为一个或多个行的分组来显示。
  • table-column类似
  • :此元素会作为一个单元格列显示。
  • table-column-group类似
  • :此元素会作为一个或多个列的分组来显示。
  • table-cell类似
  • :此元素会作为一个表格单元格显示。
  • table-caption类似
  • :此元素会作为一个表格标题显示。

    布局垂直居中

    首先将的高度设置为100%(为演示父元素不定宽高的效果),并清除的默认样式

    html,body{
         margin: 0;
         height: 100%;
     }
    

    垂直居中大致分为两类,父元素定宽高与父元素不定宽高,将两类样式以及子容器设定好

        .set-parent,.dy-parent{
            width: 300px;
            height: 200px;
            background: #eee;
            margin: 10px 0;
        }
        .child{
            width: 20px;
            height: 10px;
            background: #fff;
        }
        .dy-parent{ 
            width: 30%;
            height: 20%;
        }
    

    1. 父元素定宽高 position + margin

    使用margin: auto使水平居中,将子容器设定为relative以在不脱离文档流的情况下偏移50%,由于本身子容器占用一定宽高,会将其撑下,使用margin使其向上偏移。
    若是子容器使用absolute定位,则父容器应设置为relative,否则会其相对于static定位以外的第一个父元素进行定位,在本Demo中会以浏览器为基准定位;此外absolute无法使用margin: auto水平居中。

    
    

    2. 父元素定宽高 position + transform

    原理与position+margin相同,CSS3的transform使得div向上平移自身高度的50%

    3. 父元素定宽高 position + calc

    css3提供calc函数,能够进行动态计算

    4. 父元素不定宽高 flex

    flex布局可以说是布局神器,极其强大,现在大部分浏览器都兼容性flex布局

    5. 父元素不定宽高 grid

    Grid布局将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局
    Grid布局与Flex布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别。
    Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局。Grid 布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以看作是二维布局。Grid布局远比Flex 布局强大。

    6. 父元素不定宽高 table

    table中有vertical-align属性设置垂直对齐方式

    响应式布局

    响应式布局指的是同一页面在不同屏幕尺寸或者在不同的设备下有不同的布局,能够在大屏设备以及小屏设备获得更好的浏览体验,简单来说就是页面适应终端而无需为每个终端制作单独的页面。

    1.媒体查询

    通过使用CSS媒体查询来实现响应式布局,针对不同的媒体类型设置不同的样式规则,可以根据视窗、设备高度与宽度、设备方向、分辨率等进行不同CSS适配。

    使用link链接

    
    
    

    直接在CSS中使用

    
    

    使用@import导入

    /* @import url("example.css") mediatype and|not|only (media feature); */
    @import url("example.css") all and (max-width:600px);
    

    媒体类型

    • all: 用于所有设备。
    • print: 用于打印机和打印预览。
    • screen: 用于电脑屏幕,平板电脑,智能手机等。
    • speech: 应用于屏幕阅读器等发声设备。

    逻辑操作符

    • and: 表示且,当所有的条件满足的时候返回true。
    • not: 是用来排除某种制定的媒体类型。
    • only: 用来指定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。
    • ,: 逗号用于将多个媒体查询合并为一个规则,逗号分隔效果等同于or逻辑操作符。

    媒体功能

    • aspect-ratio: 定义输出设备中的页面可见区域宽度与高度的比率。
    • color: 定义输出设备每一组彩色原件的个数。如果不是彩色设备,则值等于0。
    • color-index: 定义在输出设备的彩色查询表中的条目数,如果没有使用彩色查询表,则值等于0。
    • device-aspect-ratio: 定义输出设备的屏幕可见宽度与高度的比率。
    • device-height: 定义输出设备的屏幕可见高度。
    • device-width: 定义输出设备的屏幕可见宽度。
    • grid: 用来查询输出设备是否使用栅格或点阵。
    • height: 定义输出设备中的页面可见区域高度。
    • max-aspect-ratio: 定义输出设备的屏幕可见宽度与高度的最大比率。
    • max-color: 定义输出设备每一组彩色原件的最大个数。
    • max-color-index: 定义在输出设备的彩色查询表中的最大条目数。
    • max-device-aspect-ratio: 定义输出设备的屏幕可见宽度与高度的最大比率。
    • max-device-height: 定义输出设备的屏幕可见的最大高度。
    • max-device-width: 定义输出设备的屏幕最大可见宽度。
    • max-height: 定义输出设备中的页面最大可见区域高度。
    • max-monochrome: 定义在一个单色框架缓冲区中每像素包含的最大单色原件个数。
    • max-resolution: 定义设备的最大分辨率。
    • max-width: 定义输出设备中的页面最大可见区域宽度。
    • min-aspect-ratio: 定义输出设备中的页面可见区域宽度与高度的最小比率。
    • min-color: 定义输出设备每一组彩色原件的最小个数。
    • min-color-index: 定义在输出设备的彩色查询表中的最小条目数。
    • min-device-aspect-ratio: 定义输出设备的屏幕可见宽度与高度的最小比率。
    • min-device-width: 定义输出设备的屏幕最小可见宽度。
    • min-device-height: 定义输出设备的屏幕的最小可见高度。
    • min-height: 定义输出设备中的页面最小可见区域高度。
    • min-monochrome: 定义在一个单色框架缓冲区中每像素包含的最小单色原件个数
    • min-resolution: 定义设备的最小分辨率。
    • min-width: 定义输出设备中的页面最小可见区域宽度。
    • monochrome: 定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0。
    • orientation: 定义输出设备中的页面可见区域高度是否大于或等于宽度。
    • resolution: 定义设备的分辨率。
    • scan: 定义电视类设备的扫描工序。
    • width: 定义输出设备中的页面可见区域宽度。

    2.单位

    百分比单位

    当度量单位设置为百分比时,即可使浏览器组件宽高随着浏览器的大小相应变化。

    • 子元素的height或width中使用百分比,是相对于子元素的直接父元素,width相对于父元素的width,height相对于父元素的height。
    • 子元素的top和bottom如果设置百分比,则相对于直接非static定位的父元素的高度,同样子元素的left和right如果设置百分比,则相对于直接非static定位父元素的宽度。
    • 子元素的padding如果设置百分比,不论是垂直方向或者是水平方向,都相对于直接父亲元素的width,而与父元素的height无关。
    • 子元素的margin如果设置成百分比,不论是垂直方向还是水平方向,都相对于直接父元素的width。
    • 设置border-radius为百分比,则是相对于自身的宽度,还有translate、background-size等都是相对于自身的。

    em单位

    em是相对长度单位,相对于当前对象内文本的字体尺寸,若未设置则相对于浏览器默认字体尺寸16px,em是会继承父元素的字体的尺寸,使用时需要重新计算子元素的em值避免1.2*1.2=1.44的现象,使用em可以使元素根据字体大小的动态调整来制作响应式布局。

    rem单位

    rem单位都是相对于根元素html的font-size来决定大小的,根元素的font-size相当于提供了一个基准,当页面的size发生变化时,只需要改变font-size的值,那么以rem为固定单位的元素的大小也会发生相应的变化。因此,如果通过rem来实现响应式的布局,只需要根据视图容器的大小,动态的改变根元素的font-size即可。

    vh vw vmin vmax

    • vh: 相对于视窗的高度,1vh等于视窗高度的1%。
    • vw: 相对于视窗的宽度,1vw等于视窗宽度的1%。
    • vmin: vw和vh中的较小值。
    • vmax: vw和vh中的较大值。

    缩放比例

    通过动态地控制网页视图的缩放比例来制作响应式布局。

    
    

    自适应布局

    自适应布局一般是通过检测User-Agent来判断当前访问的设备是PC端还是平板或者是手机,或者是通过检测窗口分辨率而请求服务器,从而服务端重定向或者返回不同的页面,需要开发多个页面来适应不同的设备,通常自适应布局与响应式布局并不是单独使用的,可以通过开发一套PC端页面与一套移动端页面来实现自适应布局,而两套页面都实现对于不同范围分辨率的响应式布局,可以避免过大的CSS样式表又可以获得较好的浏览体验,

    box-sizing属性

    box-sizing是用于告诉浏览器如何计算一个元素是总宽度和总高度

    1. 对于给定widthheight的元素,设置box-sizing属性会影响盒子content widthcontent height
    2. 浏览器默认使用标准盒子模型,即box-sizing: content-box, 就是我们所写的宽度和高度就是对content进行设置的。
    3. 在一些响应式布局中,我们修改了浏览器计算元素宽度、高度的方式,认为元素的宽度和高度是包括内边距padding和边框border

    你可能感兴趣的:(前端学习)