1.子代选择器后后代选择器的区别:
后代选择器的写法就是把外层的标记写在前面,内层的标记写在后面,之间用空格分隔。
子选择器只对直接后代有影响的选择器,而对“孙子后代”以及多层后代不产生作用
2.CSS字体速记规则
当用css定义字体样式的时候,你也许会这样做:
font-weight: bold;
font-style: italic;
font-variant: small-caps;
font-size: 1em;
line-height: 1.5em;
font-family: verdana,sans-serif
没有必要这么做,因为你可以使用css速记属性:
font: bold italic small-caps 1em/1.5em verdana,sans-serif
值得注意的是:css速记版本只会在你同时指定 font-size和font-family 属性时才会生效。如果你没有指定font-weight, font-style,或者 font-variant,那么这些值将会自动默认为 normal
3.避免多余选择器
有时候你会有如下的写法:
ul li { ... }
ol li { ... }
table tr td { ... }
但实际上这是没必要的写法,因为<li>会且只会与<ul>或<ol>连用,就像<td>只能存在于<tr>和<table>中一样,这儿真没有把它们重复一次的必要。
4.!Important
所有被!important 标记的样式,即使它后来被重写,浏览器也只会采用被标记的那条。
#content{
height:960px !important;
height:900px;
}
!important: IE7/IE8/IE9/FireFox可以识别上面附加!important的语句,看到附加!important的语句后,就不会再去执行 第二句,尽管他们也“认识”第二句,但是附加“!important”的语句拥有绝对优先级,只要有它存在,第二句就不允许执行。
IE6会执行!important的语句后,再去执行第二句“height:900px”,用后面的样式覆盖了前面的样式,所以在IE6下,最终的height值是900px。
5.@import and<link>
在决定使用使用哪种方法去包含你的样式表之前,你应该明白这两种方法被用来干嘛?
链接式:
link就是把外部CSS与网页连接起来,将其加在<head>头部标签中,具体形式如下:
<link href="styles.css" type="text/css" />
导入样式:
通过两个或以上的css文件共同部分,在css页面引入css文件,通过@import url(” “)
@import url("global.css");
@import url(global.css);
@import "global.css";
以上三种方式都有效,
区别:
1)link属于XHTML标签,而@import是CSS提供的;
2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
3)@import只在IE5以上才能识别,而link是XHTML标签,无兼容问题;
4)link方式的样式的权重 高于@import的权重.
6.行内元素、块元素和空元素
行内元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度、行高及顶部和底部边距不可设置;
3、元素的宽度就是它包含的文字或图片的宽度,不可改变。
行内元素在设置 水平方向的padding-left、padding-right、margin-left、margin-right都产生边距效果,但竖直方向的padding-top、padding-bottom、margin-top、margin-bottom却不会产生边距效果。
html中<span>、<a>、<label>、<input>、 <img>、 <strong> 和<em>就是典型的行内元素(inline)元素。
块级元素特点:
1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行)
2、元素的高度、宽度、行高以及顶和底边距都可设置。
3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
块级元素是可以设置宽高的,但是它的实际宽高是本身宽高+padding。block元素要单独占一行。内联元素不单独占一行,给他设置宽高是没有用的。
块级元素和行内元素列表:
空元素
知名的空元素: <br> <hr> <img> <input> <link> <meta>
鲜为人知的是: <area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
7.长度单位
em
em为相对长度单位,相对于当前对象内文本的字体尺寸(font-size)。比如:Web页面中body的文字大小在用户浏览器下默认渲染是16px,所以,此时的1em = 16px;
in
英寸(Inches)。绝对长度单位。
1in = 2.54cm = 25.4 mm = 72pt = 6pc = 96px
pt
点(Points)。绝对长度单位。
1in = 2.54cm = 25.4 mm = 72pt = 6pc = 96px
small
<small> 标签呈现小号字体效果。
<strong>,<em>和<b>,<i>标签
`<strong>` 标签和 `<em>` 标签一样,用于强调文本,但它强调的程度更强一些。
`em` 是 斜体强调标签,更强烈强调,表示内容的强调点。相当于html元素中的 `<i>...</i>`;
`< b > < i >` 是视觉要素,分别表示无意义的加粗,无意义的斜体。
em 和 strong 是表达要素(phrase elements)。
b标签和i标签的区别:
b 元素现在描述为在普通文章中仅从文体上突出的不包含任何额外的重要性的一段文本。
例如:文档概要中的关键字,评论中的产品名。或者代表强调的排版方式。
i 元素现在描述为在普通文章中突出不同意见或语气或其他的一段文本,
例如:一个分类名称,一个技术术语,一个外语中的谚语,一个想法等。或者代表斜体的排版方式。
8.css float属性
浮动的工作原理:
浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。
浮动元素引起的问题和解决办法?
浮动元素引起的问题:
(1)父元素的高度无法被撑开,影响与父元素同级的元素
(2)与浮动元素同级的非浮动元素会跟随其后
(3)若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构
1,额外标签法,<div style="clear:both;"></div>(缺点:不过这个办法会增加额外的标签使HTML结构看起来不够简洁。)
2,使用after伪类
#parent:after{
content:".";
height:0;
visibility:hidden;
display:block;
clear:both;
}
3,浮动外部元素
4, 给包含浮动元素的父标签添加css属性 overflow:auto或者hidden; zoom:1; zoom:1用于兼容IE6
9.text 文本属性
text-indent
text-indent 属性规定文本块中首行文本的缩进。
注释:允许使用负值。如果使用负值,那么首行会被缩进到左边。使用一个较大的负值进行缩进的话,文字将被隐藏,如-9999em
letter-spacing与word-spacing
letter-spacing 属性与 word-spacing 的区别在于,前者是修改字母的间隔,后者是修改单词或单个文字的间隔
text-transform
text-transform 属性处理文本的大小写。这个属性有 4 个值:
none
uppercase:所有的单词都大写
lowercase:所有的单词都小写
capitalize:只对每个单词的首字母大写
text-decoration
text-decoration 有 5 个值:
none
underline:下划线
overline:上划线
line-through:在文本中间画一个贯穿线
blink:让文本闪烁
white-space
pre-line 合并空白符序列,但保留换行符
normal
nowrap 防止元素中的文本换行
pre 空白符不会被忽略
pre-wrap 保留空白符序列
10.常见兼容性问题
* png24位的图片在iE6浏览器上出现背景,解决方案是做成PNG8.也可以引用一段脚本处理.
* 浏览器默认的margin和padding不同。解决方案是加一个全局的*{margin:0;padding:0;}来统一。
* IE6双边距bug:块属性标签float后,又有横行的margin情况下,在ie6显示margin比设置的大。
* 浮动ie产生的双倍距离(IE6双边距问题:在IE6下,如果对元素设置了浮动,同时又设置了margin-left或margin-right,margin值会加倍。)
#box{ float:left; width:10px; margin:0 0 0 100px;}
这种情况之下IE会产生20px的距离,解决方案是在float的标签样式控制中加入 ——_display:inline;将其转化为行内属性。(_这个符号只有ie6会识别)
* 渐进识别的方式,从总体中逐渐排除局部。
首先,巧妙的使用“\9”这一标记,将IE游览器从所有情况中分离出来。
接着,再次使用“+”将IE8和IE7、IE6分离开来,这样IE8已经独立识别。
css
.bb{
background-color:#f1ee18;/*所有识别*/
.background-color:#00deff\9; /*IE6、7、8识别*/
+background-color:#a200ff;/*IE6、7识别*/
_background-color:#1e0bd1;/*IE6识别*/
}
* IE下,可以使用获取常规属性的方法来获取自定义属性,
也可以使用getAttribute()获取自定义属性;
Firefox下,只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性.
* IE下,event对象有x,y属性,但是没有pageX,pageY属性;
Firefox下,event对象有pageX,pageY属性,但是没有x,y属性.
* 解决方法:(条件注释)缺点是在IE浏览器下可能会增加额外的HTTP请求数。
* Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示,
可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决.
* 超链接访问过后hover样式就不出现了
被点击访问过的超链接样式不在具有hover和active了解决方法是改变CSS属性的排列顺序:
L-V-H-A : a:link {} a:visited {} a:hover {} a:active {}
© 著作权归作者所有