当前位置: 代码迷 >> Web前端 >> web 前端(3)
  详细解决方案

web 前端(3)

热度:271   发布时间:2013-10-11 14:52:39.0
web 前端(三)

web前端工程师有较好的编码习惯,能写出高效率的OOP(面向对象编程)代码,并对代码进行压缩上线以降低带宽消耗等。

 

公共网关接口CGI(Common GatewayInterface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

 

IE 与 FF 不兼容的原因 

(1) 文字本身的大小不兼容。同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白1px,下留白3px,opera下就更不一样了。解决方案:给文字设定line-height。确保所有文字都有默认的 line-height 值。这点很重要,在高度上我们不能容忍 1px 的差异。

【line-height:设置行间的距离(行高):p.small {line-height:90%}  p.big {line-height:200%}   normal  默认,设置合理的行间距; number 设置数字,此数字会与当前的字体尺寸相乘来设置间距;%比;inherit。 】

 

(2) ff下容器高度限定,即容器定义了height之后,容器边框的外形就确定了,不会被内容撑大,而ie下是会被内容撑大,高度限定失效。所以不要轻易给容器定义height。

还讨论内容撑破容器问题,横向上的。如果float 容器未定义宽度,ff下内容会尽可能撑开容器宽度,ie 下则会优先考虑内容折行。故,内容可能撑破的浮动容器需要定义width。

 

(3) 浮动的清除,ff下不清除浮动是不行的。

 

ie 劣迹:
(1) double-margin:bug。ie6下给浮动容器定义margin-left 或者 margin-right 实际效果是数值的2倍。解决方案,给浮动容器定义display:inline。
display:inline 它可以让行内显示为块的元素,变为行内显示:如<div>DIV1</div>  <div>DIV2</div>
   这里DIV1 和 DIV2 分别占一行,但是你给他们加上属性后变了
   <div style="display:inline">DIV1</div>
   <div style="display:inline">DIV2</div>
   DIV1和DIV2这时候显示在同一行了。
  display:block,block 会让应用里该css属性的HTML标记变成块级别元素,例如SPAN是行内显示的,但是加了display:block属性就不一样了。
  <span style="display:block">SPAN1</span>
  <span style="display:block">SPAN2</span>
 
<display:inline>比较经典的用法是用在<ul>下的<li>中内联block一般一个块占一行,除非float inline是自动排为一行,就行段内的文字一样,可成为多行。
   display:inline比较经典的用法是用在<ul>下的<li>中内联block 一般一个块占一行,除非float inline 是自动排为一行,就像段内的文字一样,可成为多行。
   display:inline 的作用是设置对象做为行内元素显示,inline是内联对象的默认值(ps:内联对象就是不自动产生换行的元素,比如span) 而我们一般用的div是块级元素,默认display属性是block, 但将div的display设置为inline的话,则多个div可以象span一样显示在一行了。
   display:inline 对应不显示为 display:none。
   display:block 对应不显示为 hidden。
   样式为none的元素不占位置,而样式为hidden的元素虽然不显示但还是占地方。

   】


(2) img下的留白,
<div>
<img src="" mce_src="">

</div>
把div的border打开,你发现图片底部不是紧贴着容器底部的,是img后面的空白字符造成,要消除必须这样写
<div>

<img src=" "  mce_src=" "/></div>
后面两个标签要紧挨着。ie下这个bug依然存在。解决方案:给img设定 display:block

(3)失去line-height:<div style="line-height:20px"><img />文字</div>,很遗憾,在ie6下单行文字line-height 效果消失了。。。,原因是<img />这个inline-block元素和inline元素写在一起了。解决方案:让imag和文字都float起来。

 

对web客户端技术未来趋势发展谈谈看法:
  javascript + ajax = RIA
  Adobe Flash AS3
  Flex
  Sliveright

 
web 开发团队人员应该如何分工协作
  布局 CSS 脚本
  比如脚本人员长期的积累可能铸造类型YUI这样的产品级脚本库。

 

 web开发脚本开发环境用什么,调试用什么
  试过aptana,现在就用editplus
  调试肯定用firebug,ie下看页面DOM 用IEInspector

 

 如果有个新技术,现在需要掌握,你会怎么做
  新技术的发现我一般是通过RSS工具, GoogleReader
  每天有半小时左右在看最新的资讯,技术走向
  官网 Doc, samples
  如果要用到项目中,有困难的问题,我会SVN得到最新的这个技术的源码,深入跟踪进去,看实现原理。
 
前端开发的优化问题:
产品发布时,js的压缩,即函数名替换,整个文件压缩成一行。css 开发的时候 注释写清楚,先有个base.css,然后根据不同页面需要再加css,发布的时候将css中的一个定义写成一行,目的是压缩文件大小。
最终发布的时候甚至可以将css,js分别压缩成一个文件,甚至css,js通过技巧压缩到一个里边(亮点)。
这样的目的是,减少用户访问web产品的http连接数。

 

web前端开发流程:
首先根据产品的定位,用户群,确定配色,然后纸上设计整体布局,然后Png或者psd出效果图,切出需要的小图片,然后手写代码div+css构造出页面,然后根据功能写脚本。

 

参考126邮箱首页,将所有小图片放到一个图片中。
众所周知,减少网站加载时间的最有效的方式之一就是减少网站的HTTP请求数。实现这一目标的一个有效的方法就是通过CSS Sprites――将多个图片整合到一个图片中,然后再用CSS来定位。 
CSS Sprites 的目的就是通过整合图片,减少对服务器的请求数量,从而加快页面加载速度。 
实现方法: 
首先将小图片整合到一张大的图片上,为了简单化,可以把多图放在同一列上,这样就可以把x轴定义为0。 
然后根据具体图标在大图上的位置,给背景定位。background-position:-8px -95px; 例子: 


我们使用上图中的auther.gif作为背景时,如果代码如下: 

<div class="max">最大化</div> 这两个class都使用同一个图片:

.max { width:16px; height:16px; 
background-image:url(/images/css-sprites.gif);

background-repeat: no-repeat; //我们并不想让它平铺 

text-indent:-999em; //隐藏文本的一种方法 } 
效果都只能得到上图中的tag_icon.gif中的图为背景,根本无法得到我们需要的背景。因为我们还没有指定background-position,默认为 0 0,可以看下上图,刚好是tag_icon.gif图。好了,我们要找到代表auther.gif的图在大图中的位置找出来。经过测量,按钮位于Y轴的350px处,按钮位于x轴50px处。想一想我们如何才能让它们能够显示出来呢?明显得到代码如下:

.max { 
background-position: 50 -350px; } 
耶,我们成功了: 
(注意:为了举例的方便,本例子直接在HTML内置样式,切勿在实践中的非特殊情况使用这种方式)。 优点 
我们从前面了解到,CSS Sprites为什么突然跑火,跟能够提升网站性能有关。显而易见,这是它的巨大优点之一。普通制作方式下的大量图片,现在合并成一个图片,大大减少了HTTP的连接数。HTTP连接数对网站的加载性能有重要影响。 缺点  
至于可维护性,这是一般双刃剑。可能有人喜欢,有人不喜欢,因为每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐。而且算图片的位置(尤其是这种上千px的图)也是一件颇为不爽的事情。当然,在性能的口号下,这些都是可以克服的。 由于图片的位置需要固定为某个绝对数值,这就失去了诸如center之类的灵活性。 前面我们也提到了,必须限制盒子的大小才能使用CSS Sprites,否则可能会出现出现干扰图片的情况。这就是说,在一些需要非单向的平铺背景和需要网页缩放的情况下,CSS 
Sprites并不合适。YUI的解决方式是,加大图片之间的距离,这样可以保持有限度的缩放。 总结 
性能压倒一切。CSS Sprites是值得推广的一种技术。尤其适宜用于FIR,比如固定大小的icon替换。为保持兼容性,图片中的各个部分保持一定的距离是一种不错的做法。  

prototype.js实现的基本原理
将功能封装
比如Ajax.Request,还是有判断浏览器的代码;Position 这样的实现页面元素的计算

 

Prototype 太大,如果一个页面功能不需要这样的,自己实现,怎么做?
首先页面,css脚本分离之后,脚本中将整个模块功能写成一个类 var Do={}
其中初始化函数init:function(){},然后最后做Do.init()
其中init会对页面上form中需要交互的元素绑定事件,比如$('input1').onclick=function(){}
 

IE FF 脚本的区别(续):

 

 

 

Ajax里边FF是new XMLHttpRequest,而IE是 
try new ActiveXObject(’Msxml2.XMLHTTP’)  try new ActiveXObject(’Microsoft.XMLHTTP’)

 

常用HTML标签代码

   ◆1.文字设置代码:
<font face=黑体 size=4 color=red>文字设置代码</font>

  ◆2.大号文字设置代码:
<font face=黑体 style=font:50pt color=red>文字设置代码</font>

  ◆3.文字的边外加光辉效果代码:
<div style="FILTER: Glow(color=#0000ff,strength=12); HEIGHT: 6pt ">
<FONT style="FONT-SIZE: 60pt;FONT-FAMILY:隶书; COLOR: #ffff00"> 如画江山</FONT></div>

  ◆4.文字重叠效果代码:
<div style="FONT-SIZE:70pt;filter:dropshadow(color=#000000,offX=5,offY=3,Positive=1);WIDTH:100%; COLOR:#60A000;LINE-HEIGHT:150%"> <FONT style="FONT-FAMILY:隶书">社会主义好!</FONT> </div>

  ◆5.文字竖排代码:
<p align=RIGHT> <font style="WRITING-MODE: tb-rl"style=font:14pt color=0000ff> 更喜岷山千里雪,<br> 三军过后尽开颜。<br> .....<br> </FONT></P>

  ◆6.一条横线代码:
<CENTER> <HR SIZE=2 color=#ffff00 ALIGN=CENTER WIDTH="500"> </CENTER>

  ◆7.贴图代码1:
<img src="图片地址">

  ◆8.贴图代码2:
<INPUT src="图片地址" type=image width=500>

  ◆9.羽化图片代码:
<INPUT style="FILTER: alpha(opacity=100,style=2)" INPUT src="图片地址" type=image width=400>

  ◆10.超连接代码:
<A href="连接网页地址" target=_blank>说明文字</A>

  ◆11.从左向右移动的代码:
<MARQUEE scrollAmount=3 direction=right> 文字或图片从左向右移动 </marquee>

  ◆12.从右向左移动的代码:
<marquee scrollamount=2 direction=left> 文字或图片从右向左移动 </marquee>

  ◆13.从下向上移动的代码:
<marquee scrollamount=1 direction=up > 文字或图片从下向上移动 </marquee>

  ◆14.从上向下移动的代码:
<marquee scrollamount=5 direction=down >文字或图片从下向上移动 </marquee>

  ◆15.左右来回走移动的代码:
<marquee scrollamount=8 behavior=alternate > 文字或图片左右来回走移动 </marquee>

  ◆16.相对定位代码:
<DIV style="LEFT: 0px; WIDTH: 500px; POSITION: relative; TOP: 20px; HEIGHT: 200px; ridge:">
</DIV>

  ◆17.绝对定位代码:
<DIV style="LEFT: 300px; WIDTH: 220px; POSITION: absolute; TOP: 20px; HEIGHT: 220px" >
</DIV>

  ◆18.相对定位与绝对定位加叠图片代码:
<DIV style="LEFT: 0px; WIDTH: 500px; POSITION: relative; TOP: 20px; HEIGHT: 200px; ridge:">
<DIV style="LEFT: 300px; WIDTH: 220px; POSITION: absolute; TOP: 20px; HEIGHT: 220px" >
<INPUT type=image width=160 src="http://bbs.gw.com.cn/UploadFile/2008-6/20086111653319630.jpg" >
</INPUT> </DIV> </DIV>

  ◆19.各种常用标签语句:
<BR> 过行单标签.  <p></p> 过段标签. <pre>文字依原始样式显示标签</pre> 
 一个空格.  <li>文字行首加一个圆点.</li>圆点标签.

  ◆20.定位标签代码:
<CENTER>内容居中</CENTER>
<DIV align=center> 内容居中</DIV>
<p align=CENTE>内容居中</P>
<p align=LEFT>内容居左</P>
<p align=RIGHT>内容居右</P>

  水平加竖直定位指令语句(放在表格的列标签内):
<td align=LEFT valign=top>居左靠顶</td>
<td align=center valign=top>居中靠顶</td>
<td align=right valign=top>居右靠顶</td>
<td align=LEFT valign=bottom>居左靠底</td>
<td align=center valign=bottom>居中靠底</td>
<td align=right valign=bottom>居右靠底</td>

  ◆21.银色播放器代码:
<EMBED src="音乐文件地址" width=500 height=50 type=audio/x-ms-wma autostart="true" loop="true">

 

display属性值:
none 此元素不会被显示。
block 此元素将显示为块级元素,此元素前后会带有换行符。
inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
inline-block 行内块元素。(CSS2.1 新增的值)
list-item 此元素会作为列表显示。
run-in 此元素会根据上下文作为块级元素或内联元素显示。
compact CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
marker CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
table 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
inline-table 此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
table-row-group 此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
table-row 此元素会作为一个表格行显示(类似 <tr>)。
table-column-group 此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
table-column  此元素会作为一个单元格列显示(类似 <col>)
table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
table-caption 此元素会作为一个表格标题显示(类似 <caption>)
inherit 规定应该从父元素继承 display 属性的值。     

 

 

  相关解决方案