zj前端xly


html

img标签中alt属性:当图片加载不出来的时候现实的提示文本

imput标签中:

​ placeholder:提示输入信息

​ tyrp=“range”:输入范围

​ type=”number” min=”1“ max = ”10“ 数量选择

​ type=”date“ min=”2018-02-10“ 日期选择

textarea标签表示输入范围

前端语义化

html中的元素,属性,属性值都拥有某些含义

开发者应该遵循语义来编写html

​ 有序列表用ol,无序列表用ul

​ lang属性表示内容所使用的语言

无障碍性:

​ 比如:图片加载不出来,加载文本提示信息

​ 移动端适配之类的

​ 页面对比度是否适合阅读

css

用来定义页面元素样式

​ 设置字体大小颜色

​ 设置位置和大小

​ 添加动画效果

由选择器Selector,选择器Property,属性值value,声明Declaraction,大括号,组成

使用css三种方法:外链,嵌入,内联

选中相应的属性标签:

​ [匹配的属性]{}

​ 标签[选择器Property=”属性(支持正则)“]{}

伪类选择器

/*ul的第一个子元素*/
ul li:first-child{
    background:red;
}
/*ul的最后一个子元素*/
ul li:last-child{
    background:green;
}
/*选中p1 : 定位到父元素,选择当前第一个元素
选中当前p元素的父级元素,选中父级元素的第一个,并且是当前元素才生效也就是是p才生效,顺
序选择,如果顺序标签不是p则不会生效
*/
p:nth-child(1){
    background:green;
}
/*选中父元素下的p元素的第二个,类型选择,如果第二个标签不是p则会顺序的向下找*/
p:nth-of-type(2){
    background:yellow;
}

标签选择器.属性选择器{},即是这个标签的又是这个属性选择器的才起作用

组合Combinators

名称 语法 说明 示例
直接组合 AB 满足A又满足B input:focus
后代组合 A B 选中B如果他是A的子孙 nav a
亲子组合 A>B 选中B,如果他是A的子元素 section>p
兄弟选择器 A~B 选中B,如果他在A后且与A同级 h2~p
相邻选择器 A+B 选中B,如果他紧跟在A后面 h2+p

RGB函数取值0-255,三原色:红、绿、蓝

颜色HSL:

​ Hue:色彩基本属性0-360

​ Saturation:饱和度0-100%

​ Lightness:亮度0-100%

alpha:透明度,0完全透明,1完全不透明

​ rgba(0,0,0,透明度)

font-family:字体1,字体2,、、、、。依次选择字体,哪个有用那个

建议:字体列表最后写上通用字体族

​ 英文字体放在中文字体前面

还可以使用网络字体

@font-face{
	font-family:f1;
    src:url("xxxx") format("woff2");
    
}

font-size:设置字体大小

关键字

​ small,medium,large

长度

​ px,em

百分数

​ 相对于父级元素字体大小

section{
    font-size:20px;
}
section h1{
    font-size:2em;
}
/*section下h1字体大小为2*20px=40px*/

font-weight:设置字体粗细100-900

关键字normal:对应400自重,bold对应700自重

如果line-height:设置为一个数字,那么具体的值为 数字*font-size的值的px大小

text-align:设置文字对齐,值有,left,center,right,justify(两端对齐)

spacing:间距

letter-spacing:字母之间的间距

word-spacing:单词之间的间距

text-indent:缩进

text-decoration:文字装饰,上中下划线之类的

white-space:

​ normal:正常情况

​ nowrap:不换行,并且多个连续的空格只保留一个

​ pre:保留所有的,包括多个空格和换行

​ pre-wrap:一行内显示不下会换行,显示的下不会换行

​ pre-line:保留换行,空格合并

CSS深入理解

#nav .list li a:link    
,hd ul.links a
# . E
id (伪)类 标签
,hd ul.links a 1 2 2
#nav .list li a:link 0 2 2

122>022所以下面的标签会被上面的标签覆盖

继承

某些属性会自动继承其父亲元素的计算值,除非现实的指定一个值

一般和文字相关是可继承的,尺寸大小一般是不可继承的

box-sizing:inherit 将box-sizing变为继承属性

background-color:initial 强制将background-color设置为初始值

浏览器渲染过程:

DOM树 样式规则
filtering:对应该页面的规则并且用一下规则进行筛选:选择器匹配,属性有效,符合当前media等
声明值:Declared Values,一个元素的某属性只能由0到多个声明值。比如:p{font-size:16px} p.text{font-size:1.2em}
cascading:按照来源,选择器的特异性,书写顺序等选择出优先级最高的一个属性值
层叠值:Cascading Value,在层叠过程中,赢得优先级比赛的那个值,比如1.2em
defaulting:当层叠值为空的时候,使用继承或者初始值
指定值:Specified Value,经过cascading和defaulting之后,保障指定值一定不为空
resolving:将一些相对值或者关键字转化为绝对值,比如em转化为px,相对路径转化为绝对路径
计算值:Computed Value,一般来说是,浏览器会在不进行实际布局的情况下,所能够得到的最具体的值,比如:60%
formatting:将计算值进一步转换,比如关键字,百分比等都转换为绝对值
使用值:Used Value,进行实际布局时使用的值,不会再有相对值和关键字。比如:400.2px
constraining:将小数像素值转化为整数
实际值:渲染时实际生效的值,比如400px

