htmal & css 学习第三周总结(中)

好家伙,看完了新版教学视频,发现css3中有很重要的新增内容,所以写一篇文章应该会比较长,还是再分成两篇。这是倒数第二篇html&css的整理笔记了,css3的一些关于动效动画的内容等学完了JavaScript会再补充整理~

开学可以进入新的学习了,到时要实习尽量保证每天看几集教程吧,仍定期总结,不过应该不会使用简书平台了,可能会总结在GitHub上,hhh~

本文整理的内容及新增的学习内容flex(重要)和less预处理语言。


1.弹性盒(flex)

在学习float时就感概网页布局好复杂,不够灵活不说还会出现各种问题,float引起的高度塌陷问题我听了两三遍才厘清,然后就发现弹性盒这个知识点,新版本浏览器基本能兼容,移动端更是不用多想直接用就是~不仅又感慨前端知识更新好快,不进则退则淘汰(颤抖==)

言归正传,flex就是一个新的布局工具,十分灵活且不会出现float那样麻烦的问题,也提供了一个更为方便的写代码方式。

弹性盒涉及两个基本内容,弹性容器和弹性元素,以及两个重要概念,主轴和辅轴。


(1)基本概念

1)弹性容器

要使用弹性盒进行布局首先要将元素设置为弹性容器,使用display属性,选择flex或inline-flex,将元素变为弹性容器:

display:flex     (设置为块级弹性容器)

display:inline-flex(设置为行内弹性容器)

设置后,这个元素中的子元素横向排列,且不会脱离文档流使父元素高度塌陷。


2)弹性元素

弹性容器的子元素即是弹性元素(弹性项)。

弹性容器和弹性元素可以互相嵌套,即是一个元素可以同时是弹性容器和弹性元素。


3)主轴和辅轴

弹性元素排列的方向即为主轴方向;

与主轴垂直的方向就是辅轴方向(与平面直角坐标系方向规则一样。)


(2)常用样式

1)弹性容器

flex-direction

flex-wrap

flex-flow

justify-content

align-content

align-items


flex-direction,用来指定容器中弹性元素的排列方向,可选值

:row  默认(按国家习惯默认方向),弹性元素会水平排列,从左到右排列

:row-reverse   弹性元素在容器中反向水平排列,从右到左排列

:column  弹性元素在容器中纵向排列,从上到下

:column-reverse  弹性元素在容器中纵向排列,从下到上

同时,设置flex-direction的值也就指定了弹性盒主轴的方向。


flex-wrap,用以设置弹性元素换行形式,可选值

:nowrap  默认值,元素不会自动换行

:wrap  元素沿着辅轴方向自动换行

:wrap-reverse 元素沿着辅轴反方向换行


flex-flow  是flex-direction和flex-wrap的简写属性,两个属性的值用空格隔开即可


justify-content  设置如何分配元素在主轴上的对齐方式,可选值:

:flex-start  默认值,表示元素沿着主轴起始位置排列

:flex-end  表示元素沿着主轴终止位置排列

:center   表示元素沿着主轴居中排列

:space-around  父元素空白空间平均分布在元素主轴两侧

:space-between 父元素的空白空间平均分布在元素主轴中间,即子元素在主轴平均分布,且子元素顶着父元素的起始和终止位置

:space-evenly 父元素空白空间平均分布在元素主轴一侧,也就是子元素在主轴上平均分布了,且父元素起始和终止位置均留有空白(兼容性不是很好,慎重使用)


align-content  设置如何分配元素在辅轴上的对齐方式,可选值:

:flex-start  默认值,表示元素沿着辅轴起始位置排列

:flex-end  表示元素沿着辅轴终止位置排列

:center   表示元素沿着辅轴居中排列

:space-around  父元素空白空间平均分布在元素辅轴两侧

:space-between 父元素的空白空间平均分布在元素辅轴中间,

:space-evenly 父元素空白空间平均分布在元素辅轴一侧

align-items 设置元素在辅轴上如何对齐,可选值

:stretch  默认值,将元素长度拉伸且每行设置为相同值

:flex-start  元素不会被拉伸,并沿着辅轴起始位置对齐

:flex-end  元素不会被拉伸,并沿着辅轴终止位置对齐

:center  元素不会被拉伸,并沿着辅轴居中对齐

:baseline 元素不会被拉伸,并沿着辅轴基线对齐


2)弹性元素

弹性元素可以类比弹簧,有本身的长度还有拉长和缩短的长度。

flex-grow

flex-shrink

flex-basis

flex

order

align-self

flex-grow,用以指定弹性元素的伸展系数,即当父元素有多余空间时,子元素如何伸展,按指定的值来进行分配,如

