这篇文章为我跟随pink老师重新系统学习前端时做的一些笔记。
【前端学习】D1:HTML简介与HTML标签
【前端学习】D2-1:CSS入门
【前端学习】D2-2:CSS基础
【前端学习】D3:CSS进阶
【前端学习】D4:CSS提高
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题。
层叠性原则:
CSS中的继承:子标签会继承父标签的某些样式,如文本颜色和字号。
行高的继承:
行高的继承 测试文字测试文字
- 测试文字。没有指定文字大小
当同一个元素指定多个选择器,就会有优先级的产生。
选择器权重:
选择器 | 选择器权重 |
---|---|
继承 或者 * | 0,0,0,0 |
元素选择器 | 0,0,0,1 |
类选择器,伪类选择器 | 0,0,1,0 |
id选择器 | 0,1,0,0 |
行内样式 style=“” | 1,0,0,0 |
!important 重要的 | ∞ 无穷大 |
css权重注意点 测试文字
a标签测试文字
权重叠加:如果是复合选择器,则会有权重叠加,需要计算权重(没有进位)。
/* .nav li的权重是0,0,0,1+0,0,1,0=0,0,1,1 */
.nav li {color: pink;
}
/* ul li的权重是0,0,0,1+0,0,0,1=0,0,0,2 */
ul li {color: green;
}
/* li的权重是0,0,0,1 */
li {color: red;
}
- 测试文字
页面布局的三大核心:盒子模型,浮动和定位。
网页布局过程:
网页布局的本质:利用CSS摆盒子。
所谓盒子模型,就是把HTML页面中的额布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
CSS盒子模型本质是一个盒子,封装周围的HTML元素,包括边框、外边距、内边距和实际内容。
border可以设置元素的边框。边框有三部分组成:边框宽度(粗细),边框样式,边框颜色。边框属性的简写没有先后顺序。
border: border-width | | border-style | | border-color;
border-top: 5px solid red;
border-bottom: 1px dashed green;
属性 | 作用 |
---|---|
border-width | 定义边框粗细,单位是px |
border-style | 边框的样式 |
border-color | 边框颜色 |
案例:
/* 请给一个 200*200 的盒子,设置上边框为红色,其余边框为蓝色 */
div {width: 200px;height: 200px;/* border-top: 1px solid red;border-bottom: 1px solid blue;border-left: 1px solid blue;border-right: 1px solid blue; *//* border包含四条边 */border: 1px solid blue;/* 利用层叠性*/border-top: 1px solid red;
}
border-collapse属性控制浏览器绘制表格中相邻单元格的边框。
border-collapse: collapse; /* 表示相邻的单元格的边框合并在一起 */
边框会额外增加盒子的实际大小。解决方案:
padding属性用于设置内边距,即边框与内容之间的距离。
属性 | 作用 |
---|---|
padding-top | 上内边距 |
padding-right | 右内边距 |
padding-bottom | 下内边距 |
padding-left | 左内边距 |
padding属性可以有一到四个值(实际开发中都会遇到):
值的个数 | 表达意思 |
---|---|
padding: 5px | 1个值,代表上下左右都有5像素内边距。 |
padding: 5px 10px | 2个值,代表上下内边距为5像素,左右内边距为10像素。 |
padding: 5px 10px 20px | 3个值,上下内边距为5像素,左内边距为10像素,右内边距为20像素。 |
padding: 5px 10px 20px 30px | 4个值,上内边距为5像素,右内边距为10像素,下内边距为20像素,左内边距为30像素。顺时针。 |
也就是说,如果盒子已经有了宽度和高度此时再指定内边框,会撑大盒子。
解决方案:如果保证盒子跟效果图大小保持一致,则让width / height减去内边距大小。
如果盒子本身没有指定width / height属性,则此时padding不会撑开盒子大小。
margin属性用于设置外边距,即控制盒子和盒子之间的距离。
属性 | 作用 |
---|---|
margin-top | 上外边距 |
margin-right | 右外边距 |
margin-bottom | 下外边距 |
margin-left | 左外边距 |
margin的简写方式与padding一致。
1.盒子与盒子之间有了距离,添加了外边距。
2. margin不影响盒子的实际大小。
.header { width: 960px; margin: 0 auto; }
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。
网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。因此我们在布局前,首先要清除下网页元素的内外边距。
* {padding: 0;margin: 0;
}
行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。或者将行内元素转换为块级和行内块元素。
在CSS3中,新增了圆角边框样式。border-radius属性用于设置元素的外边框圆角。
border-radius: length;
圆形头像:
avatar {width: 30px;height: 30px;border-radius: 50%;
}
在CSS3中,新增了盒子阴影样式。border-shadow属性为盒子添加阴影。
border-shadow: h-shadow v-shadow blur spread color inset;
属性值 | 描述 |
---|---|
h-shadow | 必需。水平阴影的位置,允许负值。 |
v-shadow | 必需。垂直阴影的位置,允许负值。 |
blur | 可选。模糊距离。 |
spread | 可选。阴影的尺寸。 |
color | 可选。阴影的颜色。 |
inset | 可选。将外部阴影(outset)改为内部阴影。 |
在CSS3中,text-shadow属性为文本添加阴影。
text-shadow: h-shadow v-shadow blur color;
属性值 | 描述 |
---|---|
h-shadow | 必需。水平阴影的位置,允许负值。 |
v-shadow | 必需。垂直阴影的位置,允许负值。 |
blur | 可选。模糊距离。 |
color | 可选。阴影的颜色。 |
实际开发中,一个页面基本都包含了这三种布局方式。
标准流:标签按照规定好的默认方式排列。是最基本的布局方式。
浮动可以改变元素标签默认的排列方式:
网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。
float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。
选择器 { float: 属性值; }
属性值 | 描述 |
---|---|
none | 元素不浮动。默认值。 |
left | 元素向左浮动。 |
right | 元素向右浮动。 |
为了约束浮动元素的位置,网页布局一般采取的策略是:先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。复合网页布局的第一准则。
案例:
浮动元素搭配标准流父盒子2 - 1
- 2
- 3
- 4
网页布局第二准则:先设置盒子大小,之后设置盒子的位置。
当浮动元素的尺寸大于盒子元素,会溢出。但因浮动元素脱标,且其外边距不会引起塌陷,所以不会撑大盒子。
通栏盒子(和浏览器一样宽)不需要指定宽度。
理想状态中,让子盒子撑开父盒子,而不是指定父盒子的高度。但是浮动的子元素脱标不占位置,会使得父元素的高度为0,影响下方的标准流盒子。
本质:清除浮动元素脱离标准流造成的影响。
如果父盒子本身有高度,则不需要清除浮动。
清除浮动之后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了。
选择器 { clear: 属性值; }
属性值 | 描述 |
---|---|
left | 不允许左侧有浮动元素(清除左侧浮动的影响) |
right | 不允许右侧有浮动元素(清除右侧浮动的影响) |
both(实际开发中用) | 清除左右两侧浮动的影响 |
清除浮动的策略:闭合浮动,即只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子。
.clearfix:after {content: "";display: block;height: 0;clear: both;visibility: hidden;
}
.clearfix { /* IE6、7专有 */*zoom: 1;
}
.clearfix:before,.clearfix:after {content: "";display: table;
}
.clearfix:after {clear: both;
}
.clearfix {*zoom: 1;
}
。
原来盒子和浮动的使用有这么多讲究。。
上一篇:数据结构与算法:表达式匹配问题
下一篇:磁盘阵列Raid探讨