HTML只关注标签的语义,虽然可以做简单的样式,但会带来臃肿和繁琐,并且页面显示很丑。
CSS是层叠样式表(Cascading Style Sheets)的简称,有时也称作CSS样式表或级联样式表;是一种标记语言。
CSS主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等),图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式
由HTML做结构,CSS对html结构进行修饰,从而使结构和样式相分离。
p {/*p是选择器*/
color:red;/*这是一条声明,属性+值*/
font-size:20px;/*这也是一条声明,属性+值*/
}
p {
color: red;
font-weight: 700;
}
p/*这儿有一个空格*/{
color:/*这儿有一个空格*/ red;
font-weight:/*这儿有一个空格*/700;
}
作用
选择标签,确定对谁设置样式
CSS做两件事:1、选到需要的标签;2、设置标签的样式
选择器的分类
标签选择器是指用 HTML标签名称作为选择器,为页面中某一类标签指定统一的CSS样式
标签名 {
属性1: 属性值1;
属性2: 属性值2;
属性3: 属性值3;
...
}
ul {
font-size: 10px;
}
差异化选择不同的标签,单独选择一个或者几个标签,可以使用类选择器
.类名 {
属性1: 属性值1;
.....
}
/*例*/
.red {
color: red;
}
'red'> 变红色
我们可以给一个标签指定多个类名,这些类名都可以选出这个标签,简单理解就是一个标签有多个名字
"red font">多个类名
多类名开发中使用场景:
#id名{
属性1:属性值1;
...
}
"pink">哈哈哈哈
CSS 中, 通配符使用 * 定义,它表示选取页面中所有元素(标签)。
* {
属性1:属性值1;
....
}
选择器 | 作用 | 特点 | 使用情况 | 用法 |
---|---|---|---|---|
标签选择器 | 可以选出所有相同的标签 | 不能差异化选择 | 较多 | p {color: red} |
类选择器 | 可以选出1个或者多个标签 | 可以根据需求选择 | 非常多 | .nav {color: red} |
id 选择器 | 一次只能选择1个标签 | ID 属性只能在每个 HTML 文档中出现一次 | 一般和 js 搭配 | #nav {color: red} |
通配符选择器 | 选择所有的标签 | 选择的太多,有部分不需要 | 特殊情况使用 | * {color: red} |
复合选择器是建立在基础选择器之上,由两个或多个基础选择器,通过不同的方式组合而成的
常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等
后代选择器又称为包含选择器,可以选择父元素里面的子元素
其写法是把外层标签写在前面,内层标签写在后面,中间用空格分隔。
元素1 元素2 {
样式声明
}
上述表示选择元素1里面的所有元素2(后代元素)
标签之间用空格隔开,最终选择的是最后一个标签(子元素),前面标签(父元素)起限定作用
子元素可以是儿子也可以是孙子,只要是父元素的后代即可
后面的标签(子元素)可以是一层嵌套,也可以是多层嵌套
元素都可以是任意基础选择器(标签、类、id、通配符)
子元素选择器(子选择器)只能选择某元素的最近一级子元素,即选亲儿子元素
元素1 > 元素2{
样式声明
}
表示选择元素1 里面的所有直接后代(子元素)元素2
元素1 和 元素2 中间用大于号隔开
元素1 是父级,元素2 是子级,最终选择的是元素2
后面的元素必须是最近一级子元素
并集选择器可以选择多组标签,同时为他们定义相同的样式,通常用于集体声明
元素1,元素2 {
样式声明
}
div,
p,
.pig li {
color: red;
}
伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果
伪类选择器用冒号(:)表示,比如:hover、:first-child
伪类选择器包括:链接伪类、结构伪类等
a:link 选择所有未被访问的链接
a:visited 选择所有已被访问的链接
a:hover 选择鼠标指针位于其上的链接
a:active 选择活动链接(鼠标按下未弹起的链接)
注意:
/* a是标签选择器 */
a {
color:gray;
}
/* :hover 是链接伪类选择器,鼠标经过 */
a :hover {
/*鼠标经过的时候,由原来的灰色 变成了红色*/
color:red;
text-decoration:none;
}
input : focus {
background-color:yellow;
}
选择器 | 作用 | 特征 | 使用情况 | 隔开符号及用法 |
---|---|---|---|---|
后代选择器 | 用来选择后代元素 | 可以是子孙后代 | 较多 | 符号是空格 .nav a |
子代选择器 | 选择最近一级元素 | 只选亲儿子 | 较少 | 符号是大于 .nav>p |
并集选择器 | 选择某些相同样式的元素 | 可以用于集团声明 | 较多 | 符号是逗号 .nav,.header |
链接伪类选择器 | 选择不同状态的链接 | 跟链接相关 | 较多 | 重点记住a{ }和a:hover ,实际开发的写法 |
:focus选择器 | 选择获得光标的表单 | 跟表单相关 | 较少 | input:focus 记住这个写法 |
行内样式表(内联样式表)是在元素标签内部的style属性中设定CSS样式,适合于修改简单的样式;不推荐使用
"color: red; font-size: 12px;">内容
"stylesheet" href="css文件路径">
rel
定义当前文档与被链接文档之间的关系,这里指定为"stylesheet"表示被链接文档是一个样式表文件
href
定义所链接外部样式表文件的url,可以是相对路径或绝对路径
CSS 使用 font-family 属性设置文本的字体系列(确定字体的样式,宋体,楷体等)
div {
font-family:Arial,"Microsoft Yahe","微软雅黑"; }
body {
font-family: "Microsoft Yahe",tahoma,arial,"Hiragino Sans GB";
}
CSS 使用 font-size 属性设置字体大小
p{
font-size: 20px;
}
CSS使用font-weight属性设置字体粗细
font-weight: normal ;
属性值 | 作用 |
---|---|
normal | 默认值(不加粗的),相当于number=400 |
bold | 定义粗体(加粗的),相当于number=700 |
bolder | 定义特粗体 |
100-900 | 400等同于 normal,700等同于 bold,注意这个数字后面不跟单位 |
实际开发中,更多用数字表示粗细
CSS使用font-style属性设置文本的风格(斜体)
p {
font-style: normal;
}
字体复合属性可以把以上文字样式综合来写,这样写更节约代码
顺序:(font-style)文字样式 、(font-weight)文字粗细 、(font-size/line-height)文字大小 、(font-family)文字字体
使用font复合属性时,必须按照上面语法格式中的顺序书写,不能更换顺序,并且各个属性间以空格隔开
不需要设置的属性可以省略(取默认值),但必须保留font-size 和font-family属性,否则 font 属性将不起作用
记不住还是规规矩矩写吧。
属性 | 意义 | 注意 |
---|---|---|
font-style | 字体样式 | 记住倾斜是 italic,不倾斜是 normal,实际开发最常用 normal |
font-weight | 字体粗细 | 加粗是 700 或者 bold ,不加粗是 normal 或者 400,记住数字不加单位 |
font-size | 字号 | 我们通常用的单位是 px ,一定要跟上单位 |
font-family | 字体 | 实际工作中按照团队约定来写字体 |
font | 字体连写 | ①字体连写是有顺序的,不能随意换位置 ② 字体和字号必须同时出现 |
CSS 文本属性可以设置文本的 外观,比如文本颜色、对齐文本、装饰文本、文本缩进、行间距的等
color属性用于定义文本的颜色
div {
color: red;
}
属性值:
text-align属性用于设置元素内文本内容的水平对齐方式
div {
text-align:center;
}
text- decoration属性规定添加到文本的装饰,可以给文本添加下划线、删除线、上划线等
div {
text-decoration: underline;
}
text-indent属性用来指定文本的第一行的缩进,通常是将段落的首行缩进
div {
text-indent: 10px;
}
p{
text-indent: 2em;
}
通过设置该属性,所有元素的第一行都可以缩进一个给定的长度,甚至该长度可以是负值
em是一个相对单位,就是当前元素(font-size)1个文字的大小。如果当前元素没有设置大小,则会按照父元素的一个文字大小
line-height属性用于设置行间距(行间距包括上间距、文本高度、下间距)
p {
line-height: 26px;
}
生成标签:输入标签,按tab键即可。比如div按tab,生成< div>< /div>
生成多个相同标签:标签*个数,再按tab(以下省略)。比如div *3,生成3个< div>< /div>
生成有父子级关系的标签:用>。比如ul>li,生成< ul>< li>< /li>< /ul>
生成兄弟关系的标签:用+。比如div+p,生成< div>< /div>< p>< /p>
生成带有类名或id名的标签:用.demo或#two,比如div.demo生成< div class=“demo”>< /div>,div#two生成< div id=“two”>< /div>
生成有顺序的div类名:用$.比如div.demo $*5生成
< div class=“demo1”>< /div>
< div class=“demo2”>< /div>
< div class=“demo3”>< /div>
< div class=“demo4”>< /div>
< div class=“demo5”>< /div>
生成默认显示几个文字的标签:用{},比如div{内容},生成< div>内容< /div>
首字母缩写加属性值,按tab自动补全
元素显示模式就是元素(标签)以什么方式进行显示,HTML元素一般分为块元素和行内元素两种类型。
常见的块元素有< h1>~< h6>、< p>、< div>、< ul>、< ol>、< li>等,其中< div> 标签是最典型的块元素。
块级元素的特点
自己独占一行
高度,宽度,外边距以及内边距都可以控制
宽度默认是容器(父级宽度)的100%
是一个容器及盒子,里面可以放行内或块级元素
注意
文字类的元素内不能使用块级元素
< p> 标签主要用于存放文字,因此 < p>里面不能放块级元素,特别是不能放< div>同理,< h1>~< h6>等都是文字类块级标签,里面也不能存放其他块级元素。
常见的行内元素有< a>、< strong>、< b>、< em>、< i>、< del>、< s>、< ins>、< u>、< span>等,其中< span>标签是最典型的行内元素。有的地方也将行内元素称为内联元素。
特点
注意
几个特殊的标签——< img />、< input />、< td>,它们同时具有块元素和行内元素的特点。
特点:
元素显示模式 | 排列规则 | 样式 | 默认宽度 | 包含 |
---|---|---|---|---|
块级元素 | 一行只能放一个块级元素 | 可以设置宽度高度 | 容器的100% | 容器内可以包含任何标签 |
行内元素 | 一行可以放多个行内元素 | 不可以直接设置宽度高度 | 它本身内容的宽度 | 容纳文本或其他行内元素 |
行内块元素 | 一行放多个行内块元素 | 可以设置宽度高度 | 它本身内容的宽度 |
一个模式的元素需要另外一种模式的特性
让文字的行高等于盒子的高度,就可以让文字在盒子内垂直居中
通过CSS背景属性,可以给页面元素添加背景样式
背景属性可以设置背景样式、背景图片、背景平铺、背景图片位置、背景图片固定等
background-color属性定义元素的背景颜色
background-color: transparent;
一般情况下元素背景颜色默认值是transparent(透明)
background-image属性描述了元素的背景图像,常用于logo或者一些装饰性的小图片或者超大的背景图片,优点是非常便于控制位置(精灵图也是一种运用场景)
background-image : none | url(url)
none 无背景图(默认)
url 使用绝对或相地址指定的背景图片
background-repeat属性,在HTML页面上对背景图像进行平铺,
background-repeat: repeat(默认) | no-repeat | repeat-x | repeat-y;
background-position属性可以改变图片在背景中的位置
background-position: x y;
参数x,y表示坐标,可以使用方位名词或者精确单位
参数值说明
参数是方位名词
top | center | bottom | left | center | right
参数是精确单位
参数是混合单位
①如果指定的两个值是精确单位和方位名词混合使用,则第一个值是x坐标,第二个值是y坐标
background-attachment属性设置背景图像是否固定或者随着页面的其余部分滚动(后期可以制作视差滚动的效果)
background-attachment: scroll(默认) | fixed;
可以将这些属性合并简写再同一个属性background中。当简写属性时,没有特定的书写顺序,习惯约定顺序为:
background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置;
CSS提供了背景颜色半透明的效果
background: rgba(0, 0, 0, 0.3)
属性 | 作用 | 值 |
---|---|---|
background-color | 背景颜色 | 预定义的颜色值/十六进制/RGB代码 |
background-image | 背景图片 | url(图片路径) |
background-repeat | 是否平铺 | repeat/ no-repeat /repeat-x/repeat-y |
background-position | 背景位置 | length/position 分别是x 和y坐标 |
background-attachment | 背景附着 | scroll(背景滚动) /fixed(背景固定) |
背景色半透明 | 背景颜色半透明 | background : rgba(0,0,0,0.3);后面必须是四个值 |
CSS有三个非常重要的特性:层叠性、继承性、优先性
给相同选择器设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式,层叠性主要解决样式冲突的问题
层叠性原则:
子标签会继承父标签的某些样式,如文本样式和字号
行高的继承
body { font: 12px/1.5 "Microsoft yahei"; }
当同一个元素指定了多个选择器,就会有优先级的产生
权重
选择器 | 权重 |
---|---|
继承或者 通配符(*) | 0,0,0,0 |
元素选择器(标签选择器) | 0,0,0,1 |
类选择器,伪类选择器 | 0,0,1,0 |
ID选择器 | 0,1,0,0 |
行内样式style="" | 1,0,0,0 |
!important 重要的 | 无穷大 |
!important用法
div { color: pink;!important }
权重的叠加
页面布局要学习三大核心
盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个装内容的容器,封装周围的HTML元素。
盒子模型的组成:
border设置元素的边框,边框有三部分组成:边框宽度 边框样式 边框颜色
border : borde-width || border-style || border-color
border : 1px soilid blue;
border-top: 1px solid red;
表格细线边框
当两相邻单元格都有边框属性时,会产生叠加1+1=2的效果(比如边框粗细加倍),为保持原边框粗细,需要设border-collapse属性
border-collapse属性控制浏览器绘制表格边框的方式,控制相邻单元格的边框
border-collapse: collapse;
边框会额外增加盒子的实际大小,在测量时有两种方案:
padding属性用于设置内边距,即边框于内容之间的距离。
值的个数 | 意义 |
---|---|
padding: 5px; | 1个值,表示上下左右内边距都是5px |
padding: 5px 10px; | 2个值,表示上下内边距时5px,左右内边距是10px |
padding: 5px 10px 20px; | 3个值,表示上内边距是5ox,左右内边距是10px,下内边距是20px |
padding: 5px 10px 20px 30px; | 4个值,表示上右下左的内边距分别为5,10,20,30px |
当我们给盒子指定 padding 值之后:
解决方法:
让width/height减去多出来的内边距大小即可
巧妙应用:
padding不会撑开盒子的情况?
margin(外边距)属性用于设置外边距,即控制盒子和盒子之间的距离
外边距可以让块级盒子水平居中,需要满足两个条件:
.header {
width: 960px;
margin: 0 auto;
}
以下写法也可以
margin-left: auto; margin-right: auto;
margin: auto;
margin: 0 auto;/*更推荐*/
使用margin定义块元素的垂直外边距时,可能会出现外边距合并问题(即1+1=1)
1.相邻块元素垂直外边距的合并
当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有 margin-bottom,下面的元素有margin-top ,则他们之间的垂直间距不是 margin-bottom 与 margin-top 之和。取两个值中的较大者这种现象被称为相邻块元素垂直外边距的合并。
解决方案尽量只给一个盒子添加margin值
2.嵌套块元素垂直外边距的塌陷
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,父元素塌陷较大的外边距值
解决方案:
网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致,因此在布局前,首先要清除网页元素的内外边距。
* {
padding: 0;
margin: 0;
}
行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但转换为块级和行内块元素就可以了。
开始布局前,首先需 1.清除内外边距;2.统一字体样式;3.清除无序列表样式 list-style: none;
清除无序列表的样式(前边小圆点)
li {
list-style: none;
}
- 文字模块中因为每段文字可能占位不同,需要对整个文字段设置宽高,以保证每段文字内容都与下一模块对齐显示
- 盒子中的图片过大时,直接让图片继承父盒子的宽度 width:100%;
- padding和margin的使用选择:当前盒子没有width/height时可用padding,因为不会撑开盒子;盒子与盒子之间的距离用margin
- 根据标签语言选择合理的标签
border-radius属性用于设置元素的外边框圆角(CSS3新增属性)
border-radius:length/*(圆的半径)*/;
radius半径(圆的半径)原理:(椭)圆与边框的交集形成圆角效果
border-top-left-radius:/*左上角*/
border-top-right-radius:/*右上角*/
border-bottom-right-radius:/*右下角*/
border-bottom-left-radius:/*左下角*/
/*先写top/bottom,再写right/left*/
CSS3 中新增了盒子阴影,使用 box-shadow 属性为盒子添加阴影。
box-shadow: h-shadow v-shadow blur spread color inset;
属性 | 作用 |
---|---|
h-shadow | 必需,水平阴影的位置,允许负值(负值往左走) |
v-shadow | 必需,垂直阴影的位置,允许负值(负值往上走) |
blur | 可选,模糊程度(影子虚实,越大越模糊) |
spread | 可选,阴影的尺寸(影子大小) |
color | 可选,阴影的颜色 |
inset | 可选,可将外部阴影改为内部阴影(outset,默认,不可以设置为外部阴影) |
div:hover {
box-shadow:10px 10px 10px -4px rgba(0,0,0,.3);
}
在 CSS3 中,我们可以使用 text-shadow 属性将阴影应用于文本。
text-shadow: h-shadow v-shadow blur color
属性 | 意义 |
---|---|
h-shadow | 必需。水平阴影的位置,允许负值 |
v-shadow | 必需。垂直阴影的位置,允许负值 |
blur | 可选。模糊距离 |
color | 可选,阴影的颜色。 |
网页布局的本质——用CSS来摆放盒子,把盒子摆放到相应位置
CSS提供了三种传统(PC端)布局方式(即盒子如何进行排列顺序):
标签按照默认规定方式排列,标准流是最基本的布局方式
float属性:用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘
选择器 {
float: 属性值;
}
浮动元素会脱离标准流(脱标)
是最重要特性:
浮动的元素会一行内显示并且元素顶部对齐
浮动的元素会具有行内块元素的特性
浮动元素经常和标准流父级搭配使用
为了约束浮动元素位置,网页布局一般采取的策略是:
先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置
清除浮动的意义
清除浮动本质
清除浮动的策略
闭合浮动。即只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子。
选择器 {
clear: 属性值;
}
属性值
清除浮动方法
额外标签法,也称为隔墙法,W3C推荐的做法
额外标签法会在浮动元素末尾添加一个空的标签
要求这个新的空标签必须是块级元素
优点:通俗易懂,书写方便
缺点:添加许多无意义的标签,结构化较差。实际工作可能会遇到,但是不常用
父级添加overflow属性
可以给父级添加overflow属性,将其属性值设置为hidden,auto或scroll
优点:代码简洁
缺点:无法显示溢出的部分
回顾:外边距合并塌陷时也是通过overflow:hidden;(溢出隐藏)解决
父级添加after伪元素
.clearfix:after {
/*clearfix是给父元素指定的class值,可以是任何名字*/
content: "";
dispaly: 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;
}
清除浮动总结
为什么需要清除浮动?
方法 | 优点 | 缺点 |
---|---|---|
额外标签法(隔墙法) | 通俗易懂,书写方便 | 添加许多无意义的标签,结构化较差 |
父级overflow:hidden; | 书写简单 | 溢出隐藏 |
父级after伪元素 | 结构语义化正确 | 兼容性问题 |
父级双伪元素 | 结构语义化正确 | 兼容性问题 |
浮动:可以让多个块级盒子一行没有缝隙排列显示(行内块有缝隙),常用于横向排列盒子
定位:则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子
定位:将盒子定在某一个位置,定位也是在摆放盒子,按照定位的方式移动盒子
定位 = 定位模式 + 边偏移
定位模式
定位模式决定元素的定位方式 ,它通过 CSS 的 position 属性来设置,其值可以分为四个
值 | 意义 |
---|---|
static | 静态定位 |
relative | 相对定位 |
absolute | 绝对定位 |
fixed | 固定定位 |
边偏移
边偏移就是定位的盒子移动到最终位置,有top、bottom、left和right四个属性:
属性 | 例 | 描述 |
---|---|---|
top | top: 80px | 顶端偏移量,定义元素相对于其父元素上边线的距离 |
bottom | bottom: 80px | 底部偏移量,定义元素相对于其父元素下边线的距离 |
left | left: 80px | 左侧偏移量,定义元素相对于其父元素左边线的距离 |
right | right: 80px | 右侧偏移量,定义元素相对于其父元素右边线的距离 |
静态定位时元素的默认定位方式,无定位的意思。
选择器 { position: static; }
相对定位是元素在移动位置的时候,时相对于它原来的位置来说的。
选择器 { position: relative; }
相对定位的特点:
绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的
选择器 { position: absolute; }
绝对定位的特点:
绝对定位盒子水平居中
定位中最常用的一种方式:子级是绝对定位的话,父级要用相对定位
固定定位是元素固定于浏览器可视区的位置,主要使用场景:可以在浏览器页面滚动时元素的位置不会改变
选择器 { position: fixed; }
固定定位的特点:
因为页面中的图片过多,最好不要直接控制图片,而是给每一个图片添加一个盒子
固定定位技巧:固定到版心右侧
让固定定位的盒子贴着版心右侧对齐:
粘性定位可以被认为是相对定位和固定定位的混合,效果:开始时随着页面滚动,到了某个位置时固定在这。
选择器 { position: sticky; top: 10px; }
粘性定位的特点:
定位模式 | 是否脱标 | 移动位置 | 使用频率 |
---|---|---|---|
静态定位static | 否 | 不能使用边偏移 | 很少 |
相对定位relative | 否(占有位置) | 相对于自己本身位置移动 | 常用 |
绝对定位absolute | 是(不占有位置) | 相对于有定位的父级元素移动 | 常用 |
固定定位fixed | 是(不占有位置) | 相对于浏览器的可视区移动 | 常用 |
静态定位static | 否(占有位置) | 浏览器可视区 | 少 |
在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用z-index来控制盒子的前后次序(z轴)
选择器 { z-index: 1; }
绝对定位和固定定位也和浮动(行内块元素性质)类似
脱标的盒子不会触发外边距塌陷
绝对定位(固定定位)会完全压住盒子
本质:让一个元素在页面中隐藏或者显示出来
display属性用于设置一个元素应如何显示
display: none; /*隐藏对象*/
display: block; /*除了转换为块级元素之外,同时还有显示元素的意思*/
visibility属性用于指定一个元素应可见还是隐藏
visibility: visible; /*元素可视*/
visibility: hidden; /*元素隐藏*/
visibility隐藏元素后,继续占有原来的位置
如果隐藏元素想要原来位置,就用visibility: hidden;
如果隐藏元素不想要原来位置,就用display: none;(用处多)
overflow属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度)时的做法
属性 | 内容 |
---|---|
visible | 不剪切内容也不添加滚动条 |
hidden | 不显示超过对象尺寸的内容,超出的部分隐藏掉 |
scroll | 不管是否超出了内容,总是显示滚动条 |
auto | 超出自动显示滚动条,不超出不显示滚动条 |
一般情况下,都不想让溢出的内容显示出来,因为溢出的部分会影响布局
但是如果有定位的盒子,慎用overflow:hidden,因为某些超出部分是故意为之
一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度
因此,为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了CSS精灵技术(也称CSS Sprites、CSS雪碧)
精灵技术目的:为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度
核心原理:将网页中的一些小背景图片整合到一张大图中,这样服务器只需要一次请求就可以了
使用精灵图片核心:
字体图标使用场景:主要用于显示网页中通用、常用的一些小图标
精灵图缺点很明显:
字体图标iconfont技术很好的解决了以上问题,字体图标可以为网页提供一种方便高效的图标使用方法,展示的是图标,本质属于字体
字体图标的优点
总结:
网页中常见的一些三角形,使用CSS直接画出来就可以,不必做成图片或者字体图标
div {
width: 0;
height: 0;
/* 为照顾兼容性 */
line-height: 0;
font-size: 0;
/* 为照顾兼容性 */
border: 50px solid transparent;
border-left-color: pink;
}
设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状
li { cursor: pointer; }
值 | 描述 |
---|---|
default | 小白 默认 |
pointer | 小手 |
move | 移动 |
text | 文本 |
not- allowed | 禁止 |
给表单添加 outline: 0/none; 样式之后,就可以去掉默认的蓝色边框
input { outline: 0/none; }
文本域默认右下角是可以拖拽改变大小的,这样会影响布局,所以需要resize属性防止拖拽文本域
textarea { resize: none; }
CSS的vertical- align属性使用场景:经常用于设置图片或者表单(行内块元素)和文字对齐对齐方式
vertical-align: baseline | top | middle | bottom;
值 | 描述 |
---|---|
baseline | 默认,图片元素放置在文字元素的基线上 |
top | 把图片的顶端与行中最高文字的顶端对齐 |
middle | 把此文字元素放置在图片元素的中部 |
bottom | 把图片元素底端与文字行中最底部对齐 |
bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐,留出了到底线的一部分距离
主要解决方法有两种:
单行文字溢出省略号显示
必须满足三个条件:
先强制一行内显示文本 white-space: nowrap; (默认normal自动换行)
超出的部分隐藏 overflow: hidden;
文字用省略号替代超出的部分 text-overflow: ellipsis;
多行文字溢出省略号显示
多行文本溢出显示省略号,有较大兼容性问题,适合于webkit浏览器或移动端(移动端大部分是webkit内核)
overflow: hidden;
text-overflow: ellipsis;
/* 弹性伸缩盒子模型显示 */
display: -webkit-box;
/* 限制在一个块元素显示的文本的行数 */
-webkit-line-clamp: 2;
/* 设置或检索伸缩盒对象的子元素的排列方式 */
-webkit-box-orient: vertical;
推荐让后台人员来做这个效果,因为后台人员可以设置显示多少个字,操作更简单
让每个盒子margin往左移动-1px,正好压住相邻盒子边框,实现边框1+1=1效果
鼠标经过某个盒子的时候,将边框改为其他颜色:
运用浮动元素不会压住文字的特性
行内块元素可以设置宽高,且在一行上显示,中间有缝隙
对行内块元素的父元素添加text-align: center;实现内容居中
div {
width: 0;
height: 0;
border-color: transparent red transparent transparent;
border-style: solid;
border-width: 22px 8px 0 0;
}
不同浏览器对有些标签的默认值时不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容,需要对CSS初始化,即指重设浏览器的样式(也称为CSS reset)
每个网页都必须首先进行CSS初始化
/* 所有标签的内外边距清零 */
* {
margin: 0;
padding: 0;
}
/* em和i 斜体文字不倾斜 */
em,
i {
font-style: normal;
}
/* 去掉li的小圆点 */
li {
list-style: none;
}
img {
/* border 0 照顾低版本浏览器,如果图片外面包含了链接会有边框的问题 */
border: 0;
/* 取消图片底侧有空白缝隙的问题 */
vertical-align: middle;
}
button {
/* 当鼠标经过butto按钮时,鼠标变成小手 */
cursor: pointer;
}
/*取消链接默认样式*/
a {
color: #666;
text-decoration: none;
}
a:hover {
color: #c81623;
}
button, input {
font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
}
body {
/* CSS3 抗锯齿形,让文字显示的更加清晰 */
-webkit-font-smoothing: antialiased;
background-color: #fff;
font: 12px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
color: #666;
/* "\5B8B\4F53"是宋体的意思,为了浏览器兼容 */
}
.hide, .none {
display: none;
}
/* 清楚浮动 */
.clearfix:after {
visibility: hidden;
clear: both;
display: block;
content: ".";
height:0
}
.clearfix {
*zoom:1
}