‘壹’ 采用 CSS+DIV布局网站
SEO的优化需要从各个方面实行,才能使其尽可能的符合搜索引擎的排名规则.SEO是一个大工程,下面就让我们从六个方面来讲述一下如何优化一个网站.
一.域名主机的选择,网站域名中包含的关键字尽量少些,尽量简短; 如果你使用的虚拟主机,没有被搜索引擎惩罚过;哪么你就可以根据不同语言,选择不同地方的主机.
二.关键词的选择
1. 关键词定位:你必须要先确定主推关键词和次要关键词是那些,同时你也要尽量避免选择竞争过于激烈的或过于冷门的词语.
2. 关键词分布:先要做好关键词布局,根据关键词的主次作用对应的分布到网页中去,同时也要避免把大量关键词放在一个网页中.
3. 关键词密度:控制关键词的密度,因为关键词的密度过高或则过低都会对排名不利,甚至搜索引擎遭到惩罚.
三.符合搜索引擎网页设计
1. 目录结构URL优化,目录结构不要超过三层
2.内链优化,导航中包含目录页面;确保每个子页面都有链接回到主页面和其它的重要页面;相关内容页之间互链;建立网站地图,使搜索引擎更好的抓取网页.
3. 图像,图片尽量少用,用ALT标签注明该图片的信息,并在图片周围写上关于该图片的文字描述.图片文件名.因为搜索引擎看不懂图片,只识文字.
4. 网页减肥,减少一些累赘代码,如把脚本写到一个文件中调用,使用DIV+CSS等,减小网页的大小,提高网页的浏览速度.
四.Title 和标签优化,Title优化,这个是重中之重.title是对网页内容的概括与提炼;包含关键词优化,keywords,deion 包括关键词,deion 更要写的通顺.
五.动态网页的优化
根据搜索引擎公司发布的一些资料和一些SEO专家研究结果得出,搜索引擎相对喜欢静态页面的网页,比那些带动态网页并且带有参数链接有着更高的权重,所以我们尽可能的使网站静态化,根据网站实际的情况,结合假静态技术,大家可以参考这个网站的静态页面http: //www.v1314.com,使网站在不影响使用的前提下,静态化网站.
六.制定外部链接策略
外部链接在排名机制中占了很大的比重,寻找有效的外部链接是SEO必须做的事.外部链接不要一下子增加太多,更不能通过作弊的手段获得外部链接,这样都会有被搜索引擎惩罚的风险.应该稳步的增加有效的外部链接.
完成以上这几个方面的优化,一个符合搜索引擎优化的网站就建成了,当然这仅仅是一个好的开始.SEO是一个长期维护的过程,需要不断的检测分析并加以改进.这就需要SEO人员对网站进行长期跟踪分析,并实时做出调整.搜索引擎的算法在更新,要想保持长久的排名,必须根据实时调整优化策略.
SEO维护概括起来有三点:
1. 网站数据更新,搜索引擎会给经常更新的网页更高的权重,从而得到更好的排名.所以必须保持网站的更新.
2. 网站流量分析,从流量结果中能得出有多有用的信息,可以根据分析结果制定相应的策略,不断的优化网站.
3. 外链的增加,有效的外链能提高网页的排名,必须不断的增加外链。
‘贰’ 请高人指点一下css layout具体的含义,我知道height:1%可以触发,但是为何必须出发layout呢,麻烦指点。
layout是table元素内特有的。
tableLayout 属性用来显示表格单元格、行、列的算法规则。
固定表格布局:
固定表格布局与自动表格布局相比,允许浏览器更快地对表格进行布局。
在固定表格布局中,水平布局仅取决于表格宽度、列宽度、表格边框宽度、单元格间距,而与单元格的内容无关。
通过使用固定表格布局,用户代理在接收到第一行后就可以显示表格。
自动表格布局:
在自动表格布局中,列的宽度是由列单元格中没有折行的最宽的内容设定的。
此算法有时会较慢,这是由于它需要在确定最终的布局之前访问表格中所有的内容。
说明
该属性指定了完成表布局时所用的布局算法。固定布局算法比较快,但是不太灵活,而自动算法比较慢,不过更能反映传统的 HTML 表。
‘叁’ 网页制作,CSS排版遇到问题了!!!!!!!!!!!!!
当两个容器嵌套时,如果外层容器和内层容器之间没有别的元素,firefox会把内层元素的margin-top作用与父元素。
也就是说因为子层是父层的第一个非空子元素,所以使用margin-top会发生这个错误。
解决的办法有两个:
1、使用浮动来解决,即将子层代码改为:<div style="margin-top:200px;float:left";>子层</div>
2、使用padding-top来解决,即:
<div style="padding-top:200px;">
<div>子层</div>
</div>
‘肆’ 求CSS解释:word-warp word-break table-layout
word-wrap : normal | break-word 取值: normal :默认值。允许内容顶开指定的容器边界break-word :内容将在边界内换行。如果需要,词内换行( word-break )也将发生说明:设置或检索当当前行超过指定容器的边界时是否断开转行。
此属性仅作用于有布局的对象,如块对象。内联要素要使用该属性,必须先设定对象的 height 或 width 属性,或者设定 position 属性为 absolute ,或者设定 display 属性为 block 。
此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。
对应的脚本特性为 wordWrap 。 word-break : normal | break-all | keep-all 取值:normal :默认值。允许在词间换行break-all :该行为与亚洲语言的 normal 相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本keep-all :与所有非亚洲语言的 normal 相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本说明:设置或检索对象内文本的字内换行行为。尤其在出现多种语言时。
对于中文,应该使用 break-all 。
此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。
对应的脚本特性为 wordBreak 。 table-layout : auto | fixed 取值: auto :默认值。默认的自动算法。布局将基于各单元格的内容。表格在每一单元格内所有内容读取计算之后才会显示出来fixed :固定布局的算法。在这种算法中,表格和列的宽度取决于 col 对象的宽度总和,假如没有指定,则会取决于第一行每个单元格的宽度。假如表格没有指定宽度( width )属性,则表格被呈递的默认宽度为 100% 。说明:设置或检索表格的布局算法。
你可以通过此属性改善表格呈递性能。此属性导致IE以一次一行的方式呈递表格内容从而提供给信息用户更快的速度。此属性依据此下顺序使用其中一种方式布置表格栏宽度:
使用 col 或 colGroup 对象的宽度( width )属性信息。
使用表格第一行内的单元格的宽度( width )信息。
依据表格列数等分表格宽度。而不考虑表格内容的实际宽度。 假如单元格的内容超过了列宽度,内容将会被换行。假如无法换行,则内容会被裁切。假如此属性被设置为 fixed ,则 overflow 能够被用于控制处理溢出单元格( td )宽度的内容。假如表格行高度被指定了,那么换行的内容如果超出了指定表格行高度也会在纵向上被裁切。
设置此属性值为 fixed ,有助于提高表格性能。对于长表格效果尤其显着。
设置表格行高可以进一步提高呈递速度,浏览器不需要检测行内每一个单元格内容去确定行高就可以开始解析以及呈递。
此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。
对应的脚本特性为 tableLayout 。
‘伍’ 如何利用CSS控制文本只在一行显示
用CSS让文字在一行内显示不换行的方法:
一般的文字截断(适用于内联与块):
.text-overflow{
display:block;/*内联对象需加*/
width:31em;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/*溢出时显示省略标记...;需与overflow:hidden;一起使用*/
}
对于表格,定义有点不一样:
table{
width:30em;
table-layout:fixed;/*只有定义了表格的布局算法为fixed,下面td的定义才能起作用*/
}
td{
width:100%;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 溢出时显示省略标记...;需与overflow:hidden;一起使用*/
}
注:这个只对单行的文字的效,如果你想把它用在多行上,也只有第一行有作用的。 这个写法只有IE会有"...",其它的浏览器文本超出指定宽度时会隐藏。
‘陆’ 如何用算法或css布局将不确定数量的图标均匀分布在
flex弹性盒:
网页链接
‘柒’ Css 优先级算法如何计算
在多个选择符应用于同一个元素上那么Specificity值高的最终获得优先级。 选择符Specificity值列表:规则: 1. 行内样式优先级Specificity值为1,0,0,0,高于外部定义。 如:sjweb 外部定义指经由或标签定义的规则; 2.!important声明的Specificity值最高; 3.Specificity值一样的情况下,按CSS代码中出现的顺序决定,后者CSS样式居上; 4.由继续而得到的样式没有specificity的计算,它低于一切其他规则(比如全局选择符*定义的规则)。 算法:当遇到多个选择符同时出现时候 按选择符得到的Specificity值逐位相加, {数位之间没有进制 比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0} 就得到最终计算得的specificity, 然后在比较取舍时按照从左到右的顺序逐位比较。 实例分析:
‘捌’ 几个必须掌握的css概念:重用,子选择器和组选择器
这个可以看看HTML5课程大纲了解啊,分阶段学习的,不同阶段学习的内容可以了解下。
第一阶段:PCterminal
★ PC端页面重构
1、认知行业、岗位、部分专业术语,就业趋势与行业未来展望;
2、HTML5核心元素及布局应用;
3、CSS3核心属性及布局应用;
4、图形、图像软件的使用(PS,FW,AI);
5、浏览器兼容及解决方案;
6、图片整合、滑动门及宽高自适应等高级应用技术;
7、初步接触JS。
★ PC端交互开发(原生JS)
1、javascript基础语法和变量、控制语句、循环语句、函数、事件处理、数组、常见排序算法;
2、DOM操作和BOM操作;
3、定时器、Cookie本地存储、内置对象、正则表达式、闭包、JS面向对象语法、JSON、堆栈结构;
4、Ajax动态读取数据、异步操作、与DOM、JSON的结合使用;
5、各种主流浏览器兼容性处理;
6、单例、工厂、代理、观察者等设计模式;
7、ECMA6.0新特性介绍。
★ PC端交互开发 (JQuery)
1、初识jQuery、jQuery的优势、jQuery框架核心功能、最容易混淆的几个概念
2、jQuery各种选择器的使用,及选择器的应用优化;
3、Dom节点操作、插入、删除、复制、移动节点等操作;
4、事件处理、事件处理模型、事件处理机制、jQuery事件封装机制、jQuery事件应用;
5、jQuery中的动画、动画时间的概念、基本动画方法、复杂动画方法、停止动画与参数说明、jQuery动画的队列问题;
6、表单开发,设计可用性表单、表单验证、增强型表单;
7、Ajax、XMLHttpRequest 基础、jQuery Ajax、工具函数、缓存;
8、在jQuery中编写插件、插件扩展、插件应用、jQuery.pagination分页、jQuery.qtip信息提示、 jQuery.artDialog弹出层、jQuery.jscrollpane滚动条;
9、理解模块式开发,以及requirejs插件的使用。
★ PC项目实训
1、了解项目需求,项目流程;
2、了解项目管理,模块分配,项目时间预估;
3、了解产品周期,参与团队协作;
4、综合运用HTML+CSS,JS,JQ,JQUERY UI, jquery easyui等技术,完成大型PC端项目开发。
第二阶段:Mobile terminal
HTML5+CSS3新添特性
1、HTML5概述,新增的元素和废除的元素、全局属性;
2、HTML5基础:新增文档结构元素(Article、section、nav)智能表单、文件API(FileList对象和File对象、FileReader接口)、拖放API;
3、CSS3基础:新增的后代选择器、伪类选择器、文本阴影、圆角、盒阴影、变形处理(transform)、动画(transitions)、帧定义(key-frames)、旋转(rotate)、 animation;
4、HTML5多媒体audio音频元素、Video视频元素、视频回调事件;
5、本地存储web storage、本地缓存;
6、定位基础知识以及原理,结合google(高德)地图定位;
7、响应式布局概念以及语法(@media)、web网页和mobile网页的区别、样式继承;
8、Canvas标签基础知识、绘制矩形、绘制圆形、使用路径、图像裁剪、保存为文件、创建动画。
★ WebAPP项目开发及实训
1、angular.js、backbone.js;
2、数据交互,ajax与DOM交互应用;
3、HTML5+CSS3在实际项目中的应用;
4、项目管理,模块分配,项目时间预估;
5、产品周期,团队协作;
6、微信场景开发;
7、微信平台互动开发。
第三阶段:混合应用开发及实训
★ 混合应用开发及综合实训
1、混合开发原理;
2、APP与webAPP;
3、混合应用与HTML页面交互;
4、通过客户端传递数据;
5、项目的版本迭代;
6、项目打包与应用,生成APK。
‘玖’ 如何通过CSS样式设置单元格显示内容的长度
在给出源码之前还是让我们先来了解一个跟本文要使用的技术有关的知识吧: table的样式属性table-layout: table-layout 版本:CSS2 兼容性:IE5+ 继承性:无语法:table-layout : auto | fixed取值:auto : 默认值。默认的自动算法。布局将基于各单元格的内容。表格在每一单元格内所有内容读取计算之后才会显示出来 fixed : 固定布局的算法。在这种算法中,表格和列的宽度取决于 col 对象的宽度总和,假如没有指定,则会取决于第一行每个单元格的宽度。假如表格没有指定宽度( width )属性,则表格被呈递的默认宽度为 100% 。 [自己总结]如果指定了table的百分比,并且第一行的每个单元格的宽度之和小于table指定的百分比宽度,则按百分比显示;但是如果指定了table的百分比,并且第一行的每个单元格的宽度之和要大于table指定的百分比宽度,则按第一行的每个单元格的宽度之和显示;同理,如果table指定了固定值,也是同上面一样的呈现。 设置或检索表格的布局算法。 你可以通过此属性改善表格呈递性能。此属性导致IE以一次一行的方式呈递表格内容从而提供给信息用户更快的速度。此属性依据此下顺序使用其中一种方式 布置表格栏宽度: 使用col 或 colGroup 对象的宽度( width )属性信息。 使用表格第一行内的单元格的宽度( width )信息。 依据表格列数等分表格宽度。而不考虑表格内容的实际宽度。 假如单元格的内容超过了列宽度,内容将会被换行。假如无法换行,则内容会被裁切。假如此属性被设置为 fixed ,则 overflow 能够被用于控制处理溢出单元格( td )宽度的内容。假如表格行高度被指定了,那么换行的内容如果超出了指定表格行高度也会在纵向上被裁切。 设置此属性值为 fixed ,有助于提高表格性能。对于长表格效果尤其显着。 设置表格行高可以进一步提高呈递速度,浏览器不需要检测行内每一个单元格内容去确定行高就可以开始解析以及呈递。 此属性对于 currentStyle. 对象而言是只读的。对于其他对象而言是可读写的。 对应的脚本特性为 tableLayout 。
‘拾’ CSS面试须知,哪些需要掌握得CSS技巧
主要都围绕知识点的理解与css兼容性问题上,请参考下面的
2.1 link和@import都可以为页面引入CSS文件,其区别是?
将样式定义在单独的.css的文件里,link和@import都可以在html页面引入css文件。有link和@import两种方式,导入方式如下:
link方式:<link rel=”stylesheet” type=”text/css” href=”aa.css”>
@import方式:<style type=”text/css”>@import “aa.css”;</style>
link和@import两种导入css文件的区别:
祖先的差别。Link属于XHTML标签,而@import完全是CSS提供的一种方式。Link标签除了可以加载CSS外,还可以做很多其他的事情,比如定义RCC,定义rel连接属性等;@import就只能加载css了。
加载顺序的差别。当一个页面被加载的时候,link引用的CSS会同时被加载,而@import引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢时更为明显。
兼容性的差别。由于@import是CSS2.1提出的所有老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
使用DOM控制样式时的差别。当使用JavaScript控制DOM去改变样式的时候,只能使用link标签,因为@import不是DOM可以控制的。
@Import可以在css中再次引入其他样式表,比如可以创建一个主样式表,在主样式表中再引入其他的样式表。
2.2 如何理解CSS样式表的层叠性?
CSS使用层叠的原则来考虑继承、层叠次序和优先级等重要特征,从而判断相互冲突的规则中哪个规则应该起作用。
继承性是指,许多CSS的样式规则不但影响选择器所定义的元素,而且会被这些元素的后代继承。
层叠性是指,当一个web页面使用多个样式表,多个样式表中的样式可层叠为一个。在多个样式表之间所定义的样式没有冲突的时候,浏览器会显示所有的样式。
优先级是指,当发生样式定义冲突时,浏览器首先会按照不同样式规则的优先级来应用样式。CSS样式的优先级如下所示(其中数字3拥有最高的优先权):
1.浏览器缺省设置;
2.外部样式表(.css文件)或者内部样式表(位于<head>元素内部);
3.内联样式(作为某个元素的style属性的值)。
同等优先级下,以最后定义的样式为准,important比内联高。
2.3 哪些属性可以继承?
Css中可以继承的属性如下:
文本相关属性:font-family、font-size、font-style、font-variant、font-weight、font 、letter-spacing、line-height、text-align、 text-indent、 text-transform 、word-spacing 、color;
列表相关属性:list-style-image、list-style-position、list-style-type、list-style;
表格相关属性:border-collapse、border-spacing、caption-side、table-layoute;
其他属性:Cursor、visibility;
2.4 CSS选择器中,元素选择器和类选择器的区别是什么?
元素选择器是常见的CSS选择器,即文档的元素就是最基本的选择器。选择器通常是某个HTML元素,比如<p>、<h1>、<em>、<a>等,甚至可以是<html>元素本身。
类选择器用于将样式规则与附带class属性的元素匹配,其中该class属性的值为类选择器中指定的值。使用类选择器时,首先要定义样式类,其语法为:
.className{ };
所有能够附带class属性的元素都可以使用此样式声明。只需要将class属性的值设置为”className”,则可以将类选择器的样式与元素关联。
在实际使用时,如果需要为某种元素定义样式,则往往使用元素选择器;如果要应用样式而不考虑具体设计的元素,最常用的方法就是使用类选择器。
2.5 简要描述CSS中的定位机制
CSS中,除了默认的流定位方式以外,还有如下几种定位机制:浮动定位、相对定位、绝对定位和固定定位。
浮动定位是将元素排除在普通流之外,并且将它放置在包含框的左边或者右边,但是依旧位于包含框之内。
相对定位将元素相对于它在普通流中的位置进行定位。
绝对定位是指将元素的内容从普通流中完全移除,并且可以使用偏移属性来固定该元素的位置。
固定定位是指将元素的内容固定在页面的某个位置。
2.6 display属性和 visibility属性的区别?
可以使用display属性定义建立布局是元素生成的显示框类型。
1.如果将display属性设置为block,可以让行内元素表现得像块级元素一样;
2.如果将display属性设置为inline,可以让块级元素表现得像内联元素一样;
3.可以通过把display属性设置为none,让生成的元素根本没有框。这样的话,该框及其所有内容就不在显示,不占用文档中的空间。
在DIV设计中,室友display:none属性后,HTML元素(对象)的宽度。高度等各种
属性都将”丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在,也即是说它仍具有高度、宽度等属性值。
2.7 简述对CSS的盒子模型的理解?
CSS盒子模型也叫做框模型,具备内容(content)、填充(padding)、边框(border)、边距(margin)这些属性。在CSS中,每个元素都被视为一个框,而每个框都有三个属性:
border:元素的边框(可能不可见),用于将框的边缘与其他框分开;
margin:外边距,表示框的边缘与相邻框之间的距离,也称为页边空白;
padding:内边距,表示框内容和边框之间的空间。
盒子模型的结构如图所示:
由上图可以看出,width和height指的是内容区域的宽度和高度。增加内边距、外边距和边框不会影响到内容区域的尺寸,但会增加元素框的总尺寸。
因此,如果在一个具有边框的元素中放置文本,往往需要设置一些内边距,以便文本的边缘不要接触边框,这样更便于阅读。而外边距则可以在多个元素框之间创建空白,避免这些框都挤在一起。因此,在设计页面时,经常会使用padding属性和margin属性来设置页面的布局。但是,必须注意的是,一旦用了padding属性或者margin属性设置了元素的边距以后,会增加元素在页面布局中所占的面积。
2.8 简述CSS3中的伪类选择器?
CSS3提供了大量伪类选择器,浏览器对于有些伪类选择器的支持还不太好。目前,常用的伪类选择器有:
目标伪类:即 :target,突出显示活动的HTML锚,用于选取当前活动的目标元素;
元素状态伪类:比如 :enabled、:disabled、:checked;
结构伪类: 比如 :first-child、:last-child、:empty、:only-child;
否定伪类:即 :not(selector),匹配非指定元素/选择器的每个元素。
2.9 为什么建议设置背景图像的同时还设置背景颜色?
一般建议在使用背景图片的同时提供background-color属性,并且将其设置为和图像主要颜色类似的颜色。这样,如果正在加载页面,或者因为各种原因无法显示背景图像时,页面可以使用这种颜色作为背景色。
2.10 如何居中div?如何居中一个浮动元素?
给div设置一个宽度,然后设置元素的左右外边距为auto,比如,margin:0 auto。则可以实现div居中显示。
对于浮动元素,设置其左右外边距为关键字auto是无效的。此时,如果需要设置其居中显示,可以:1.精确计算其左外边距并进行设置,实现居中显示。
2.使用一个居中显示的div元素包含次浮动元素,
代码如:<div style=”margin:0 auto;”><div style=”float:left;”></div></div>
2.11 在设置文本的字体时,为什么建议设置替换字体?
可以使用font-family属性来指定文本的字体,代码如下所示:font-family:name/inherit;
此时,name为首选字体的名称。如果字体名称有多个单词,即中间有空格,则需要将字体名称用一对单引号或者双引号包围起来。
但是,如果用户机器上并没有安装name所指定的字体,则会显示默认字体。因此,如果可以指定一种替代字体,替代字体可以和指定字体不完全相同,相似且不会影响页面的布局,就可以解决问题了。
我们可以为font-family属性指定多种字体,且多种字体之间用逗号隔开,这样可以为页面指定一个字体列表。如果用户机器没有第一种字体,则浏览器会查找字体列表中的下一种字体替代默认字体显示。如果找遍了字体列表还是没有可以使用的字体,浏览器才会使用默认字体显示页面。代码如下所示:
h1{font-family:Georgia,serif;}
此时,如果用户机器上没有安装Georgia,但安装了Times字体(serif字体系列中的一种字体),浏览器就可能对<h1>元素使用Times。尽管Times与Georgia并不完全匹配,但至少足够接近。
因此,我们建议在所有font-family规则中都提供一个通用字体系列。这样就提供了一条后路,在用户机器无法提供与规则匹配的特定字体时,就可以选择一个通用字体作为替换。
2.12 内联元素可以实现浮动吗?
在CSS中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。因此,对于内联元素,如果设置为浮动,会产生和块级框相同的效果。
2.13 什么情况下需要额外设置表格的显示规则?
默认情况下(不额外设置表格的显示规则时),表格按照自动表格布局进行显示,即浏览器在显示表之前查看每一个单元格,然后基于所有格的设置计算表单大小,而列的宽度是由列段元个中没有折行的最宽的内容设定的。此时,单元格的大小会适应内容的大小。
自动表格布局的算法在表格复杂时会比较慢,这是由于它需要在确定最终的布局之前访问表格中多有的内容。在不能提前确定每一列的大小时,这种方式会非常适用。
如果额外设置表格的显示规则,即设置table-layout属性的值为fixed,则称为固定表格布局。在固定表格布局中,水平布局仅取决于表格宽度,列宽度,表格边框宽度,单元格间距,而与单元格的内容无关。浏览器将使用某列指定的宽度来计算布局,并使用该宽度计算该列中所有其他单元格的宽度。
固定表格布局与自动表格布局相比,允许浏览器更快地对表格进行布局。因为如果指定使用固定表格布局,浏览器在接收到第一行后就可以显示表格。如果表格庞大且已经指定了大小,则会加速表的显示。
2.14 简要描述CSS中content属性的作用
content属性与:before及:after伪元素配合使用,来插入生成内容,可以在元素之前或之后放置生成的内容。可以插入文本、图像、引号,并可以结合计数器为页面元素插入编号。比如,查看如下代码:
body {counter-reset:chapter;}
h1:before { content:”第”counter(chapter)”章”;}
h1 { counter-increment:chapter;}
使用content属性,并结合:before选择器和计数器counter,可以在每个<h1>元素前插入新的内容。
2.15 CSS Sprite是什么,谈谈这个技术的优缺点
CSS Sprite是一种网页图片应用处理方式,就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的”background-image”,”background-repeat”,”background-position”的组合进行背景定位。
其优点在于:①减少网页的http请求,提高性能,这也是CSS Sprite最大的优点,
也是其被广泛传播和应用的主要原因;
②减少图片的字节,多张图片合并成1张图片的字节小于多张图片的字节总和;
③较少了命名困扰,只需对一张集合的图片命名,不需要对每一个小元素进行命名提高制作效率;
④更换风格方便。只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变,维护起来更加方便;
但是CSS Sprite也存在一些不可忽视的缺点:
①图片合成比较麻烦;
②背景设置时,需要得到每一个背景单元的精确位置;
③维护合成图片时,最好只是向下加图片,而不是更改已有图片。
2.16 对CSS3有了解吗?列举几个CSS3的新特性并简要描述
CSS3作为CSS技术的升级版本,着力于模块化发展,将规范分解为一些小的模块,如选择器、盒子模型、列表模块、背景和边框等;并加入了很多新的模块和属性,比如赋值选择器、文字阴影、边框圆角、边框阴影、渐变、过渡、多栏布局、2D/3D转换、动画等。
其中,CSS3提供了一些复杂选择器,用于实现页面复杂情况下的元素选择,如属性选择器,一些伪类和伪元素选择器;渐变用于为元素设置渐变效果的背景;转换可以实现元素的变换,比如位移、缩放、旋转等;过渡可以实现简单的动画效果;动画属性则可以实现复杂的动画,可以实现逐帧制作动画。
2.17 过渡与动画的区别是什么?
过渡属性transition可以在一定的事件内实现元素的状态过渡为最终状态,用于模拟一种过渡动画效果,但是功能有限,只能用于制作简单的动画效果;
动画属性animation可以制作类似Flash动画,通过关键帧控制动画的每一步,控制更为精确,从而可以制作更为复杂的动画。
2.18 什么是CSS reset?
CSS reset,又叫做CSS重写或者CSS重置,用于改写HTML标签的默认样式。
有些HTML标签在浏览器里有默认的样式,例如p标签有上下边距,li标签有列表标识符号等。这些默认样式在不同浏览器之间也会有差别,例如ul默认带有缩进的样式,在IE下,它的缩进是通过margin实现的,而Firefox下,它的缩进是由padding实现的。着必然会带来浏览器兼容问题。
因此,在CSS代码中,可以使用CSS代码去掉这些默认样式,即重新定义标签样式,从而覆盖浏览器的CSS默认属性,即CSS reset。
需要注意的是,在进行样式重写时,不建议使用 * 选择器进行重写,这样会降低效率,影响性能。
2.19 如何清除浮动元素所带来的影响?
浮动定位是指将元素排除在普通流之外,并且将它放置在包含框的左边或者右边,但是依旧位于包含框之内。也就是说,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以元素浮动之后,其原有位置不再保留,其他元素的位置会受到影响。
如果需要清除左侧或者右侧浮动元素带来的影响,则可以使用clear属性来设置。另外,包含框呃逆的子元素浮动后,如果包含框没有设置具体的高度,则其高度会发生变化,此时,可以使用overflow属性来清除子元素浮动后带来的影响。
2.20 谈谈你对浏览器兼容性问题的理解
浏览器的类型及版本的不同会造成CSS效果不尽相同,因此需要实现浏览器兼容,也可以针对不同的浏览器编写不同的CSS。
目前,各主流浏览器的新版本,对应W3C的标准支持很好,因此,首先保证代码符合W3C的标准,这是解决浏览器兼容问题的前提。
其次,对于某些支持受限的属性,针对不同的浏览器添加相应的前缀,比如-webkit-、-o-、-moz-。
第三,对于IE的低版本,可以编写带有特定前缀的代码,实现版本识别。比如:
.bb{
background-color:#f1ee18;/*所有识别*/
.background-color:#f1ee18\9;/*IE6 7 8识别*/
+background-color:#f1ee18;/*IE6 7识别*/
_background-color:#f1ee18;/*IE6识别*/
}
另外,对于特定的兼容性问题,特殊解决。常见的特殊问题有:
1.使用CSS reset:对于有些HTML标签,浏览器默认的margin和padding不同,可以使用CSS代码改写默认的样式效果,从而实现统一
2.IE低版本中,不能使用auto关键字实现块级元素居中显示,可以改用设置父元素的text-align;
3.子元素设置上外边距时,父元素需要设置边框或者外边距;
4.外边距合并问题。