【15】CSS3(Web字体、多列布局、弹性布局(flex 伸缩盒布局))

1 Web字体

1.1 web 字体基本语法

/*引入web字体*/
@font-face {    
    font-family:"字体的名字";
    src:url(字体地址1) format(字体格式1),
        url(字体地址1) format(字体格式1),
        url(字体地址1) format(字体格式1);
}
/*使用*/
.box {
    font-family:"字体的名字";
}
  • 字体放在服务器上,用户需下载
  • 不同浏览器支持不同格式的字体,为了保证兼容性,一种字体需要设置多种格式,因此web字体基本语法中有多个url。
  • 字体格式转换工具:
  • 优点:图片放大不清晰,字体放大仍然清晰。
  • 缺点:字体文件太大,下载需要时间,因此不用做大篇幅的字体,常用作定制字体。

1.2 定制字体

实际中,一般会针对具体几个文字,单独定制几个字体。

字体定制工具:

1.3 字体图标

字体图标比位图更清晰,易于改变大小、颜色、风格等,兼容性好。

字体图标库:

字体图标制作工具 icoMoon: http://icomoon.io/app/#/select

2 多列布局

2.1 设置给包裹元素的 CSS 属性(共 8 个属性)

CSS 属性名 含义 备注
column-count 指定列数 数字 推荐使用
column-width 指定列宽 长度
columns column-count和column-width的复合属性,同时指定列数和列宽 列数和列宽 若同时指定,则算出来列数少的生效
column-gap 指定列间距 长度
column-rule-style 列边框的风格 同 border-style
column-rule-width 列边框的宽度 长度
column-rule-color 列边框的颜色 颜色
column-rule 列边框的复合属性,同时设置风格、宽度、颜色 风格、宽度、颜色

2.2 设置给子元素的 CSS 属性(共 4 个属性)

CSS 属性名 含义
-webkit-column-break-before 设置元素前面的断列方式 auto:自动,默认值
avoid:总是不断列
always:总是断列
-webkit-column-break-after 设置元素后面的断列方式 auto:自动,默认值
avoid:总是不断列
always:总是断列
-webkit-column-break-inside 设置元素内部的断列方式 auto:自动,默认值
avoid:总是不断列
column-fill 列高统一

3 弹性布局(flex 伸缩盒布局)

3.1 伸缩容器和伸缩项目

① 伸缩容器:

设置了 CSS 属性 display:flex (独占一行)或者 display:inline-flex(不独占一行,可设宽高)的元素。

② 伸缩项目:

伸缩容器的子元素。

特点:

1、伸缩项目会在伸缩容器中默认水平排列。

2、伸缩项目可以设置宽高、内外边距,且不存在外边距塌陷, 不会脱离文档流,具有伸缩性。

3、一个元素可以同时是伸缩项目和伸缩容器。

3.2 设置主轴方向和换行方式

主轴:伸缩项目沿主轴排列,默认方向为水平从左到右。

侧轴: 与主轴垂直的轴叫侧轴,侧轴方向随主轴方向变化。

① 设置主轴方向

伸缩容器设置 CSS 属性 flex-direction ,值:

row             水平从左到右,默认值
row-reverse      水平从右到左
column           垂直从上到下
column-reverse    垂直从下到上

② 设置换行方式

伸缩容器设置 CSS 属性 flex-wrap 可以设置伸缩项目在主轴方向上的换行方式,值:

nowrap          不换行,默认值
wrap            换行
wrap-reverse     自动换行,行翻转

③ 同时设置主轴方向和换行方式

flex-flow:flex-directionflex-wrap的复合属性,设置给伸缩容器即可同时设置主轴方向和换行方式,值无数量和顺序要求。

3.3 设置伸缩项目在主轴上的对齐方式

伸缩容器设置 justify-content 属性,值:

flex-start      靠主轴开始方向对齐
flex-end        靠主轴结束方向对齐
center          居中
space-between    两端对齐,两端没有空隙,中间有空隙
space-around     两端空隙是中间空隙的一半
space-evenly     两端空隙与中间空隙相等

3.4 设置伸缩项目在主轴上的对齐方式

① 一条主轴线(伸缩项目在主轴上不换行)

伸缩容器设置 align-items 属性,值:

stretch         伸缩项目在侧轴方向的长度在侧轴方向拉伸,默认值(不设置伸缩项目在侧轴方向的长度,才会生效)
flex-start      侧轴起点对齐
flex-end        侧轴终点对齐
center          居中对齐
baseline        文本基线对齐

② 多条主轴线(伸缩项目在主轴上发生换行)

伸缩容器设置 align-content 属性,值:

stretch         伸缩项目在侧轴方向的长度在侧轴方向拉伸,默认值(不设置伸缩项目在侧轴方向的长度,才会生效)
flex-start      侧轴起点对齐
flex-end        侧轴终点对齐
center          居中对齐
space-between    两端对齐,两端没有空隙,中间有空隙
space-around     两端空隙是中间空隙的一半
space-evenly     两端空隙与中间空隙相等

