资讯专栏INFORMATION COLUMN

读后总结--精通css高级web标准解决方案(第二版)

leone / 2971人阅读

摘要:无论是否移动,元素仍然占据原来的空间。绝对定位绝对定位使元素的位置与文档流无关,因此不占据空间。

为啥读这本书

现在前端圈子过于浮躁,掌握基础无疑比掌握一个js框架重要

css怎么都能写出来,但是要写的好写得快还得多读书

css魔法推荐的,读完这个读读css揭秘

当然,根本原因还是觉得自己掌握不好

开始总结吧~ 一. 基础知识

经过上世纪没有 css的痛苦时的混沌时期,人们开始了进步之路
1.语义化标签:提高可读性和更合适默认样式
2.设置ID和类名:上一步的加强,同时也为样式提供钩子(hook)
3.如何分配ID和类名:保持与表现方式无关,应该根据“他们是什么”,而不是“它们外观如何命名”
4.选择ID还是类名:类应该应用于概念上相似的元素,这些元素可以出现在同一个页面上的多个位置,而ID应该应用于不同的唯一的元素
5.不应该乱用类名:这样会导致文档增加很多无意义的类,可以结合后代选择器+标签选择器的形式避免
6.删除不必要的div:比如ul外套div是完全没有必要的
7.css版本

  版本     时间    特点
  css1    1996    字体颜色外边距等
  css2    1998    增加浮动,等位以及更高级的选择器
  css2.1  2002    修正上一个版本错误,精确的描述css的浏览器实现
  css3    

8.html版本

  版本         时间    特点
  html4.01    1999
  xhtml1.0    2000    4.01的xml版本,语法严格按照xml格式
  html5
  xhtml2              流产

9.文档类型:通过读取doctype来了解试用哪个文档类型定义(DTD),由此知道使用html哪个版本,并添加有效性验证
10.浏览器呈现模式:标准模式、混杂模式(向后兼容,但会导致意想不到的bug)、几乎标准模式
11.DOCTYPE切换对应的呈现模式:详情可查看https://hsivonen.fi/doctype/

二. css选择器

1.常用选择器(现代浏览器制霸):标签选择器,后代选择器,ID选择器,类选择器,通用选择器
2.伪类选择器:根据文档结构之外的其他条件对元素应用样式

:link和:visited称为链接伪类,只能应用于锚元素
:hover、:active、:focus称为动态伪类,上可以应用于任何元素
:hover、:active,IE6只能应用于锚链接:focus完全忽略
:active、:focus,IE7完全忽略但:hover正常使用

3.高级选择器:IE6不支持,但是不会导致css报错,会忽略。请记住,对于重要功能或站点功能避免使用(不考虑兼容老浏览器除外)

子选择器(>)、相邻选择器(+):IE7支持,但html元素之间不能有注释

属性选择器

4.css使用优先级:用户!important>作者!important>作者>用户>浏览器默认
5.选择器使用优先级:所有选择器基数相加最高者显示

内联样式:                   1000
ID选择器:                   100
类、伪类、属性选择器:         10
标签选择器、伪标签选择器:      1

6.继承:有的css属性会继承
7.@import:这种方法可以引用css文件,但是会导致文档加载缓慢,不建议使用
8.注释:/**/主要用于分割css结构
9.css结构分割:作者提倡使用单一css,不敢苟同,可使用scss等编译工具来优化编码(不过写这本书时候没有),但css结构分割时必须的,以免结构混乱
10.优化样式表:删除注释,删除无用空格换行,开启gzip压缩

三. 盒模型

1.概述:页面上每个元素被看做一个矩形框,这个框由元素的内容(content)、内边距(padding)、边框(boder)和外边框(margin)组成。此外,css2.1增加outline属性(IE7以下不支持),与border属性不同,outline绘制在元素框之上,所以不影响元素的大小或定位
2.标准盒模型宽度:盒子宽度 = contentWidth + padding(Left + Right) + boder(Left + Right) + margin(Left + Right),即如果设置元素宽度表面只设置content宽度
3.IE盒模型:盒子宽度 = 设置元素的宽度,即padding,boder,margin都从盒子内算起,content占剩下部分(其实挺科学的不是)
4.box-sizing:css3的这一属性可以指定盒模型为标准盒模型还是IE盒模型
5.外边距叠加:当两个或更多垂直外边距相遇时,它们将形成一个外边距。这个外边距的高度等于两个发生叠加的外边距的高度中的较大者,另外,行内框、浮动框或绝对定位框之间的外边距不会叠加。
6.定位概述:

名称               属性            例            特点
块框(块级元素)   display:block;    p、h1、div     一般从上到下一个一个排列
行内框(内联元素) display:inline;    a、span       水平排列,可使用垂直内边距、边框、外边距,但不能使用水平内边距、边框、外边距;修改高度唯一方法是修改行高

