自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于JavaScript的相關(guān)CSS技術(shù)概覽

開發(fā) 前端
自從CSS出現(xiàn)以來,就有廠商希望CSS能夠更加靈活一點,最早的CSS動態(tài)化體現(xiàn)為“動態(tài)表達(dá)式”(或動態(tài)屬性,Dynamic attribute)的構(gòu)想,本文將介紹基于JavaScript的CSS技術(shù)概覽。

CSS技術(shù)概覽:動態(tài)表達(dá)式的構(gòu)想也許是源自于以下的一些場景:

元素的尺寸或者位置由瀏覽器或者h(yuǎn)tml文檔來計算

使用變量作為style屬性的值,比如頻繁使用的顏色,用一個全局變量

包括瀏覽器的鼻祖Netscape以及IE瀏覽器都試圖在CSS中使用javascript,Netscape公司在很久很久以前提出了JSS技術(shù),當(dāng)然只支持Netscape瀏覽器:

“JavaScript Style Sheets. In the beginning, they were JASS (JavaScript Accessible Style Sheets), then JSSS or JSS (JavaScript Style Sheets), and now Netscape has taken to calling them Style Sheets with JavaScript Syntax. They exist in the Netscape DHTML documentation, a few books, and a couple of old third party articles on the web. The best introduction to JSS is by HTML veteran Chuck Musciano, at SunWorld. A concise, clear examination, this article was written a year ago (April 1997). Next to nothing has been written on the Web since then?!?/P>

一段經(jīng)典的Netscape瀏覽器的JSS代碼如下所示:

  1. 'text/javascript'>  
  2. with (parent.frames.main.document.classes.items.SPAN) {  
  3.     width = menuWidth;  
  4.     color = fntCol;  
  5.     fontSize = fntSiz;  
  6.     fontWeight = fntWgh;  
  7.     fontStyle = fntSty;  
  8.     fontFamily = fntFam;  
  9.     borderWidth = borWid;  
  10.     borderColor = borCol;  
  11.     borderStyle = borSty;  
  12.     lineHeight = linHgt;  
  13. }  
  14.  

是不是覺得非常怪異?您無需懷疑,這確實是瀏覽器鼻祖netscape的發(fā)明,隨著與ie競爭的失敗,Netscape瀏覽器逐漸退出歷史舞臺,相應(yīng)地,JSS技術(shù)已經(jīng)泯滅于人間。以下的地址給出了JSS的詳細(xì)介紹:http://www.webreference.com/dhtml/column18/menuFrJSS.html

微軟公司在IE5之后提出了“動態(tài)屬性(Dynamic Properties)”技術(shù):

“IE5及其以后版本支持在CSS中使用expression,用來把CSS屬性和Javas cript表達(dá)式關(guān)聯(lián)起來,這里的CSS屬性可以是元素固有的屬性,也可以是自定義屬性。就是說CSS屬性后面可以是一段Javas cript表達(dá)式,CSS屬性的值等于Javas cript表達(dá)式計算的結(jié)果。 在表達(dá)式中可以直接引用元素自身的屬性和方法,也可以使用其他瀏覽器對象。這個表達(dá)式就好像是在這個元素的一個成員函數(shù)中一樣。 ”

