整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          HTML DOM Style 對象

          Style 對象

          Style 對象表示一個個別的樣式聲明。

          訪問 Style 對象

          Style 對象可以從文檔的頭部區域訪問,或者從指定的 HTML 元素訪問。

          從文檔的頭部區域訪問 style 對象:

          var x = document.getElementsByTagName("STYLE");嘗試一下

          訪問一個指定元素的 style 對象:

          var x = document.getElementById("myH1").style;

          創建 Style 對象

          您可以使用 document.createElement() 方法來創建 <style> 元素:

          var x = document.createElement("STYLE");嘗試一下

          您也可以設置一個已有元素的 style 屬性:

          document.getElementById("myH1").style.color = "red";

          Style 對象屬性

          "CSS" 列表示該屬性是在哪一個 CSS 版本中定義的(CSS1、CSS2 或 CSS3)。

          屬性描述CSS
          alignContent設置或返回當靈活容器內的各項沒有占用所有可用的空間時各項之間的對齊方式(水平)。3
          alignItems設置或返回靈活容器內的各項的對齊方式。3
          alignSelf設置或返回靈活容器內被選中項目的對齊方式。3
          animation是下面除了 animationPlayState 屬性之外的其他屬性的速記屬性。3
          animationDelay設置或返回動畫何時開始。3
          animationDirection設置或返回是否循環交替反向播放動畫。3
          animationDuration設置或返回動畫完成需花費的秒數或毫秒數。3
          animationFillMode設置或返回當動畫不播放時(當動畫完成時,或當動畫有一個延遲未開始播放時),要應用到元素的樣式。3
          animationIterationCount設置或返回動畫的播放次數。3
          animationName設置或返回關鍵幀 @keyframes 動畫的名稱。3
          animationTimingFunction設置或返回動畫的速度曲線。3
          animationPlayState設置或返回動畫是運行的還是暫停的。3
          background設置或返回在一個聲明中的所有背景屬性。1
          backgroundAttachment設置或返回背景圖像是否固定或隨頁面滾動。1
          backgroundColor設置或返回元素的背景色。1
          backgroundImage設置或返回元素的背景圖像。1
          backgroundPosition設置或返回的背景圖像的起始位置。1
          backgroundRepeat設置或返回如何重復背景圖像。1
          backgroundClip設置或返回背景的繪制區域。3
          backgroundOrigin設置或返回背景圖像的定位區域。3
          backgroundSize設置或返回背景圖像的大小。3
          backfaceVisibility設置或返回當一個元素背對屏幕時是否可見。3
          border設置或返回在一個聲明中的 borderWidth、borderStyle 和 borderColor。1
          borderBottom設置或返回在一個聲明中的所有 borderBottom* 屬性。1
          borderBottomColor設置或返回下邊框的顏色。1
          borderBottomLeftRadius設置或返回左下角邊框的形狀。3
          borderBottomRightRadius設置或返回右下角邊框的形狀。3
          borderBottomStyle設置或返回下邊框的樣式。1
          borderBottomWidth設置或返回下邊框的寬度。1
          borderCollapse設置或返回表格的邊框是否被折疊為一個單一的邊框。2
          borderColor設置或返回元素邊框的顏色(最多可以有四個值)。1
          borderImage一個用于設置或返回所有的 borderImage* 屬性的速記屬性。3
          borderImageOutset設置或返回邊框圖像區域超出邊界框的量。3
          borderImageRepeat設置或返回圖像邊框是重復拼接圖塊還是延伸圖塊。3
          borderImageSlice設置或返回圖像邊框的向內偏移。3
          borderImageSource設置或返回要作為邊框使用的圖像。3
          borderImageWidth設置或返回圖像邊框的寬度。3
          borderLeft設置或返回在一個聲明中的所有 borderLeft* 屬性。1
          borderLeftColor設置或返回左邊框的顏色。1
          borderLeftStyle設置或返回左邊框的樣式。1
          borderLeftWidth設置或返回左邊框的寬度。1
          borderRadius一個用于設置或返回四個 border*Radius 屬性的速記屬性。3
          borderRight設置或返回在一個聲明中的所有 borderRight* 屬性。1
          borderRightColor設置或返回右邊框的顏色。1
          borderRightStyle設置或返回右邊框的樣式。1
          borderRightWidth設置或返回右邊框的寬度。1
          borderSpacing設置或返回表格中單元格之間的距離。2
          borderStyle設置或返回元素邊框的樣式(最多可以有四個值)。1
          borderTop設置或返回在一個聲明中的所有 borderTop* 屬性。1
          borderTopColor設置或返回上邊框的顏色。1
          borderTopLeftRadius設置或返回左上角邊框的形狀。3
          borderTopRightRadius設置或返回右上角邊框的形狀。3
          borderTopStyle設置或返回上邊框的樣式。1
          borderTopWidth設置或返回上邊框的寬度。1
          borderWidth設置或返回元素邊框的寬度(最多可以有四個值)。1
          bottom設置或返回定位元素的底部位置。2
          boxDecorationBreak設置或返回分頁處元素的背景和邊框行為,或者換行處內聯元素的背景和邊框行為。3
          boxShadow設置或返回元素的下拉陰影。3
          boxSizing允許您以特定的方式定義匹配某個區域的特定元素。3
          captionSide設置或返回表格標題的位置。2
          clear設置或返回元素相對浮動對象的位置。1
          clip設置或返回定位元素的可見部分。2
          color設置或返回文本的顏色。1
          columnCount設置或返回元素應該被劃分的列數。3
          columnFill設置或返回如何填充列。3
          columnGap設置或返回列之間的間隔。3
          columnRule一個用于設置或返回所有的 columnRule* 屬性的速記屬性。3
          columnRuleColor設置或返回列之間的顏色規則。3
          columnRuleStyle設置或返回列之間的樣式規則。3
          columnRuleWidth設置或返回列之間的寬度規則。3
          columns一個用于設置或返回 columnWidth 和 columnCount 的速記屬性。3
          columnSpan設置或返回一個元素應橫跨多少列。3
          columnWidth設置或返回列的寬度。3
          content與 :before 和 :after 偽元素一起使用,來插入生成的內容。2
          counterIncrement增加一個或多個計數器。2
          counterReset創建或重置一個或多個計數器。2
          cursor設置或返回鼠標指針顯示的光標類型。2
          direction設置或返回文本的方向。2
          display設置或返回元素的顯示類型。1
          emptyCells設置或返回是否顯示表格中的空單元格的邊框和背景。2
          filter設置或返回圖片濾鏡(可視效果,如:高斯模糊與飽和度)3
          flex相對于同一容器其他靈活的項目,設置或返回項目的長度。3
          flexBasis設置或靈活項目的初始長度。3
          flexDirection設置或返回靈活項目的方向。3
          flexFlow是 flexDirection 和 flexWrap 屬性的速記屬性。3
          flexGrow設置或返回項目將相對于同一容器內其他靈活的項目進行擴展的量。3
          flexShrink設置或返回項目將相對于同一容器內其他靈活的項目進行收縮的量。3
          flexWrap設置或返回靈活項目是否拆行或拆列。3
          cssFloat設置或返回元素的水平對齊方式。1
          font設置或返回一個聲明中的 fontStyle、fontVariant、fontWeight、fontSize、lineHeight 和 fontFamily。1
          fontFamily設置或返回文本的字體。1
          fontSize設置或返回文本的字體尺寸。1
          fontStyle設置或返回字體樣式是否是 normal(正常的)、italic(斜體)或 oblique(傾斜的)。1
          fontVariant設置或返回是否以小型大寫字母顯示字體。1
          fontWeight設置或返回字體的粗細。1
          fontSizeAdjust當使用備用字體時,確保文本的可讀性。3
          fontStretch從字體庫中選擇一種正常的、濃縮的或擴大的字體。3
          hangingPunctuation規定一個標點符號是否可以放置在線框外。3
          height設置或返回元素的高度。1
          hyphens設置如何拆分單詞來提高段落布局。3
          icon向作者提供為一個帶有等價于圖標的元素定義樣式的功能。3
          imageOrientation規定一個用戶代理應用到圖像上的順時針方向的旋轉。3
          justifyContent設置或返回當靈活容器內的各項沒有占用所有可用的空間時各項之間的對齊方式(垂直)。3
          left設置或返回定位元素的左部位置。2
          letterSpacing設置或返回文本中字符之間的空間。1
          lineHeight設置或返回在文本中行之間的距離。1
          listStyle設置或返回一個聲明中的 listStyleImage、listStylePosition 和 listStyleType。1
          listStyleImage設置或返回作為列表項標記的圖像。1
          listStylePosition設置或返回列表項標記的位置。1
          listStyleType設置或返回列表項標記的類型。1
          margin設置或返回元素的外邊距(最多可以有四個值)。1
          marginBottom設置或返回元素的的下外邊距。1
          marginLeft設置或返回元素的左外邊距。1
          marginRight設置或返回元素的右外邊距。1
          marginTop設置或返回元素的上外邊距。1
          maxHeight設置或返回元素的最大高度。2
          maxWidth設置或返回元素的最大寬度。2
          minHeight設置或返回元素的最小高度。2
          minWidth設置或返回元素的最小寬度。2
          navDown設置或返回當使用向下箭頭導航鍵時要導航到哪里。3
          navIndex設置或返回元素的顯示順序。3
          navLeft設置或返回當使用向左箭頭導航鍵時要導航到哪里。3
          navRight設置或返回當使用向右箭頭導航鍵時要導航到哪里。3
          navUp設置或返回當使用向上箭頭導航鍵時要導航到哪里。3
          opacity設置或返回元素的不透明度。3
          order設置或返回一個靈活的項目相對于同一容器內其他靈活項目的順序。3
          orphans設置或返回當元素內有分頁時,必須在頁面底部預留的最小行數。2
          outline設置或返回在一個聲明中的所有 outline 屬性。2
          outlineColor設置或返回一個元素周圍的輪廓顏色。2
          outlineOffset對輪廓進行偏移,并在邊框邊緣進行繪制。3
          outlineStyle設置或返回一個元素周圍的輪廓樣式。2
          outlineWidth設置或返回一個元素周圍的輪廓寬度。2
          overflow設置或返回如何處理呈現在元素框外面的內容。2
          overflowX規定如果內容溢出元素的內容區域,是否對內容的左/右邊緣進行裁剪。3
          overflowY規定如果內容溢出元素的內容區域,是否對內容的上/下邊緣進行裁剪。3
          padding設置或返回元素的內邊距(最多可以有四個值)。1
          paddingBottom設置或返回元素的下內邊距。1
          paddingLeft設置或返回元素的左內邊距。1
          paddingRight設置或返回元素的右內邊距。1
          paddingTop設置或返回元素的上內邊距。1
          pageBreakAfter設置或返回元素后的分頁行為。2
          pageBreakBefore設置或返回元素前的分頁行為。2
          pageBreakInside設置或返回元素內的分頁行為。2
          perspective設置或返回 3D 元素被查看的視角。3
          perspectiveOrigin設置或返回 3D 元素的底部位置。3
          position設置或返回用于元素定位方法的類型(static、relative、absolute 或 fixed)。2
          quotes設置或返回嵌入引用的引號類型。2
          resize設置或返回是否可由用戶調整元素的尺寸大小。3
          right設置或返回定位元素的右部位置。2
          tableLayout設置或返回表格單元格、行、列的布局方式。2
          tabSize設置或返回制表符(tab)字符的長度。3
          textAlign設置或返回文本的水平對齊方式。1
          textAlignLast設置或返回當 text-align 屬性設置為 "justify" 時,如何對齊一個強制換行符前的最后一行。3
          textDecoration設置或返回文本的修飾。1
          textDecorationColor設置或返回文本修飾的顏色。3
          textDecorationLine設置或返回文本修飾要使用的線條類型。3
          textDecorationStyle設置或返回文本修飾中的線條樣式。3
          textIndent設置或返回文本第一行的縮進。1
          textJustify設置或返回當 text-align 屬性設置為 "justify" 時,要使用的對齊方法。3
          textOverflow設置或返回當文本溢出包含它的元素,應該發生什么。3
          textShadow設置或返回文本的陰影效果。3
          textTransform設置或返回文本的大小寫。1
          top設置或返回定位元素的頂部位置。2
          transform向元素應用 2D 或 3D 轉換。3
          transformOrigin設置或返回被轉換元素的位置。3
          transformStyle設置或返回被嵌套的元素如何呈現在 3D 空間中。3
          transition一個用于設置或返回四個過渡屬性的速記屬性。3
          transitionProperty應用過渡效果的 CSS 屬性的名稱。3
          transitionDuration設置或返回完成過渡效果需要花費的時間(以秒或毫秒計)。3
          transitionTimingFunction設置或返回過渡效果的速度曲線。3
          transitionDelay設置或返回過渡效果何時開始。3
          unicodeBidi設置或返回文本是否被重寫,以便在同一文檔中支持多種語言。2
          verticalAlign設置或返回元素中內容的垂直對齊方式。1
          visibility設置或返回元素是否應該是可見的。2
          whiteSpace設置或返回如何處理文本中的制表符、換行符和空格符。1
          width設置或返回元素的寬度。1
          wordBreak設置或返回非 CJK 語言的換行規則。3
          wordSpacing設置或返回文本中單詞之間的空間。1
          wordWrap允許長單詞或 URL 地址換行到下一行。3
          widows設置或返回一個元素必須在頁面頂部的可見行的最小數量。2
          zIndex設置或返回定位元素的堆疊順序。2

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

          三部分 附錄(因為暫時不支持插入超鏈接所以部分內容無法顯示


          附錄一 DIV命名規范


          • 企業DIV使用頻率高的命名方法
          • 網頁內容類
          • 標題: title
          • 摘要: summary
          • 箭頭: arrow
          • 商標: label
          • 網站標志: logo
          • 轉角/圓角:corner
          • 橫幅廣告: banner
          • 子菜單: subMenu
          • 搜索: search
          • 搜索框: searchBox
          • 登錄: login
          • 登錄條:loginbar
          • 工具條: toolbar
          • 下拉: drop
          • 標簽頁: tab
          • 當前的: current
          • 列表: list
          • 滾動: scroll
          • 服務: service
          • 提示信息: msg
          • 熱點:hot
          • 新聞: news
          • 小技巧: tips
          • 下載: download
          • 欄目標題: title
          • 熱點: hot
          • 加入:joinus
          • 注冊: regsiter
          • 指南: guide
          • 友情鏈接: friendlink
          • 狀態: status
          • 版權: copyright
          • 按鈕: btn
          • 合作伙伴: partner
          • 投票: vote
          • 左右中:left right center


          • 注釋的寫法: /* Footer */ 內容區/* End Footer */
          • id的命名:
          • 頁面結構
          • 容器: container
          • 頁頭:header
          • 內容:content/container
          • 頁面主體:main
          • 頁尾:footer
          • 導航:nav
          • 側欄:sidebar
          • 欄目:column
          • 頁面外圍控制整體布局寬度:wrapper
          • 左右中:left right center

          • 導航
          • 導航:nav
          • 主導航:mainbav
          • 子導航:subnav
          • 頂導航:topnav
          • 邊導航:sidebar
          • 左導航:leftsidebar
          • 右導航:rightsidebar
          • 菜單:menu
          • 子菜單:submenu
          • 標題: title
          • 摘要: summary

          • 功能
          • 標志:logo
          • 廣告:banner
          • 登陸:login
          • 登錄條:loginbar
          • 注冊:regsiter
          • 搜索:search
          • 功能區:shop
          • 標題:title
          • 加入:joinus
          • 狀態:status
          • 按鈕:btn
          • 滾動:scroll
          • 標簽頁:tab
          • 文章列表:list
          • 提示信息:msg
          • 當前的:current
          • 小技巧:tips
          • 圖標: icon
          • 注釋:note
          • 指南:guild
          • 服務:service
          • 熱點:hot
          • 新聞:news
          • 下載:download
          • 投票:vote
          • 合作伙伴:partner
          • 友情鏈接:link
          • 版權:copyright

          • class的命名:
          • 顏色:使用顏色的名稱或者16進制代碼,如
          • .red { color: red; }
          • .f60 { color: #f60; }
          • .ff8600 { color: #ff8600; }
          • 字體大小,直接使用”font+字體大小”作為名稱,如
          • .font12px { font-size: 12px; }
          • .font9px {font-size: 9pt; }
          • 對齊樣式,使用對齊目標的英文名稱,如
          • .left { float:left; }
          • .bottom { float:bottom; }
          • 標題欄樣式,使用”類別+功能”的方式命名,如
          • .barnews { }
          • .barproduct { }

          • 注意事項::
          • 一律小寫;
          • 盡量用英文;
          • 不加中杠和下劃線;
          • 盡量不縮寫,除非一看就明白的單詞.


          • 推薦的 CSS 書寫順序:
          • 顯示屬性
          • display
          • list-style
          • position
          • float
          • clear
          • 自身屬性
          • width
          • height
          • margin
          • padding
          • border
          • background
          • 文本屬性
          • color
          • font
          • text-decoration
          • text-align
          • vertical-align
          • white-space
          • other text
          • content

          附錄二 CSS精靈


          • CSS精靈原理以及應用
          • CSS雪碧的基本原理是把你的網站上用到的一些圖片整合到一張單獨的圖片中,從而減少你的網站的HTTP請求數量。
          • 該圖片使用CSS background和background-position屬性渲染,這也就意味著你的標簽變得更加復雜了,圖片是在CSS中定義,而非<img>標簽。
          • 一個簡單的例子:
          • 一張圖片作出一個按鈕的三個狀態
          • 一個鏈接用CSS做成按鈕的樣式,我們可以使用同一張圖片,完成按鈕的三個狀態,a:link,a:hover,a:active <a class="button" href="#">鏈接</a>
          • 加入右側的圖片為:200px 65px的三個按鈕圖拼合而成的圖片button.png,從上到下一次為按鈕的普通、鼠標滑過、鼠標點擊的狀態。則可以使用CSS進行定義。
          a {
           display:block; 
           width:200px; 
           height:65px; 
           line-height:65px; /*定義狀態*/
           text-indent:-2015px; /*隱藏文字*/
           background-image:url(button.png); /*定義背景圖片*/
           background-position:0 0;
           /*定義鏈接的普通狀態,此時圖像顯示的是頂上的部分*/
          }
          a:hover {
           background-position:0 -66px;
           /*定義鏈接的滑過狀態,此時顯示的為中間部分,向下取負值*/
          }
          a:active {
           background-position:0 -132px; 
           /*定 義鏈接的普通狀態,此時顯示的是底部的部分,向下取負值*/
          }
          
          • 更多的CSS雪碧,圖片更復雜,背景定位更精確。可能會用到大量的數值
          • 如:background:url(nav.png) -180px 24pxno-repeat; 來達到更精確的定位
          • 優點:
          • 減少加載網頁圖片時對服務器的請求次數
          • 可以合并多數背景圖片和小圖標,方便在任何位置使用,這樣不同位置的請求只需要調用一個圖片,從而減少對服務器的請求次數,降低服務器壓力,同時提高了頁面的加載速度,節約服務器的流量。
          • 提高頁面的加載速度
          • sprite技術的其中一個好處是圖片的加載時間(在有許多 sprite 時,單張圖片的加載時間)。由所需圖片拼成的一張 GIF圖片的尺寸會明顯小于所有圖片拼合前的大小。單張的 GIF只有相關的一個色表,而單獨分割的每一張 GIF 都有自己的一個色表,這就增加了總體的大小。因此,單獨的一張 JPEG 或者 PNGsprite 在大小上非常可能比把一張圖分成多張得來的圖片總尺寸小。
          • 減少鼠標滑過的一些bug
          • IE6不會主動預加載鼠標滑過即a:hover中的背景圖片,所以,如果使用多張圖片,鼠標滑過會出現閃白的現象。使用CSS雪碧,由于一張圖片即可,所以不會出現這種現象。
          • 不足:
          • CSS雪碧的最大問題是內存使用
          • 影響瀏覽器的縮放功能
          • 拼圖維護比較麻煩
          • 使CSS的編寫變得困難
          • CSS 雪碧調用的圖片不能被打印
          • 錯誤得使用 Sprites 影響可訪問性

          附錄三 一些tips解決方案


          頁面優化實踐


          • 從下面的幾個方面可以進行頁面的優化:
          • 減少請求數
          • 圖片合并
          • CSS文件合并
          • 減少內聯樣式
          • 避免在 CSS中使用 import
          • 減少文件大小
          • 選擇適合的圖片格式
          • 圖片壓縮
          • CSS 值縮寫(Shorthand Property)
          • 文件壓縮
          • 頁面性能
          • 調整文件加載順序
          • 減少標簽數量
          • 調整選擇器長度
          • 盡量使用CSS 制作顯示表現
          • 增強代碼可讀性與可維護性
          • 規范化
          • 語義化
          • 模塊化

          寫DIV+CSS 的一些常識


          • 不要使用過小的圖片做背景平鋪
          • 這就是為何很多人都不用 1px 的原因,這才知曉。寬高 1px 的圖片平鋪出一個寬高 200px 的區域,需要 200200=40, 000 次,占用資源
          • 無邊框
          • 推薦的寫法是 border:none;,哈哈,我一直在用這個。 border:0; 只是定義邊框寬度為零,但邊框樣式、顏色還是會被瀏覽器解析,占用資源
          • 慎用 通配符
          • 所謂通配符,就是將CSS 中的所有標簽均初始化,不管用的不用的,過時的先進的,一視同仁,這樣,大大的占用資源。要有選擇的初始化標簽。
          • CSS的十六進制顏色代碼縮寫
          • 習慣了縮寫及小寫,這才知道,原來不是推薦的寫法,為的是減少解析所占用的資源。但同時會增加文件體積。孰優孰劣,有待仔細考證。
          • 樣式放頭上,腳本放腳下。不內嵌,只外鏈
          • 堅決不用 CSS表達式
          • 使用 引用樣式表,而不是通過@import 導入。
          • 一般來說,PNG比 GIF 要小,小得多。再者,GIF 中有多少顏色是被浪費的,很值得優化。
          • 千萬不要在 HTML中縮放圖片,一者不好看,二者占資源。
          • 正文字體最好用偶數
          • 12px、14px、16px,效果非常好。特例,15px。
          • block、ul、ol等上下留出至少一倍行距,左側至少兩倍行距,右側隨意。
          • 段落之間,至少要有一倍行距
          • 強行指定某些元素的 line-height,正文 1.6倍于文字大小,標題1.3倍。
          • 中文標點用全角
          • 英文夾雜在中文中,左右空格,半角。
          • 中文字體的粗體和斜體,遠離較好

          常用代碼片段


          • 雅虎工程師提供的CSS初始化示例代碼【僅供參考】
          • 可以在html頭文件中直接引用,從而避免瀏覽器的不兼容帶來的錯誤。
          body,
          div,
          dl,
          dt,
          dd,
          ul,
          ol,
          li,
          h1,
          h2,
          h3,
          h4,
          h5,
          h6,
          pre,
          code,
          form,
          fieldset,
          legend,
          input,
          button,
          textarea,
          p,
          blockquote,
          th,
          td { 
           margin:0; padding:0; 
          }
          body {
           background:#fff; 
           color:#555; 
           font-size:14px; 
           font-family: Verdana, Arial, Helvetica, sans-serif; 
          }
          td,
          th,
          caption { 
           font-size:14px;
          }
          h1, 
          h2, 
          h3, 
          h4, 
          h5, 
          h6 { 
           font-weight:normal; 
           font-size:100%; 
          }
          address, 
          caption,
          cite, 
          code, 
          dfn, 
          em, 
          strong,
          th, 
          var { 
           font-style:normal; 
           font-weight:normal;
          }
          a { 
           color:#555; 
           text-decoration:none; 
          }
          a:hover { 
           text-decoration:underline; 
          }
          img {
           border:none;
          }
          ol,ul,li { 
           list-style:none; 
          }
          input, 
          textarea, 
          select, 
          button { 
           font:14px Verdana,Helvetica,Arial,sans-serif; 
          }
          table { 
           border-collapse:collapse; 
          }
          html {
           overflow-y: scroll;
          } 
          .clearfix:after {
           content: "."; 
           display: block; 
           height:0; 
           clear:both; 
           visibility: hidden;
          }
          .clearfix { 
           *zoom:1; 
          }
          
          • mobile meta標簽
          <meta name=”viewport” content=”width=320,target-densitydpi=dpi_value,initial-scale=1, user-scalable=no”/>
          
          • 表格不被撐開
          table-layout: fixed; word-break: break-all;;border-collapse: collapse
          
          • 不設寬高居中
          <div id=”abc” style=”display:table;text-align:center;width:100%;height:100%;”>
           <span style=”background:#f00; display:table-cell; vertical-align:middle;”>
           <input type=”button” value=”item1″ />
           </span>
          </div>
          
          • 透明度的兼容代碼
          filter:alpha(opacity=50); /*1-100*/
          -moz-opacity:0.5; /*0-1.0*/
          -khtml-opacity:0.5; /*0-1.0*/
          opacity:0.5; /*0-1.0*/
          
          • 文字溢出點點省略
          white-space:nowrap;
          text-overflow:ellipsis;
          overflow:hidden;
          
          • 清除浮動的幾種方法
          • 方法一:投機取巧法 – 不推薦
          • 直接一個放到當作最后一個子標簽放到父標簽那兒,此方法屢試不爽,兼容性強
          • 方法二:overflow + zoom方法 –不推薦
          • .fix{overflow:hidden; zoom:1;}
          • 此方法優點在于代碼簡潔,涵蓋所有瀏覽器
          • 方法三:after + zoom方法 -推薦–此方法可以說是綜合起來最好的方法了
          • clearfix只應用在包含浮動子元素的父級元素上
          .fix{zoom:1;}
          .fix:after{
           display:block; 
           content:'clear'; 
           clear:both;
           line-height:0; 
           visibility:hidden;
          }
          
          • 更多代碼片段詳情
          • 實用的60個CSS代碼片段

          一些總結


          • 自動繼承屬性:
          • color
          • font
          • text-align
          • list-style
          • 非繼承屬性:
          • background
          • border
          • position
          • 具有破壞性的元素:
          • float
          • display:none;
          • position:absoblute/fixed/sticky;
          • 具有包裹性的元素:
          • display:inline-block/table-cell
          • position:absolute/fixed/sticky
          • overflow:hidden/scroll
          • 消除圖片底部間隙的方法
          • 圖片塊狀化-無基線對齊
          • img{display:block;}
          • 圖片底線對齊
          • img{vertical-align:bottom;}
          • 行高足夠小 - 基線位置上移
          • .box{line-height:0;}

          一些概念


          • BFC
          • BFC全稱”Block Formatting Context” 中文為“塊級格式化上下文”
          • 記住這么一句話:BFC元素特性表現原則就是,內部子元素再怎么翻江倒海,翻云覆雨都不會影響外部的元素
          • BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素。反之也如此
          • 優雅降級(graceful degradation)
          • 一開始就構建完整的功能,然后再針對低版本瀏覽器進行兼容
          • 漸進增強 progressive enhancement:
          • 是在瀏覽器開啟JavaScript功能后,如果瀏覽器版本不支持某些 JavaScript 能力,我們解決這種問題的方式
          • 平穩退化
          • 是在瀏覽器沒有JavaScript功能,或沒有開啟JavaScript功能情況下,我們解決這種問題的方式;

          學習從來不是一個人的事情,要有個相互監督的伙伴,想要學習或交流前端問題的小伙伴可以私信“學習”小明加群獲取2019web前端最新入門資料,一起學習,一起成長!

          理 | 蘇宓
          出品 | CSDN(ID:CSDNnews)

          有些人玩游戲,是為了尋求刺激;有些人玩游戲,是為了休閑安靜地打發時間。二者的感受如何才能兼得,近日,蘇格蘭愛丁堡的一位開發者 Anslo 潛心開發了 16 個月,發布了一款名為 《Slow Roads》(slowroads.io)的免費、輕松的駕駛游戲,可以讓玩家在電腦上體驗《速度與激情》的感覺,還能欣賞由程序自動生成的優美風景。此外,這款游戲可以直接在瀏覽器中運行,無需登錄或者安裝,對于玩家而言,即開即玩。


          玩法


          《Slow Roads》一經推出之后,便受到了不少玩家的關注和試玩。和傳統駕駛類游戲有所不同,這款游戲在玩法和技術實現上有著巨大的差異。

          首先,在游戲玩法上,它沒有撞車、沒有失敗更沒有輸贏。隨著汽車的行駛,道路會一直在延伸,風景秀麗的景觀在身邊飛馳,最為值得關注無論是春夏秋冬,還是白天、傍晚、黑夜,亦或是森林、沙漠、環山,場景都可以一鍵“無縫切換”。

          另外,駕駛的車也可以切換為轎車、長途汽車、自行車。

          如果你的方向盤偏離了道路,也可以按一下「R」鍵將車重新定位到快速道上,甚至道路也是可以選擇的。當然,如果你愿意,還可以駕駛越野車或者體驗一下水下行駛的感覺。

          當然,玩累了,還可以開啟自動駕駛模式。

          同時,這款游戲的操作也非常簡單,W 鍵或向上箭頭是加速,S 鍵或向下箭頭是剎車。A 鍵和 D 鍵(或左右箭頭)控制轉向;玩家也可以通過按住 Shift 或雙擊 W 鍵來升級汽車;C 鍵可改變攝像機角度,Q 鍵和 E 鍵在可用的天氣和照明條件下循環。如果你不喜歡鍵盤控制,也可以改用基于鼠標的轉向。

          在技術實現上,與使用傳統游戲引擎開發的游戲不同,Anslo 表示,《Slow Roads》使用了 three.js 的 3D JavaScript 庫構建,可直接在 Chrome、Firefox、Safari 和 Edge 瀏覽器中運行。與此同時,上述的場景切換都是由程序自動生成,通過技術實現,可以動態生成無限地圖和處理事務。這是一個相當復雜且有趣的技術演示。用開發者 Anslo 自己的話來形容,「該游戲的實驗正在挑戰瀏覽器游戲的合理邊界」。

          接下來,我們不妨一起來看一下具體的技術原理。


          技術實現


          事實上,這一款游戲的制作不僅需要深厚的開發功底,也需要有設計、物理學等知識儲備。在《Slow Roads》中,作者首先通過生成一個高度圖,采用了類似于 Perlin 噪聲的算法,并進行了修改優化,從而實現更真實的山丘景觀。

          繼而使用一個 npm 包 Alea(https://www.npmjs.com/package/alea)用作 PRNG(偽隨機數生成器,Preudo Random Number Generator),用于復制和粘貼實現。

          當完成第一步開發之后,第二步便是進行車子行駛的道路規劃。Anslo 選擇采用了以下步驟:

          • 選擇地圖中一個不太陡峭、不太深的地方,作為行駛的起點。同時,這也是道路中線的第一個點。

          • 進而選擇一個方向,并測量周圍的高度圖,以此評估橫向和縱向的坡度。

          • 然后,道路中線最好是能向坡度下滑的方向移動 10 米。點被編碼在一個雙向鏈表中,每個點都使用元數據(如坡度、道路寬度和曲率)注釋。

          • 上面這個過程是會一直重復的(以從車輛位置開始的 15 公里的地平線為界),但注意行駛的車道不要有自相交的情況,這也是游戲中道路規劃最難的地方。

          • 中線點的高度用一個 9 個點的窗口進行追溯平滑,以避免海拔的突然急劇變化。

          • 在一個較短的地平線上,大概 10 米的中線被用二次貝塞爾曲線以 1 米的分辨率進行平滑點的注釋。

          當道路規劃完成之后,第三步便是渲染環境。這里可以使用一個 5x5 的大粗網格(這款游戲中,作者采用的是 10 米的分辨率和 1 公里的最大視距)來渲染大型場景。這被稱之為“遠網格”。

          在靠近道路的地方,是一個由更細的 5x5 網格組成的,每個網格拼接到一起,沿著道路中線行進,形成一個連續的 "走廊"。這就是 "近網格",從車輛的位置向前生成一個固定的水平線。

          同時,遠處網格現在重疊的頂點被粗略地 "隱藏 "起來,把它們沉到幾米以下。

          然后離道路中線接近的地方,在道路的高度和底層環境的高度之間插值,以實現無縫過渡。

          除了以上,Anslo 還采用了一個額外的 3x3 網格,渲染離道路中線更近的地方,優化細節,實現更精細的體驗。

          在圖形細節中,這名開發者在游戲中的地面紋理使用世界坐標的 UV,并與 perlin 噪聲混合,以改變的顏色。另外,在樹葉地圖下應用了一個暗色的紋理,用來產生樹影的感官。

          正如上文所述,這款游戲還采用了一些物理學的基礎知識,如汽車每個輪子的動力學都是獨立計算的,使用圍繞重力、表面摩擦力和地面法線的常規運動學方程式。


          最后


          目前這款游戲已經基本完成,不過,Anslo 認為也還有不少需要優化的地方,后續可能會改善天氣效果、更多的車輛類型和控制器支持。

          作為一款沒有使用如 Unity、UE5 等游戲引擎,而僅是使用了 JavaScript 實現的游戲而言,它的輕量級獲得了不少好評:

          • 火星地圖很有趣。另外,我發現汽車在倒擋時候可以同樣快!

          • 如果能教會自動駕駛漂移會很酷。

          • 現在的我沒有駕照,但是也能通過瀏覽器獲得駕駛通信證了,榮譽!

          • 期待后續可以加上背景音樂!

          有不少網友感嘆似乎回到了高中時期玩《Geep Simulator》的年代。不過,目前《Slow Roads》暫時還沒有開源版本的計劃,但作者表示將來不排除有這種可能性。同時根據游戲的頁面顯示,Anslo 稱正在致力于保持《Slow Roads》免費提供且沒有廣告,「享受這作為逃離資本主義的喘息之機」。

          試玩地址:slowroads.io

          參考資料:

          https://anslo.medium.com/slow-roads-tl-dr-a664ac6bce40

          https://twitter.com/anslogen

          https://arstechnica.com/gaming/2022/10/slow-roads-offers-a-chill-endless-driving-experience-in-your-browser/

          https://twitter.com/anslogen/status/1583850492463296517


          主站蜘蛛池模板: 一区二区视频在线播放| 国产精品一区二区久久精品无码 | 亲子乱av一区区三区40岁| 中文字幕av人妻少妇一区二区| 亚洲熟女www一区二区三区| 国产一区二区精品尤物| 久久久久一区二区三区| 免费播放一区二区三区| 精品国产一区二区三区在线| 日韩伦理一区二区| 一区二区三区在线免费看| 男人的天堂av亚洲一区2区 | 风间由美在线亚洲一区| 久久亚洲综合色一区二区三区| 丝袜美腿一区二区三区| 肉色超薄丝袜脚交一区二区| 国产免费一区二区三区免费视频| 一区二区三区午夜视频| 国产一区二区在线看| 国产一区二区三区无码免费| 又硬又粗又大一区二区三区视频 | 日本精品少妇一区二区三区| 人妻无码一区二区三区免费| 国模无码人体一区二区| 久久精品国产一区二区| 国产一区精品视频| 国产在线观看一区二区三区四区| 国产日韩精品视频一区二区三区| 欧洲无码一区二区三区在线观看| 成人在线一区二区| 国产午夜毛片一区二区三区| 亚洲国产av一区二区三区| 无码AV动漫精品一区二区免费| 国产在线精品观看一区| 国产成人精品久久一区二区三区av| 国产一区二区三区在线免费 | 国产精品夜色一区二区三区| 一区二区三区在线观看| 国产一区二区三区在线免费 | 美女免费视频一区二区三区| 国产aⅴ一区二区三区|