li:nth-child(1){flex-grow:1}

li:nth-child(2){flex-grow:2}

li:nth-child(3){flex-grow:3}

就是说这三个li会在原来大小基础上,按1:2:3的比例分配父元素空白空间,撑满父元素,

0表示不增长,仍是原来的长度。


flex-shrink,指定弹性元素的收缩系数,0表示不收缩,仍是原来的长度;元素越大缩减得越多

flex-basis, 指定元素在主轴上的基础长度,如果主轴是水平的,这个值就是元素宽度,原本设定的宽度会被覆盖;如果主轴是竖直的,这个值就是元素高度,原本设定的长度会被覆盖;默认值是auto,参考原本设置的长度和宽度

flex,简写属性,可以同时设置弹性元素的增长系数、收缩系数、基础长度的值,顺序固定。除了指定外,还有三个可选值

:initial  表示增长0 缩减1 基础长度auto

:auto   表示增长1 缩减1 基础长度auto

:none  表示增长0 缩减0 基础长度auto


order,用以设置弹性元素的排列顺序,用此属性实现只靠属性调整元素顺序而不用调整结构。


align-self,用以覆盖当前弹性元素上的align-items,即用来单独设置某个或某几个弹性元素的对齐方式


2.less预处理语言

这又是一个很强大的内容,源于大佬不习惯css语言语法而写出来的,看弹幕上说less语法结构很有亲切感,不过我什么都不知道,毕竟我还只是一只小菜狗罢了,手动doge~

在css中less语言主要是扩充css的一些功能,比如对变量的支持且兼容性好、对mixins的支持等,可以通过编写更少的代码实现更强大的功能,结构也更加清晰,还避免了选择器权重可能导致的样式不生效等等,目前只学了皮毛,但已经能清楚感觉到其强大了。我用vscode编写的,下载插件后,创建less文件,保存后自动编译生成一个css文件,对应less中编写的内容,需要注意引用外部样式表时仍需引用css文件(转换后的)。

(1)基本语法

1)无需使用后代选择器设置样式,直接按结构的层级编写(牛批!),如:

在less中直接如下按包含(层级)关系书写

less语法

它所表示的就是为body中的div设置了宽高,转换成css就是如下图

转换成css

既方便阅读和理解,代码量也将大大减少。

2)使用//进行单行注释,不会解析到css文件中;css注释方法也可以使用,且会解析到css文件中。

3)多个相同变量名,采取就近原则。

4)使用@import可以引用其他的less文件,语法:@import“xxx.less”;

可以模块化管理less文件,方便维护。


(2)less变量

css原生的变量兼容性差,less兼容性更强,因此通常使用less来编写变量。

在变量中可以存储任意的一个值,并且可以任意的修改变量的值,比如设计时一个主体色发生改变,就可以通过编写时设置的变量一键更改所有用到这个变量的地方,大大提高维护效率。

语法:

定义时  @变量名:变量值;

使用时 

 1)直接使用:

 选择器{属性名:@变量名;}

  2)作为类名,或者一部分使用时:

  .@{变量名1}{属性名:属性值;}

如:

@a:100px;

@b:box1

.@{b} {width:@a;

background-image:url"@{b}/1.png";}

3)引用出现过的属性其属性值

语法:

选择器{属性名1:属性值1;

属性名2:$属性名1;}

即可引用属性1的值

4)父元素选择器

在用层级书写样式时,如果需要对父元素设置样式,则直接使用&符号表示外层父元素,外一层是什么&符号就表示什么

5)extend

很有用的东西,如果两个元素有部分样式一致,也有不同的性质,用extend就不需要用选择器分组,直接写不同的性质,语法:

选择器2:extend(选择器1){属性名:属性值;}

如:

   .p1{width:100px;

height:100px;}

   .p2{width:100px;

height:100px;

color:red;}

就可以写成

   .p1{width:100px;

height:100px;}

.p2:extend(.p1){color:red;}

(3)Mixins

Mixins相当于混合函数,在Mixins中可以直接设置变量,定义几个变量,就需要设置几个变量的值,值需要一一对应且不可省略,如

.p1(@w,@h){width:@w;

height:@h;}

div{.p1(200px,200px);}

这就是创建了一个宽高200px的盒子

可以在定义变量时直接指定值作为一个默认值,如

.p1(@w:100px,@h:100px){width:@w;

height:@h;}

div{.p1(200px);}

此时省略的值就使用默认值,也就是说创建了一个宽200px,高100px的盒子。



先整理到这了,最后还有一些内容,不是很难,明天整理好,再写下感受,over!

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