7.display:inline-block;css2.1新属性(>=IE8)将块级元素像行内元素显示
8.匿名块框:将一些文本添加到一个块级元素的开头时,可以:first-line为元素指定样式

匿名块级元素
块级元素

9.相对定位:相对定位的元素,它将出现在它所在位置,然后通过设置垂直或水平位置,让这个元素“相对于”他的起点移动。无论是否移动,元素仍然占据原来的空间。
10.绝对定位:

绝对定位使元素的位置与文档流无关,因此不占据空间。

绝对定位元素相对于距离它最近的那个已定位的祖先元素确定。如果元素没有已定位元素,那么就相对于画布或html元素

z-index会控制这些框的叠放次序。

IE6bug:相对于的相对定位框的右边或下面时,相对定位框需要设定尺寸,要不然会相对于画布

11.浮动

浮动的框可以左右移动,知道它的外边缘碰到包含框或另一个浮动块的边缘。

浮动框不再文档的普通流中,所以普通流中的块框表现的就像浮动框不存在一样

浮动框会让文本元素缩进环绕

阻止环绕可以为其使用clear属性(其原理是给文本内容足够且精确的高度)

父元素内部的子元素如果使用浮动会使得父元素高度塌陷

父元素高度塌陷和清除浮动的解决方法

.clearfix:after{content:"";display:table;clear:both}
.cleafix{*zoom:1;}
或者
.clearfix:after{content:"";display:block;overflow:hidden;clear:both}
.cleafix{*zoom:1;}

四. 背景图像

1.背景图像基础

基础用法:background-image:url(/img/pattern.gif);

平铺:background-repeat:repeat-x;

背景颜色(没有被覆盖图片的区域会显示此颜色,在渐变末尾比较常用):background-color:#ccc;

可以为背景区域设定宽高,多用于显示logo

背景图片显示位置(标题上添加项目符号,如点):background-position:left center;

background-position也可以设置数字;如果是像素,会以图片左上角为对应点出现在背景图片指定位置;如果是百分比:会以图片上的指定数字为对应点

背景css简写:background:#ccc url(/img/bullet.gif) no-repeat left center;

2.圆角框

固定宽度圆角框:两个圆角背景图 一个位于框顶 一个位于框底

HeadLine

Content

.box{
    width:419px;
    background:#effce7 url(/img/bottom.gif) no-repeat left bottom;
}

.box h2{
    background:url(/img/top.gif) no-repeat left top;
}
p.content也可以设置背景颜色 但要保证repeat-y

滑动门圆角框:与固定宽度相似,不过把圆角设定在左上、左下、右上、右下并指定父容器宽度,嵌套很复杂 不推荐

css3实现圆角1:多个背景图片

HeadLine

Content

.box{
    background-image: url(/img/top-left.gif),
                      url(/img/top-right.gif),
                      url(/img/bottom-left.gif),
                      url(/img/bottom-left.gif),
    background-repeat: no-repeat,
                       no-repeat,
                       no-repeat,
                       no-repeat,
    background-position: top left,
top right,
bottom left,
bottom right,
}
不支持浏览器会显示直角框

css3实现圆角2:border-radius

.box{
    -moz-border-radius:1em;
    -webkit-border-radius:1em;
    border-radius:1em;
}

css3实现圆角3:border-image

.box{
    -webkit-border-image:url(/img/corners.gif) 25% 25% 25% 25% / 25px round round;
}

将背景图片分为9个宫格 中间部分为内容 其他部分为边框

3.阴影

简单css阴影 : div.阴影 > img

.img-wrapper{
    background: url(/img/shadow.gif) no-repeat bottom right;
    // 为了div具有水平伸展性把div浮动
    clear:right;
    float:left;
}
img{
    margin:-5px 5px 5px -5px;
    /* 也可以用相对位置进行偏移
        position:relative;
        left:-5px;
        top:-5px;
     */
}

box-shadow

img{
    -webkit-box-shadow:3px 3px 6px #666;
    -moz-box-shadow:3px 3px 6px #666;
    box-shadow:3px 3px 6px #666; // 垂直偏移 水平偏移 阴影宽度 阴影颜色
}

4.透明度

css不透明度:其子元素会继承 不建议使用

.alert{
    opacity:0.8;
    filter:alpha(opacity=80); // ie老浏览器使用方法
}

RGBa

.alert{
    background-color:rgba(0,0,0,0.8);
}

PNG透明度:png文件支持透明度,但是IE6不直接支持,hack方法如下或使用htc文件显示