注:

  • align-content 实际上设置的是多条主轴之间如何对齐。
  • align-items 属性不论一条主轴线还是多条主轴线都会起作用;align-content 只在多条主轴线的情况下起作用。

3.5 伸缩项目的伸缩性

① 伸缩项目在主轴上的基准长度 flex-basis

伸缩项目设置CSS属性flex-basis,可以设置伸缩项目在主轴上的基准长度,值为长度。如果设置了flex-basis,则伸缩项目在主轴上的长度按照基准长度,不按设置的宽高显示;如果不设置 flex-basis,伸缩项目在主轴上的长度取决于所设置的 width 或者 height

② 扩展比率 flex-grow

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

  • 扩展前提:伸缩容器在主轴方向向上有富余的长度。
  • 扩展时考虑因素:伸缩项目的扩展比率

③ 收缩比率 flex-shrink

伸缩项目设置CSS属性flex-shrink 可定义伸缩项目的收缩比例,默认为1,即按收缩项目在主轴上的长度比例收缩。

  • 收缩前提:伸缩容器在主轴方向上长度不足。
  • 收缩时考虑因素:伸缩项目的收缩比率、收缩项目原来在主轴上的长度。

④ 复合属性 flex

伸缩项目设置CSS属性flex可同时设置扩展比率、收缩比率、主轴基准长度。

flex: grow shrink basis;/*顺序固定:扩展比率 收缩比率 基准长度*/
flex: 0 1 auto;   /* 扩展比率是0,收缩比率是1,基准长度是auto */
flex: 1;      /* flex: 1 1 0; */
/*basis设为0,伸缩项目主轴上的长度为0,伸缩容器整个富余,需均分至各伸缩项目,扩展比率为1,伸缩项目可以扩展,因此该设置可显示伸缩项目沿主轴平均铺满伸缩容器的效果。*/
flex: auto;   /* flex: 1 1 auto; */
flex: none;   /* flex: 0 0 auto;不伸不缩 */
flex: 0 auto; /* flex: 0 1 auto;只缩不伸,默认值 */

3.6 伸缩项目排序

伸缩项目设置CSS属性order可以设置伸缩项目的排序,值为数字,数字越小排序越靠前,可以是负值。默认值是 0。

3.7 单独设置某个伸缩项目在侧轴上的对齐方式

某个伸缩项目设置属性 align-self 可以单独设置该伸缩项目在侧轴上的对齐方式,值与 align-items 一致,但多一个默认值auto,即继承其父元素的align-items属性。

3.8 伸缩盒相关 CSS 属性总结

① 设置给伸缩容器的属性

CSS 属性名 含义
display 设置伸缩容器 flex:块级伸缩容器
inline-flex:行内伸缩容器
flex-direction 设置主轴方向 row:水平从左到右,默认值
row-reverse:水平从右到左
column:垂直从上到下
column-reverse:垂直从下到上
flex-wrap 设置换行方式 nowrap:不换行,默认值
wrap:自动换行
wrap-reverse:自动换行且行翻转
flex-flow 同时设置主轴方向和换行方式 flex-dierection 和 flex-wrap 的值
justify-content 设置伸缩项目在主轴上的对齐方式 flex-start:主轴起点对齐
flex-end:主轴结束对齐
center:居中对齐
space-between:两端无空隙,中间有空隙
space-around:两端空隙是中间空隙的一半
space-evenly:两端空隙与中间空隙一致
align-items 设置伸缩项目在侧轴上的对齐方式(适用于一条主轴线) stretch:在侧轴上拉伸,默认值。
flex-start:侧轴起点对齐
flex-end:侧轴结束对齐
center:居中对齐
baseline:基线对齐
align-content 设置伸缩项目在侧轴上的对齐方式(适用于多条主轴线) stretch:在侧轴上拉伸,默认值。
flex-start:侧轴起点对齐
flex-end:侧轴结束对齐
center:居中对齐
space-between:两端无空隙,中间有空隙
space-around:两端空隙是中间空隙的一半
space-evenly:两端空隙与中间空隙一致

② 设置给伸缩项目的属性

CSS 属性名 含义
flex-basis 在主轴上的基准长度 指定长度,默认值是 auto
flex-grow 扩展比率 数字,默认值是0
flex-shrink 收缩比率 数字,默认值是1
flex 复合属性,同时设置 grow shrink basis grow shrink basis的值
order 伸缩项目的排序 数字,默认值是 0
align-self 单独设置某个伸缩项目在侧轴上的对齐方式 auto:按伸缩容器的对齐方式设置,默认值
stretch:在侧轴上拉伸
flex-start:侧轴起点对齐
flex-end:侧轴结束对齐
center:居中对齐
baseline:基线对齐
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容