css重点问题记忆

1.浮动元素会被自动设置成块级元素,相当于给元素设置了display:block(块级元素能设置宽和高,而行内元素则不可以)。

2.:after伪类IE不支持

3.

jQuery实现水平和垂直居中

jQuery实现水平和垂直居中的原理就是通过jQuery设置DIV的CSS,获取DIV的左、上的边距偏移量,边距偏移量的算法就是用页面窗口的宽度减去该DIV得宽度,得到的值再除以2即左偏移量,右偏移量算法相同。注意DIV的CSS设置要在resize()方法中完成,就是每次改变窗口大小时,都要执行设置DIV的CSS,代码如下:

 
$(window).resize(function(){ 
    $(".mydiv").css({ 
        position: "absolute"
        left: ($(window).width() - $(".mydiv").outerWidth())/2
        top: ($(window).height() - $(".mydiv").outerHeight())/2 
    });        
}); 

此外在页面载入时,就需要调用resize()。

 
$(function(){ 
    $(window).resize(); 
}); 

此方法的好处就是不需要知道DIV的具体宽度和高度大小,直接用jQuery就可以实现水平和垂直居中,而且兼容各浏览器,这个方法在很多的弹出层效果中应用。

4.

CSS Hack常见的有三种形式:CSS属性Hack、CSS选择符Hack以及IE条件注释Hack, Hack主要针对IE浏览器。

1、属性级Hack:比如IE6能识别下划线”_”和星号” * “,IE7能识别星号” * “,但不能识别下划线”_”,而firefox两个都不能认识。

2、选择符级Hack:比如IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。

3、IE条件注释Hack:IE条件注释是微软从IE5开始就提供的一种非标准逻辑语句。比如针对所有IE:<!–[if IE]><!–您的代码–><![endif]–>,针对IE6及以下版本:<!–[if lt IE 7]><!–您的代码–><![endif]–>,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都 会生效。

PS:条件注释只有在IE浏览器下才能执行,这个代码在非IE浏览下被当做注释视而不见。可以通过IE条件注释载入不同的CSS、JS、HTML和服务器代码等。