块级元素:body,artical,div,main,section,h1-6,p,ul,li等

display:block

行级元素:span,em,strong,cite,code等

display:inline

只包含行级元素盒子的容器会创建一个IFC

行级排版

IFC:排版规则

  1. 盒子在一行内水平摆放,一行放不下时换行显示,
  2. text-align决定一行内盒子的水平对齐,
  3. vertical-align决定一个盒子在行内的垂直对齐
  4. 避开浮动(float)元素

块级排版

BFC:某些元素会创建一个BFC

  1. 根元素
  2. 浮动,绝对定位,inline-block
  3. Flex子项和Grid子项
  4. overflow值不是visible的块盒
  5. display:flow-root

排版规则:

​ 盒子从上到下摆放

​ 垂直margin合并

​ BFC内盒子的margin不会与外面合并

​ BFC不会和浮动元素重叠

display:flex;

Flex Box是什么

​ 一种新的排版上下文

​ 它可以控制子级盒子的:

​ 摆放的流向(上下左右)

​ 摆放的顺序

​ 盒子的宽度和高度

​ 水平和垂直方向的对齐

​ 是否允许折行

​ justify-content控制flex里边块主轴的摆放:

​ flex-start左对齐,flex-end右对齐 ,

​ enter中间对齐

​ space-between两边无空白,中间有空白

​ space-around中间空白大一些,两边空白小一些

​ space-evenly中间空白和两边空白一样大

​ algin-items控制侧轴的摆放:

​ flex-start上对齐,flex-end下对齐 ,center中间对齐,stretch竖着摆满

​ baseline主轴为底对齐

​ algin-self:给某个属性自己设置一个对齐方式

​ order:排序

Flexibility

​ 设置子项的弹性:当容器有空间的时候,会伸展,当容器无空间的时候会 收缩

​ flex-grow:有剩余空间时的伸展能力

​ flex-shrink容器空间不足时的收缩能力

​ flex-basis没有伸展或收缩时的基础长度

dispaly:grid

Grid:

​ 二维排版,grid-template可以将grid容器划分为二维网格,然后设置每个

​ 子元素占据的格子

建议:做图文环绕用float

position:

​ static:默认值,非定位元素

​ relative:相对自身原本位置发生偏移,不脱离文档流

​ absolute:绝对定位,相对非static祖先元素定位

​ fixed:相对于视口绝对定位

javascript

黑白模式:js直接去操控css样式

进阶版:js不要直接去操控css样式,而是去改变css选择器比较好,切换状

​ 态,而不是直接修改样式,

进进阶版本:label去操控checkbox改变黑白天,checkbox直接切换css样

​ 式,不用js操控

注意:

​ HTML/CSS/JS各司其职

​ 应当避免不必要的由js直接操作样式

​ 可以使用class来表示状态

​ 纯展示类交互寻求零js方案

组件:是指web页面上抽出来一个个包含模板(HTML)、功能(js)和样式(CSS)的单元。好的组件具备封装性、正确性、扩展性、复用性。

轮播图设计:

​ 结构HTML

​ 轮播图是一个典型的列表结构可以使用无序列表

    元素来实现

​ CSS

​ 使用css绝对定位将图片重叠在同一位置

​ 轮播图切换的状态使用修饰符(modifier)

​ 轮播图的切换动画使用CSS transition

​ 行为js

​ API设计应该保证原子操作,职责单一,满足灵活性

使用自定义事件进行解耦:让轮播图下面的小圆点和图片绑的不要那么死

总结:

​ 结构设计

​ 展现效果

​ 行为设计

​ API(功能)

​ Event(控制流)

解耦:

​ 将控制元素抽取成插件

​ 插件于组件之间通过依赖注入的方式建立联系

​ 将html模板化,更易于扩展

抽象:

​ 将通用的组件模型抽象出来

最终总结:

​ 组件设计原则:封装性,正确性,扩展性,复用性,

​ 实现组件的步骤:结构设计、展现效果,行为设计

​ 三次重构:

​ 插件化

​ 模板化

​ 抽象化(组件框架)

编程范式:

​ 命令式

​ 声明式

总结:

​ 过程抽象/HOF/装饰器

​ 命令式/声明式


文章作者: HuXiao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 HuXiao !
评论
  目录