1.对DOM设置CSS样式的方法有?
(1)外部样式表。引入一个外部CSS文件;样式表以.css扩展名进行保存;
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
(2)内部样式表。将CSS代码放在head标签内部;
<head>
<style type="text/css">
hr {color: sienna;}
p {margin-left: 20px;}
body {background-image: url("images/back40.gif");}
</style>
</head>
(3) 内联样式,将CSS样式直接定义在HTML元素内部;
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>
(4)@import导入样式
<head>
<style type=”text/css”>
@import url("global.css"); //三种任意一种都行,结尾必须有分号
@import url(global.css);
@import "global.css";
</style>
</head>
2. link和@import的区别
将样式定义在单独的.css的文件里,link和@import都可以在html页面引入css文件。
link方式:
<link rel=”stylesheet” type=”text/css” href=”aa.css”>
@import方式:
<head>
<style type=”text/css”>
@import url("global.css"); //三种任意一种都行,结尾必须有分号
@import url(global.css);
@import "global.css";
</style>
</head>
link和@import两种导入css文件的区别:
- 祖先的差别。Link属于XHTML标签,Link标签除了可以加载CSS外,还可以做很多其他的事情,比如定义RCC,定义rel连接属性等;而@import完全是CSS提供的一种方式,只能加载css了。
- 加载顺序的差别。当一个页面被加载的时候,link引用的CSS会同时被加载,而@import引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢时更为明显。
- 兼容性的差别。由于@import是CSS2.1提出的所有老的浏览器不支持,@import只有在IE5以上的才能识别,而link是XHTML标签 ,无兼容问题 。
- 使用DOM控制样式时的差别。当使用JavaScript控制DOM去改变样式的时候,只能使用link标签,因为@import不是DOM可以控制的。
- @Import可以在css中再次引入其他样式表,比如可以创建一个主样式表,在主样式表中再引入其他的样式表。
3. 四种CSS样式表的优先级顺序比较
当四种方式中有相同的属性的时候,它们的优先级:
!important>内联>内部>@import>link (同等优先级下,以最后定义的样式为准,!important比内联高。 )
4.css样式表的层叠性
5.使得一个DOM元素不显示在浏览器的可视范围内?
最基本的:
设置display属性为none,或者设置visiblity为hidden。
技巧性:
设置高度height为0,设置透明度opacity为0,设置z-index位置为-1000.
注: z-index:
该属性设置一个定位元素沿 z 轴的位置,z 轴定义为垂直延伸到显示区的轴。如果为正数,则离用户更近,为负数则表示离用户更远。
此属性设置元素的堆叠顺序,Z-index 仅能在定位元素上奏效,元素可拥有负值。
6 display:none和visiblity:hidden的区别是什么?
visiblity: 隐藏对应元素,但挤占该元素原来的空间。
display: 隐藏对应元素,并且不挤占该元素原来的空间。
即是,使用CSS display:none属性后,HTML元素(对象)的宽度、高度等各种属性都将“丢失”;
而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置任然存在。
推荐使用display来创建不占据页面空间的不可见元素。
7. 简要说一下CSS的元素分类
元素类型: 块状元素、行内元素(内联元素)、行内块元素。
块状元素:
- div---块级元素
- h1-h6---标题
- form---表单
- p----段落
- ul ---非排序列表
- ol----排序列表
- hr----水平分割线
- menu---菜单列表
- dl----定义列表
- table---表格
行内元素:
- a便签
- br换行
- i 斜体
- em强调
- strong粗体强调
- img图片
- input输入框
- label表格标签
8. 行内元素和块级元素的区别?行内元素的padding和margin可设置吗?
块级元素(block)特性:
总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示。
width、height、padding(内边距)、margin(外边距)都可控制。
内联元素(inline)特性:
宽度、高度、内边距的padding-top/padding-bottom和外边距的margin-top、margin-bottom都不可改变(也就是padding和margin的left和right是可以设置的)。
这里还有其他问题。浏览器还有默认的天生inline-block元素(拥有内在尺寸,可设置高宽,但不会自动换行), 有哪些元素是天生inline-block元素?
它们是<input>、<img>、<button>、<textare>、<label>。
9. link、visited、hover、active
被点击访问过的超链接样式不再具有hover和active了,解决方式是改变CSS属性的排列顺序:L-V-H-A(linked, visited, hover, active)。
在 CSS 定义中,:hover 必须位于 :link 和 :visited 之后(如果存在的话),这样样式才能生效。
在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。
- a:link //未被访问状态 未被访问的链接
- a:visited //已被访问状态
- a:hover //和鼠标悬停状态
- a:active // 活动状态