filter:progid:DXImageTransform.Microsoft.AlphaImageLoader
(src=/img/my-image.png",sizingMethod="crop");
// 此行代码会导致css无效,建议多带带提出或者使用ie6条件注释

五. 对链接应用样式

1.简单的链接样式

链接伪类选择器

:hover{} // 鼠标悬停处的元素
:active{} // 被激活点击的元素
:focus{} // 通过键盘移动到元素上时,应该与悬停(hover)一样

链接伪选择器浏览器支持:IE7以下不支持在除链接之外的其他元素使用伪类选择器

链接伪选择器顺序很重要,不对的话可能导致失效

a:link, a:visited, a:hover, a:focus, a:active

2.链接下划线

简单的链接修饰:text-decoration: none/underline;或者边框替代

奇特的链接下划线

// 图片下划线
a:link, a:visited {
    color:#666;
    text-decoration:none;
    background:url(/img/underline.gif) repeat-x left bottom;
}

//动画下划线
a:hover, afocus, a:active{
    background-image:url(/img/underline-hover.gif);
}

3.已访问链接的样式:防止用户回溯 可以在visited选择器中加一个已访问图片

// 图片下划线
a:visited {
    padding-right:20px;
    background:url(/img/underline.gif) no-repeat right middle;
}

4.为链接目标设置样式:如果想为被链接的锚点设置样式可以选择:target伪类选择器,为css3属性
5.突出显示不同类型的链接:为了区分站内、站外、邮件、等不同种类链接形式可以在链接后加一个图片区分

a[href^="http:"] {
    padding-right:20px;
    background:url(/img/externalLink.gif) no-repeat right top;
}

6.创建类似按钮的链接:链接只能用于请求数据,而不是更改数据

a{
    display:block;
    width:6.6em;
    line-height:1.4;
    text-align:center;
    text-decoration:none;
    border:1px solid #66a300;
    background-color:#8cca12;
    color:#fff;
}

简单的鼠标改变颜色效果

a:hover, a:focus{
    background-color:#f7a300;
    border-color:#ff7400;
}

鼠标改变图像效果:原理和上面一样,不过需要把text-indent设置为看不见的位置,并且图片和按钮css大小一致

Pixy鼠标改变图像效果:使用上述方法会出现因为再次请求而导致图片闪烁问题,建议使用雪碧图方法,不过在IE上依旧会再次请求导致闪烁,使用下面css可以缓存IE背景图片

html{
    filter: expression(document.execCommand("BackgroundImageCache",false,true));
}

纯css工具提示:当鼠标悬停在元素上时出现提示,核心代码如下:

a.tooltip{
    position:relative;
}
a.tooltip:hover span{
    display:block;
    position:absolute;
    top:1em;
    left:2em;
}

六. 列表样式和创建导航条

1.基本列表样式

为了添加定制的项目符号,可以使用list-style-image属性,但是这种方法对图像位置控制能力不强。更常用的方法是关闭项目符号,并且将定制的项目符号作为背景添加到列表元素上

需要将列表的内外边距设置为0

ul{
    margin:0;
    padding:0;
    list-style-type:none;
}
li{
    background:url(/img/bullet.gif) no-repeat 0 50%;
    padding-left:30px;
}

2.水平导航条:实现思路float:left;

持续更新中。。。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/115301.html

相关文章

  • 说说我的web前端之路,分享些前端的好书

    摘要:推荐高性能网站建设指南高性能网站建设进阶指南理由在读完前几本书之后我们对前端的性能和自己的代码的效率已经达到相当的高度了,然后我们在接触一些前端工程师的一些精髓。   WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解JavaScript或者是刚...

    PascalXie 评论0 收藏0
  • 说说我的web前端之路,分享些前端的好书

    摘要:推荐高性能网站建设指南高性能网站建设进阶指南理由在读完前几本书之后我们对前端的性能和自己的代码的效率已经达到相当的高度了,然后我们在接触一些前端工程师的一些精髓。   WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解JavaScript或者是刚...

    xiaokai 评论0 收藏0
  • 说说我的web前端之路,分享些前端的好书

    摘要:推荐高性能网站建设指南高性能网站建设进阶指南理由在读完前几本书之后我们对前端的性能和自己的代码的效率已经达到相当的高度了,然后我们在接触一些前端工程师的一些精髓。   WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解JavaScript或者是刚...

    Integ 评论0 收藏0
  • 说说我的web前端之路,分享些前端的好书

    摘要:推荐高性能网站建设指南高性能网站建设进阶指南理由在读完前几本书之后我们对前端的性能和自己的代码的效率已经达到相当的高度了,然后我们在接触一些前端工程师的一些精髓。   WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才。本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解JavaScript或者是刚...

    sugarmo 评论0 收藏0
  • 资源大放送

    摘要:这是我收集的一些资源,分享给大家,全部放在百度网盘,有需要的请转存到自己的网盘或者下载,以免网盘链接失效,另外还有几百的视频文件存在网盘,需要的加全部分享在空间,自己可以去下载与权威指南配套源码禅意花园高清源码基础教程权威指南参考手册锋利 这是我收集的一些资源,分享给大家,全部放在百度网盘,有需要的请转存到自己的网盘或者下载,以免网盘链接失效,另外还有几百G的视频文件存在网盘,需要的加...

    lidashuang 评论0 收藏0

发表评论

0条评论

leone

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<