您的位置:首页 > Web前端 > CSS

css常见问题小结

2014-04-25 13:56 260 查看
css不是那么熟悉。权当记录一下遇到的问题,也算是积累学习经验吧。

-----------------------------------------------------------------------------------------------------------------------------

上下左右居中

假设有个登陆页面 页面中的登陆框会是上下左右居中显示的。

<div id="main">DIV水平居中和上下垂直居中</div>

那么css这样定义

#main{

position:absolute;

width:400px;

height:200px;

left:50%;

top:50%;

margin-left:-100px;

margin-top:-200px

}

这里我们应用absolute绝对定位放置div,然后设置宽高,左右设置为50%,

此时并未居中因为50%是根据div左上角计算的,所以我们利用margin-left以及margin-top取值为宽高的一半,并且取负值将其居中。

这样结果就完美居中了。。

----------------------------------------------------------------------------------------------------------------

清除浮动

.clearfix:after {

visibility:hidden;

display:block;

font-size:0;

content:" ";

clear:both;

height:0;

}

.clearfix {

zoom:1;

}

其原理是,在「高级」浏览器中使用 :after 伪类在浮动块后面加上一个非 display:none 的不可见块状内容来,

并给它设置 clear:both 来清理浮动。在 ie6 和 7 中给浮动块添加 haslayout 来让浮动块撑高并正常影响文档流

----------------------------------------------------------------------------------------------------------------

CSS优先级

!important>id>class>tag

!important比内联样式优先级更高

----------------------------------------------------------------------------------------------------------------

CSS单位px与em区别

这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷。我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大。平时都是用px来定义字体,所以无法用浏览器字体放大的功能,而国外大多数网站都可以在IE下使用。因为

1、IE无法调整那些使用px作为单位的字体大小;

2、国外的大部分网站能够调整的原因在于其使用了em作为字体单位;

3、Firefox能够调整px和em,但是96%以上的中国网民使用IE浏览器(或内核)。

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册)

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册)

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

em有如下特点:

1、em的值并不是固定的;

2、em会继承父级元素的字体大小。

所以我们在写CSS的时候,需要注意两点:

1、body选择器中声明Font-size=62.5%;

2、将你的原来的px数值除以10,然后换上em作为单位;

3、重新计算那些被放大的字体的em数值。避免字体大小的重复声明。

也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。

但是12px汉字例外,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而是稍大一点。这个问题 Jorux已经解决,只需在body选择器中把62.5%换成63%就能正常显示了。原因可能是IE处理汉字时,对于浮点的取值精确度有限。不知道有没有其他的解释。

----------------------------------------------------------------------------------------------------------------

css之hack

1.区别ie与非ie浏览器

#tip{background:blue;/*非IE背景藍色*/

background:red\9;/*IE6、IE7、IE8背景紅色*/

}
2.区别ie678

#tip{

background:blue;/*Firefox背景变蓝色*/

background:red\9;/*IE8背景变红色*/

*background:black;/*IE7背景变黑色*/

_background:orange;/*IE6背景变橘色*/

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: