HTML与CSS前端开发精品课学习笔记

Web前端开发精品课读书笔记
[toc]

HTML与CSS进阶教程

小知识

  • 最新HTML标准文档说明简化, 大小写不敏感, 属性可以不加引号,部分属性属性值可以忽略.
  • div和span
  • id和class的使用:选择器的使用
  • 浏览器的小标题的使用: <head>中使用<title></title><link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico" 的方式使用.

语义化

  • 标题语义化
  • 图片语义化 alt title.
    • figure figcaption代替<div><img .. /><span></span></div>方式实现 图片+ 图注的方式, 更好的语义化.
  • 表格语义化
  • 表单语义化 <label for ..>表达,给相应的<input type = "checkbox" ..>, 增加标签.
  • 使用fieldsetlegend标签. 后者是表单组标签, 实现类似"书签"效果.
  • 其他标签. <br /> <strong><em><del><ins><img> 分别表达换行, 加强, 斜行,删除线,插入线,图片等方式. 其中<img>是否使用背景图片替代, 看是否要当做内容被索引, 被查找, 如果不需要, 就用背景图片.

CSS进阶

基础支持

  • 单位: px % em rem 分别代表像素,百分比,相对于当前元素大小,相对于"根元素"大小

    • %
      • width height font-size分别对应父元素相同属性值进行计算
      • line-height百分比相对于父元素的font-size计算.
      • vertical-align相对于当前元素line-height计算.
  • 特性

    • 继承性. 对于<a>元素有默认特性,会影响继承产生的效果.
  • 选择器

    • M N {} 后代选择器,包括孙子所有的后代
    • M>N {} 子代选择器,只包括儿子辈的选择器
    • M~N {} 兄弟选择器. 同级的N元素
    • M+N {} 相邻选择器. 同级的N元素

书写规范

命名规范

  • 必要时采用父级class前缀法,column column-title column-content这种这方式.
  • 用驼峰命名topMain,中划线法,如上.

书写规范

优先级顺序:

  • 布局,文档流 display position float clear
  • 自身盒子属性 width height margin boder padding overflow
  • 文本描述属性 font line-height text-align text-indent vertial-align
  • 装饰属性 color background-color opacity cursor
  • 其他属性 content list-style quotes

注释

  • 采用/* */方式, 如果不想被压缩,使用/*! 版权所有 */ 保留注释不被压缩,不然压缩CSS时就会干掉这些.

CSS Reset

  • 使用* {marging:0 padding:0} 完成页面默认样式的清除,这种效率不过, 有css reset样式清除表. 不过高级设计是不清楚样式的.

CSS盒子模型

  • conent内容区可以使用overflow:hidden方式来指明溢出怎么办.
  • border:none对比border:0 不需要渲染,不占用内存.但是IE6 7 不支持border:none,没有旧浏览器,就不作兼容.
  • padding用于有背景图的, 设置文字偏移

外边距叠加

  • 只有margin-top margin-bottom之间会发生叠加,而margin-left margin-right不会
  • 只有block inline-block会发生, 因为inline元素margin-top margin-bottom属性设置无效.
  • 同级元素,底和顶叠加; 父子元素, 顶和顶,底和底叠加; 如果没有子元素或文字的元素如<br /><hr />空元素, 会让与其接壤的所有元素发生外边距叠加.

负margin技术

  • 普通文档流下: margin-top margin-left为负数会让自身移动去覆盖其他位置; margin-bottom margin-right为负数会让后续元素移动,覆盖原有元素
  • 浮动元素:注意流动的方向即可.
  • 相应技巧:
    • 图文混排,水平底部不对齐: vertical-align:text-bottom改变默认的baseline-bottom方式外, margin{0 3px -3px 0}方式也可以.
    • 自适应两列布局:
    • 垂直居中. 设置父元素position:relative, 设置子元素position:absolute;top:50%;left:50%;margin-left:width值一半的负值; margin-top:height值一半的负值 . 万能的方法,适用于block inline inline-block三种元素.
    • tab选项卡可以margin-top:-1px 消除下边框显示问题.
    • 子元素为float:left;``float:right 浮动, 而父元素没有设置高度height会导致父元素高度坍陷. 对父元素div设置overflow:hidden清除浮动,可以使高度不会坍陷.

display属性

块元素和行内元素

块元素