CSS技術(shù)概覽:一段經(jīng)典的CSS Expression代碼如下:

  1. #myDiv   
  2. {  
  3.      positionabsolute;  
  4.      width100px;  
  5.      height100px;  
  6.      left: expression(document.body.offsetWidth - 110 + "px");  
  7.      top: expression(document.body.offsetHeight - 110 + "px");  
  8.      backgroundred;  


IE的動態(tài)表達(dá)式出現(xiàn)的時候,引起不少web開發(fā)者的狂歡,但是時隔不久,其卑劣的性能開始引起人們的詬病,據(jù)稱,動態(tài)表達(dá)式在DOM發(fā)生更新的那一瞬間居然執(zhí)行了上萬次,另外由于與web標(biāo)準(zhǔn)的不兼容,CSS Expression幾乎已經(jīng)被日益追求潮流的web開發(fā)者所擯棄。
 
最終,IE8宣稱在其標(biāo)準(zhǔn)模式不再支持動態(tài)表達(dá)式(Dynamic Dynamic Properties或者CSS Expression),參見:http://blogs.msdn.com/ie/archive/2008/10/16/ending-expressions.aspx
 
關(guān)于動態(tài)表達(dá)式(Dynamic Properties或者CSS Expression)的更多介紹,請參見:http://msdn.microsoft.com/en-us/library/ms537634(VS.85).aspx
   
至此,兩大瀏覽器的巨頭都終止了在CSS中使用Javascript的妄想,但是CSS混javascript的滅亡只是瀏覽器大戰(zhàn)以及自定標(biāo)準(zhǔn)與W3C標(biāo)準(zhǔn)競爭的犧牲品而已。
 
從以上的史實來看,在CSS中使用javascript看來已被證明為一條沒有前途的路,因此民間程序員開始把動態(tài)CSS的研究重心轉(zhuǎn)為CSS的核心之一-“選擇器”,亦即“通過javascript實現(xiàn)當(dāng)前尚不能實現(xiàn)的選擇器”,這一方面的研究成果,最著名的莫過于在廚房擺放一臺個人網(wǎng)站服務(wù)器的英國人狄恩-愛德華(Dean edwards,個人主頁:http://dean.edwards.name/)的"ie7.js",網(wǎng)址:http://code.google.com/p/ie7-js/或http://ie7-js.googlecode.com/svn/test/index.html,"ie7.js"提前實現(xiàn)了W3C的CSS3標(biāo)準(zhǔn),當(dāng)然它的功能不限于此。

在民間,還是有很多人在研究如何在CSS中使用Javascript或者使用JavaScript來擴(kuò)展現(xiàn)有CSS的功能,比如這位仁兄:http://andykent.bingodisk.com/bingo/public/jss/,他開發(fā)了一個基于JQuery的插件,能夠提前實現(xiàn)CSS3的選擇器,他把他的作品命名為JSS(Javascript Style Sheets)。

為什么一些狂熱的程序員會對基于javascript的CSS樂此不疲呢?

筆者認(rèn)為主要有以下兩個原因:

1、CSS本身的靜態(tài)特性

2、W3C標(biāo)準(zhǔn)與瀏覽器版本不能也永遠(yuǎn)不能同步的矛盾

3、HTML開發(fā)人員的期望與W3C標(biāo)準(zhǔn)不能也永遠(yuǎn)不能同步的矛盾

HTML的CSS技術(shù)本身的缺點已經(jīng)引起了軟件開發(fā)巨頭的注意,在當(dāng)前狂躁的應(yīng)用程序標(biāo)記語言中,比如微軟的XAML或adobe的MXML,其CSS(暫且稱之為CSS吧)不僅可以動態(tài)定義,甚至還可以定義屬性、內(nèi)容和事件。也許,在幾年之后,我們將看到W3C準(zhǔn)備修正新的CSS標(biāo)準(zhǔn),讓其更加動態(tài)化。CSS技術(shù)概覽到此結(jié)束。

【編輯推薦】

  1. CSS 3中的炫目新功能搶先預(yù)覽
  2. CSS 3備受期待的8大功能
  3. CSS網(wǎng)頁布局困擾新手的八個問題
  4. 25個下拉菜單導(dǎo)航腳本下載
  5. HTML 5 正式標(biāo)準(zhǔn)恐將2022年才能正式發(fā)布
責(zé)任編輯:彭凡 來源: cnbeta
相關(guān)推薦

2009-12-23 18:16:35

WPF布局控件

2010-01-25 15:29:09

Android開發(fā)環(huán)境

2009-03-17 09:15:20

圖表框架CSSJavaScript

2017-04-11 15:47:26

JavaScript技術(shù)趨勢

2017-03-23 09:58:47

HTMLCSSJavaScript

2009-04-30 15:22:25

JDBCODBCAPI

2009-06-11 16:53:09

什么是EJBEJB

2010-01-05 16:46:14

學(xué)習(xí).NET Fram

2009-12-07 17:33:44

PHP SQlite數(shù)

2011-05-25 17:02:38

ibmdwWebsphere

2021-02-26 10:51:15

大數(shù)據(jù)

2015-07-23 14:28:04

.NET技術(shù)大系

2010-09-08 14:09:35

切換CSS

2016-05-19 10:19:51

谷歌地圖CSS

2015-01-13 10:53:59

Java工具技術(shù)

2010-01-07 11:38:25

VB.NET鍵盤事件

2022-11-08 09:41:42

2010-08-23 10:11:22

CSSfloatJavaScript

2010-09-10 09:31:08

CSSDIV

2017-10-25 19:05:18

深度學(xué)習(xí)語音分離
點贊
收藏

51CTO技術(shù)棧公眾號