/* CSS属性级Hack */
color:red; /* 所有浏览器可识别*/
_color:red; /* 仅IE6 识别 */
*color:red; /* IE6、IE7 识别 */
+color:red; /* IE6、IE7 识别 */
*+color:red; /* IE6、IE7 识别 */
[color:red; /* IE6、IE7 识别 */
color:red\9; /* IE6、IE7、IE8、IE9 识别 */
color:red\0; /* IE8、IE9 识别*/
color:red\9\0; /* 仅IE9识别 */
color:red \0; /* 仅IE9识别 */
color:red!important; /* IE6 不识别!important*/
-------------------------------------------------------------
/* CSS选择符级Hack */
*html #demo { color:red;} /* 仅IE6 识别 */
*+html #demo { color:red;} /* 仅IE7 识别 */
body:nth-of-type(1) #demo { color:red;} /* IE9+、FF3.5+、Chrome、Safari、Opera 可以识别 */
head:first-child+body #demo { color:red; } /* IE7+、FF、Chrome、Safari、Opera 可以识别 */
:root #demo { color:red\9; } : /* 仅IE9识别 */
--------------------------------------------------------------
/* IE条件注释Hack */
<!--[if IE]>此处内容只有IE可见<![endif]--> 
<!--[if IE 6]>此处内容只有IE6.0可见<![endif]--> 
<!--[if IE 7]>此处内容只有IE7.0可见<![endif]--> 
<!--[if !IE 7]>此处内容只有IE7不能识别,其他版本都能识别,当然要在IE5以上。<![endif]-->
<!--[if gt IE 6]> IE6以上版本可识别,IE6无法识别 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
<!--[if lt IE 7]> 低于IE7的版本才能识别,IE7无法识别。 <![endif]-->
<!--[if lte IE 7]> IE7以及IE7以下版本可识别<![endif]-->
<!--[if !IE]>此处内容只有非IE可见<![endif]-->

5.!important一般用来做区分IE6和Firefox等浏览器的基本Hack手法。因为IE6不支持!important,而Firefox能读懂!important,其改变了样式的优先级。其实IE6在某些情况下,也能认识!important。

6.
#my.c1.c2 { color:red;}
.c1.c2 { color:red;}

以上写法在IE7+/FF/Opera/Safari 等浏览器都支持。

但在IE6中,后一个类名会覆盖前一个类名,也就是说,上例被IE6理解为:

复制代码
代码如下:

#my.c2 { color:red;}
.c2 { color:red;}

同理:

复制代码
代码如下:

#my.c1.c2.c3 { color:red;}

IE6理解为 #my.c3 {color:red;}

复制代码
代码如下:

.c1.c2.c3 { color:red;}

IE6理解为 .c3 { color:red; }

所以开发中用多类来组合实现css效果的时候,注意IE6的这个问题。最好的方法就是,不要用类组合的形式。


1.

normalize.csss解决css兼容性问题,Normalize.css是一种CSS reset的替代方案,reset 太暴力了,这个 normalize 相对要温柔很多。

创造normalize.css有下面这几个目的:

  • 保护有用的浏览器默认样式而不是完全去掉它们
  • 一般化的样式:为大部分HTML元素提供
  • 修复浏览器自身的bug并保证各浏览器的一致性
  • 优化CSS可用性:用一些小技巧
  • 解释代码:用注释和详细的文档来

Normalize.css支持包括手机浏览器在内的超多浏览器,同时对HTML5元素、排版、列表、嵌入的内容、表单和表格都进行了一般化。尽管这个项目基于一般化的原则,但我们还是在合适的地方使用了更实用的默认值。


2.

outline-offset

相信很多开发者在写CSS的时候对下面的语句会很熟悉:

input {
    outline : none;
}

input:focus {
    outline : none;
}

这就是将input输入框去掉默认的蓝线框的方法。其实,这里还有说一个就是,CSS中还有一个outline-offset属性,在这个属性中,你可以设置默认线框的距离;像这样

input {
    outline-offset: 4px ;
}

调节该属性值的大小你就可以看到outline的距离变化了。


3.

当用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-sizefont-family 属性时才会生效。如果你没有指定font-weightfont-style,或者 font-variant,那么这些值将会自动默认为 normal


4.

 1link属于XHTML标签,而@import是CSS提供的; 
    2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载; 
    3@import只在IE5以上才能识别,而link是XHTML标签,无兼容问题; 
    4link方式的样式的权重 高于@import的权重.
5.

visibility:hidden和display:none

display:none  隐藏对应的元素,在文档布局中不再给它分配空间,它各边的元素会合拢,
就当他从来不存在。

visibility:hidden  隐藏对应的元素,但是在文档布局中仍保留原来的空间。

使用CSS display:none属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在。

6.

链接伪类

a:link {color: black}     /* 未访问的链接 */
a:visited {color: blue}  /* 已访问的链接 */
a:hover {color: red}    /* 当有鼠标悬停在链接上 */
a:active {color: purple}   /* 被选择的链接 */

为了产生预期的效果,在 CSS 定义中,a:hover 必须位于 a:link 和 a:visited 之后!a:active 必须位于 a:hover之后!!

7.

cellpadding与cellspacing

cellpadding(表格填充) -- 代表单元格外面的一个距离,用于隔开单元格与单元格空间
cellspacing(表格间距) -- 代表表格边框与单元格补白的距离,也是单元格补白之间的距离

html_table.png


8.vertical-align:middle对块级元素根本不起作用



font-size中的em和百分比的区别是什么呢

既然font-size也可以用百分比或者em表示,而em来自于父元素的大小,那么百分比和em的功能不就相同了么?以前似乎说em表示的是默认字体的大小

2015-03-22 源自:HTML+CSS基础课程 15-1 970 浏览 2 回答

很有趣的问题,在font-size里面是没什么区别的,em是测量单位来的,在font-size表示默认字体的倍数,百分百也是表示默认字体的百分比,不过在其他代码也就不一样了。

比如在text-index(首行缩进):2em(缩进2字符);和text-index:200%(缩进200%);效果是不一样的。

(代码如下:)

所以,人们为了便于记忆,一般设置为em,来代表字符的大小(或者是倍数);

如果觉得我说的好,请给个赞吧!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
< html >
< head  lang = "en" >
     < meta  charset = "UTF-8" >
     < title ></ title >
     < style >
         *{
             font-size: 12px;
         }
         div{
             font-size: 16px;
             width:100px;
         }
         .test01{
             text-indent: 2em;;
         }
         .test02{
             text-indent: 200%;
         }
     </ style >
</ head >
< body >
     < div >
         < p  class = "test01" >sdfalsdfsdfa</ p >
         < p  class = "test02" >sdfalsdfsdfa</ p >
     </ div >
</ body >
</ html >


2015-03-22
 回复   1

在定义字体大小的时候,2em和200%是一样的效果,因为前者表示2个字符的大小,后者表示默认字体大小的两倍,效果上应该没什么区别吧。在实际开发中一般不会使用em或者百分比去定义font-size,通常使用像素大小,例如:font-size:14px;font-size:12px;font-size:20px;等等。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值