行内元素

  • strong em s u a span代表强调,斜杠,删除线,下划线,超链接,文档内的行级元素.
  • 不可包含块元素,造成无法预知的后果, 可以包括其他行元素.
  • 无法定义height width高度和宽度.
  • 可定义margin-left margin-right,无法定义margin-top margin-bottom.

display 改变属性

inline-block可以定义width height属性, 可以与其他行内元素在同一行, 包括img input2种.

display:nonevisibility:hidden

  • 前者不会占据位置,后者占据位置而不显示. 而慎用前者,因为搜索引擎会忽略.

display:table-cell

  • 定义垂直和居中对齐. 对父元素设置display:table-cell,然后对父元素,子元素设置vertical-align:center垂直居中.
  • 自适应的等高布局, 会自适应高度撑开并由最高的盒子决定, 等高
    ```lasso`
    <div ... style= "display:table-row">
    <div style="display:table-cell;"> <img /><div>
    <div style="display:table-cell;"><span></span></div>
    </div>

- **自动平均** 划分元素

父元素: {display:table;}
子元素: {display:table-cell;}


#### 去除`inline-block`元素之间间距
语法:

父元素 {font-size:0;}


## 文本效果
- 大小写, 首行缩进,文本大小写,文本水平垂直对齐,行高,字距,词距.
### `text-indent`首行缩进
- 正常用法, 首行缩进`2em`, 高级用法设置`<h1>`元素背景元素, 相应文本设置为`text-indent:-9999px`不显示, 对搜索引擎也友好.

### `text-align`设置
- 可以设置居中,左, 右, 两端对齐等.
- 对文本, `inline inline-block`元素生效. 所以对`<img>`元素也生效. 可以对`<div display:inline-block></div` 完成设置生效.优雅办法如下
- `{text-align:center} {margin: 0 auto;}`区别. 前者生效以说,父元素中定义, 后者当前元素定义. 后者只对块元素生效.

### `line-height`设置
- 技巧1: 设置单行文字居中对齐. 方法: 设置`height line-height`值相同.
- `em %`取值,参考父元素`font-size`属性设置行号.
- 数字. **CSS唯一一个用数字无单位设置单位** 代表相对于当前元素`font-size`乘以这个数字. 

### `vertical-align`定义周围元素对当前元素的定位方式. 参考行盒子. 顶线,中线,基线,底线. 4大线.
#### 取值方式
- `vertical-align:-2px`参考当前元素基线向下偏移 `2px`
- `vertical-align:50%`. 如果当前元素继承`line-height:20px`, 那么等同于`vertical-align:10px`,当前元素向上偏移`10px`
- 关键字: `top middle baseline bottom`


#### 应用技巧
- `inline inline-block`元素,**周围元素**对**当前元素**垂直对齐方式.
- 块元素, 不生效.
- `table-cell`元素生效,但是属性需要定义在**当前元素**上.

## 表单效果
### `radio checkbox`垂直方向不对齐不美观的问题
- 使用`{vertical-align:-2px}`等方式微调, 既可达到满意效果.
### `text-area`效果
- 固定大小, 禁止拖动,浏览器兼容同样外观

{width:100px; height:80px; overflow:auto; resize:nono}


### 表单对齐
- 清除`p`浮动. `p {overflow:hidden;}`
- `form` 宽度固定. 左栏固定宽度和若干右栏. 左栏`text-align:right`右对齐
- 右栏所有盒子长度相等.
- 左栏+右栏所有盒子长度 = 行宽

## 浮动布局
### 浮动会让元素变成`block`元素, 可以定义`width height margin padding`属性了. 会脱离正常文档流, 后续的元素会不缺. 例如`<img>`元素右边部分会让后续的文字填充出来.
### 浮动影响
- 对自身影响. 转换成块元素`block` 同上.
- 对父元素影响. 如果父元素没有高度或高度不够, 会造成塌陷. 解决问题: 定义高度大于子元素, 或者也定位为浮动. 或清除浮动.
- 对兄弟元素影响. 都是浮动就一起浮动. 如果不是就会脱离文档流, 而覆盖后续元素占据的位置
- 对子元素影响. 自适应包裹子元素.
### 清除浮动 避免浮动影响,如覆盖
- `clear:both` 对浮动元素后续元素应用, 譬如增加一个空`<div>`元素
- `overflow:hidden` 对父元素使用, 会导致显示不全的问题.
- `.clearfix{*zoom:1;} .clearfix::after{clear:both;content:'';display:block;height:0;visibility:hidden;}` 清楚浮动不会有问题. 

## 定位布局
- `static  relative absolute fixed`四大布局.  前二者遵循正常文档流, 后二者脱离文档流布局.
#### 重要技巧
- 对父元素,祖先元素定义`position:relative`, 然后当前元素定义`position:absolute`定位, `top bottom left right`属性来定位.
- `position:absolute`对导致元素变为`block`元素, 而且相对于往上追溯,第一个`relative absolute fixed`定位来实行定位. 
- `{z-index:1 inherit auto}` 相应堆叠顺序. 除了定位`static`时不生效, 所有布局均生效.

## CSS图形
### 三角形
- `{border-width:20px; border-style:solid; border-color:red transparent transparent transparent;}` 三角形就出来了.
- 如果需要边框的, 需要2个配合. 内三角要小1px, 具体略
### 圆角
- `border-radius:1px 1px 1px 1px`
### 圆 椭圆(略)

## 性能优化
- 四大发: 简写 工具压缩 选择器
### 简写

border: 1px solid red;
border-bottom:none; //定义另外三条,而除去这条

background:url(baidu.com) no-repeat 80px 40px . 代表定位的80 40

font:"微软雅黑" 12px/1.5em bold //font-size和line-height值之间需要加入/,这点需要注意.

color:#000 == #000000


- 结尾分号;可不留, url()引号可不留,属性为0可无单位,0.开头可省略,利用组合选择器合并,差异部分单独定义,利用继承父元素定义多个而子元素不用再定义.

### 工具压缩
- YUI等

### 选择器
- 选择器从右往左进行. 理论上,更精确的写在右边.
- 少用后代`div span`选择器, 可以多用`div>span`子选择器替代. 同样的`~ +`兄弟和相邻选择器必要时使用.

## CSS技巧
### 水平居中
- 文本, `inline inline-block`元素设置水平居中没有问题. 
- 块元素.使用`margin:0 auto`水平居中. 需要注意的是如果本身没有宽度,块元素会默认占全部, 所以有时候`width:80%`来完成显示 , 并不是全部不居中.

### 垂直居中
#### 文本垂直居中
- 单行文本: 设置`line-height height`相同
- 多行文本: `父元素{display:table-cell; vertical-align:middle;} 子元素{display:inline-block}` 把所有的文字用`span`包括起来然后使用`inline-`方式完成垂直居中
#### 元素垂直居中
- 块元素. 万能方法,使用了`position:absolute`所以会把元素都变成`block`元素, 所以其他元素如`inline inline-block table-cell`等都可以使用万能方式. 注意如果水平, 垂直居中单独可控, 去掉`left margin-left` 和 `top margin-top`单独设置即可.

父元素{display:relative}
子元素{display:absolute; top:50%; left:50%; margin-top:'height值的一半'; margin-left:'widht一半的值'}


- 行内元素

父元素{display:table-cell; vertical-align:middle;}
子元素{vertical-align:middle;}


#### CSS Sprite
- 合并小图标成一个大的图标.
- ICON Font技术. 访问阿里小图标和文字一样简单.

### BFC IFC
- 好复杂. 不严谨做法: block,inline-block创建BFC, 而table等参与BFC. 这个以后再理解.
#### 用法
- A,B两元素外边距叠加. 此时对B括起来`<div style="overflow:hidden">B?</div>`创建一个BFC, 避免外边距叠加.
- 父元素塌陷一样的问题. 给父元素增加`overflow:hidden`之后让子元素在一个BFC内了,高度就会参考浮动元素而进行计算.
- 自适应两栏布局, 清除浮动. `#content{overflow:hidden}`同样让环绕在图片周围的文字,自己创立BFC, 从而实现两栏布局而不是环绕布局.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,703评论 1 92
  • CSS格式化排版 1、字体 我们可以使用css样式为网页中的文字设置字体、字号、颜色等样式属性。下面我们来看一个例...
    张文靖同学阅读 1,264评论 0 3
  • Html 标签 斜体 粗体 单独的样式 引用文本 长文本引用 换行 空格 分割线 地址信息 单行代码 多行代码 无...
    SunnySky_阅读 543评论 0 5
  • 一 外部式css样式 (也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css...
    KunMitnic阅读 917评论 0 1
  • 潮湖高曲拾舟去, 五斗官贾锦绣裳。 老猫柴狗杏花肆, 南山秋雨夜来香。
    闲灯儿阅读 118评论 0 5