高性能Web動畫和渲染原理系列(5)合成層的生成條件和陷阱

目錄

示例代碼託管在:

博客園地址:

華為雲社區地址:

一. 硬件加速相關的幾個概念

之前介紹到了RenderLayer渲染層的概念,在涉及到硬件加速的話題時,出現了很多新的概念,參考《Webkit技術內幕》一書的介紹總結如下:

Webkit決定將哪些RenderLayer對象組合在一起,形成一個有後端存儲的新層,這一新層不久後會用於合成,這裏稱之為合成層(CompositingLayer)。每一個合成層都會對應一個或多個後端存儲,由RenderLayerBacking類進行統一管理,後端存儲空間使用GraphicsLayer來表示,也就是說RenderLayerBacking管理着一個或多個與對應的合成層有關的GraphicsLayer。

筆者旁白:對於渲染過程來說,只需要理解這裏形成了新的CompositingLayer合成層就可以了,其他的層概念基本都是用於實現對CompositingLayer功能支持的,概念數量太多對於理解宏觀流程是一大障礙。

二. 合成層的生成條件

顯式提升

合成層的處理是依賴於硬件加速的,但是GPU的存儲空間有限最好不要濫用,過多的合成層有可能還會造成相反的效果,所以瀏覽器只會將滿足下列任意條件的RenderLayer提升為CompositingLayer:

  • 具有CSS3D屬性或CSS透視效果
  • 包含的RenderObject節點表示的是使用硬件加速的視頻解碼技術的HTML5video元素
  • 包含的RenderObject節點包含使用了硬件加速的Canvas2D或WebGL技術
  • 使用了CSS透明效果或CSS變形動畫
  • 使用了硬件加速的CSS Filters技術(有的文獻中表示filters屬性並沒有提升為合成層的效果,推測只有一部分filters濾鏡效果需要使用硬件加速,並非所有)
  • 使用了剪裁Clip或者反射Reflection,並且它的後代中包含一個合成層
  • 擁有一個Z坐標比自己小的兄弟節點,且該節點是一個合成層。

上面的規則里我們最熟悉的可能就是transform:translateZ(0)或者在關鍵幀動畫的定義中改變transform和opacity屬性。當然,隨着技術的演進,上面的規則並不一定全面,Chromium官網提供的開發者演講PPT中也對提升的理由進行了相關的描述:

你可以在Chrome調試面板的【Layers】功能中對分層相關的結果進行檢視,查看哪些層進行了提升以及被提升的具體原因,避免出現與自己意圖相悖的層提升:

隱式提升

RenderLayer滿足特殊條件時被提升為CompositingLayer對開發者而言是比較可控的。但除此之外,在瀏覽器的合成階段,還存在隱式合成的狀況,一些特定的場景中出現的合成層並不是開發者主觀期望的。

隱式合成主要發生在元素出現重疊時,層級較低的元素如果被提升為合成層后,最終合成的結果就可能出現在原來比自己層級更高的元素之上,從而出現錯誤的堆疊關係,為了糾正這種關係,只能讓原本層級高(但是並不用提升為合成層的元素)發生提升也成為合成層。例如下面的代碼:

<div style="position:absolute;height:200px;width:200px;background-color: #DA5961;"></div>
<div style="position:absolute;left:30px;top:50px;height:200px;width:200px;background-color: #3498db;"></div>
<div style="position:absolute;left:60px;top:100px;height:200px;width:200px;background-color: #1abc9c;"></div>

三個div盒子堆疊在一起,可以看到它們都繪製在同一個層上(這裏的層並不與RenderLayer對應,畢竟它只是一个中間態的樹結構):

此時如果為最底下的紅色矩形添加transform:translateZ(0)屬性將其提升為合成層后,為了保證正確的堆疊關係,藍色和綠色的矩形就會被提升為合成層,代碼如下:

<div style="transform:translateZ(0);position:absolute;height:200px;width:200px;background-color: #DA5961;"></div>
<div style="position:absolute;left:30px;top:50px;height:200px;width:200px;background-color: #3498db;"></div>
<div style="position:absolute;left:60px;top:100px;height:200px;width:200px;background-color: #1abc9c;"></div>

藍色和綠色的矩形並沒有形成獨立的合成層,而是被壓縮在同一個合成層中:

從上圖中的細節信息中可以看到,提升的原因是layerFotSquashingContent,也就是為了保證堆疊順序的正確,用一個單獨的合成層來將受到影響的元素收集在一起,既保證堆疊順序,也避免在期望之外生成過多的合成層。如果調整綠色矩形的位置,就可以看到,當視覺上不存在覆蓋時,它就不需要提升了:

BUT!!!還沒完,最坑的部分來了,如果此時給藍色的div加上一點動畫,你會發現綠色div又被提升到了獨立的合成層上,儘管他們之間並沒有重疊區,但還是被提升了:

從圖中的合成原因可以看到:它可能和一個相鄰的合成層元素髮生交疊,所以被提升了。沒錯,就是“可能”。Fouber這篇中的示例更加詳細,子元素引發父元素提升,父元素又引發兄弟元素提升。

三. 硬件加速的權衡

所有的技術方案都是有代價的,這是亘古不變的道理,合成層的好處很明顯,GPU比CPU的處理速度快很多,觸發repaint重繪時,只需要重繪獨立的層,然後重新合成即可,不需要重繪整個畫面。但它也存在一些弊端:首先是數據傳輸的問題,CPU和GPU的關係就好比客戶端和服務端一樣,它們的協作是需要傳輸數據的,當層的數量達到一定量級后,傳輸的速度就會影響到整體的處理效率,進而導致在一些低中端設備上出現閃爍等現象;另外,每個合成層都具會佔據額外的內存,這個數量通常比開發者以為的要大的多,尤其是在移動端這種硬件資源受限制的場景中,過量的內存使用分分鐘就會讓應用崩潰。

四. 動畫實現的一些建議

  1. 使用transform實現動畫

    這可能是我們編寫動畫時聽到最多的建議了。例如使用left和top來實現位置動畫時,絕對定位的元素會形成RenderLayer,但是卻不符合提升為CompositingLayer的條件,所以動畫元素就會和Document處在同一個合成層里,持續進行的動畫就會導致Document這一層(通常是正常文檔流這一層,包含了大量的流式布局的元素)不斷重繪,從而影響渲染效率,如果能夠讓動畫的節點放到單獨的合成層里,就可以避免這種大規模重繪,並藉助GPU加速合成的能力加速整個渲染流程。

  2. 排查被動提升的情形

    被動提升主要是指“兄弟元素相對層級低於自己但卻是一個合成層”的情形以及“發生堆疊遮擋的幾個元素中層級較低的元素被提升為合成層”的狀況。一般的解決方案是主動提升動畫元素的z-index值或者調整文檔結構中節點的先後順序,當然所有的結果都還需要通過測試來確認。

  3. 考慮合成層的空間佔用

    合成層的後端存儲是渲染后的像素點數據,它的體積可能會非常大,在使用大屏圖片時需要盡可能將其壓縮至視覺可接受的範圍而不能一味追求高清,對於純色的元素,可以使用較小的尺寸並藉助transform:scale來放大至需要的尺寸。

  4. 實測為王

    任何方案都只是一種思路,必須通過在真實環境測試驗證才能確認其有效性。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

高通將研發動態無線充電技術 有望實現邊行駛邊充電

高通近日表示他們正在研發一種動態無線充電技術,可以緩解電動汽車行駛一半沒電的這種困擾,實現邊行駛汽車邊充電。

2014年的時候高通在首屆電動汽車方程式錦標賽中推出了Halo車用無線充電系統(靜態無線充電技術)。這個名為Halo的車用無線充電系統總共包含四個部分:供電組件、充電板、車載接收器和車載控制器。而它的原理是利用磁共振效應實現地面充電板與電動車充電板之間的電量傳輸,從而實現對純電動汽車或是混合型動力汽車的動力電池組進行非接觸式充電。

在利用Halo車用無線充電系統給汽車進行充電時的操作也相對簡單, Halo車用無線充電系統也成為靜態車用無線充電系統,高通表示在充電時只需將車輛停放在充電裝置上即可實現充電任務, Halo 車用無線充電系統的充電效率可以高達90%,堪稱絕對的高效,遠遠超過現階段的線纜充電裝備的充電效率。據悉Halo車用無線充電系統的功率可達20kW,一個配備85kWh電池組的特斯拉 MODEL S P85利用Halo車用無線充電系統充電整個過程也只需要不到五個小時的時間即可完成。

在談到Halo車用無線充電系統時,高通總裁Aberle表示這種技術將在未來的兩到三年即可問世,應用到當下的電動汽車中。目前高通表示他們正在和汽車製造商戴姆勒-克萊斯勒合作,準備將這種靜態無線充電系統應用到他們的汽車中。

而未來要推出的這種動態無線充電技術屬於Halo車用無線充電系統即靜態無線充電技術的升級版,為了實現這種邊行駛邊充電的目標,未來他們將會吧無線充電裝置安裝在路面地下,當電動汽車行駛經過含有充電裝置的路段時即可實現邊行駛邊充電。但由於這種技術需要對路面進行徹底的翻修重置,需要高昂的專案費用,因而短時間內還是不能實現邊行駛邊充電的目標。

其實高通並不是第一個因為這種原因拉長專案進程的公司,之前因特爾曾計畫在機場、火車站、餐館等公共場所為筆記本等智慧設備修建無線充電系統,但因為對基礎設施改造的工程量巨大和所需的項目費昂貴,項目始終進展緩慢,暫時毫無進展。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

德國政府斥資20億歐元發力電動汽車

德國總理默克爾日前召見了幾位德國主要車企高管,討論電動汽車補貼政策問題。在此之前,德國經濟部長(西格馬•加布里爾)也承諾要拿出20億歐元來鼓勵消費者購買電動汽車,這些資金將主要用於消費者購買補貼、充電網路建設及鼓勵政府用車等方面。

具體政策,德國政府還要和汽車製造商繼續對話,最快也要等到3月才會制定完成。

儘管默克爾與汽車行業老闆們的會談還未達成一致,但對電動汽車補助政策的制定還是能起到極強的推動作用。根據路透社最新報導,“默克爾團隊考慮推行一項高達5000歐元的補助給電動車車主,但德國財長朔伊布勒表示反對。”

其實,從2009年以來,德國就一直通過鼓勵措施來推動新能源汽車的發展。2009年,德國內閣通過了具有重要戰略意義的電動汽車發展綱領性檔《國家電動汽車發展計畫》,該計畫確定了發展電動汽車的主要技術路線,以及德國發展電動汽車的目標;2011年,德國政府發佈了電動汽車政府行動計畫,提出將2013年年底前投入電動汽車研發的政府資助由之前規劃的10億歐元提高到20億歐元,並將推動建設3—4個國家級大規模示範專案;更在2014年通過了一項關於電動汽車的新法律,旨在提高德國全境電動汽車的使用率,該項法律從經濟補貼、擁有進入限制區域的權利、停車優惠、特殊標誌車牌、車道使用等多方面極大的保障了新能源汽車消費者的利益。而今年德國又將斥20億歐元出臺補貼政策,則更能看出德國政府對新能源汽車產業的重視。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

小白學 Python(24):Excel 基礎操作(下)

人生苦短,我選Python

前文傳送門

在這裏首先恭喜各位看到本篇連載的同學,本篇連載為 《小白學 Python 基礎系列》 最後一篇,恭喜各位在學習 Python 的道路上邁出了堅實的一大步。

寫入 Excel

首先當然是安裝第三方模塊:

pip install openpyxl

首先我們需要先創建一個 WorkBook :

import xlsxwriter

workbook = xlsxwriter.Workbook('demo.xlsx')

在所有操作之前,需要記得先導入我們剛才安裝的 xlsxwriter 的模塊。

接下來,我們創建一個 Sheet :

sheet1 = workbook.add_worksheet('test_sheet')

創建完成后,需要關閉 workbook ,這一步會將我們剛才創建的 workbook 進行保存。

workbook.close()

好了,我們已經創建好了一個 excel ,操作結束,下課。

老師,你回來,這就完了?

我們接着介紹如何將數據寫入至 Excel 中。

首先我們可以先設置一些的單元格的格式:

workfomat = workbook.add_format()
# 字體加粗
workfomat.set_bold(True)
# 單元格邊框寬度
workfomat.set_border(1)
# 對齊方式
workfomat.set_align('left')
# 格式化數據格式為小數點后兩位
workfomat.set_num_format('0.00')

然後我們將內容寫入,具體內容小編懶得想了,直接複製上一篇文章中的內容:

heads = ['', '語文', '數學', '英語']
datas = [
    ['小明', 76, 85, 95],
    ['小紅', 85, 58, 92],
    ['小王', 98, 96, 91]
]

sheet1.write_row('A1', heads, workfomat)

sheet1.write_row('A2', datas[0], workfomat)
sheet1.write_row('A3', datas[1], workfomat)
sheet1.write_row('A4', datas[2], workfomat)

然後執行程序,我們來看下最終輸出的結果:

除了可以這樣輸出以外,我們還可以指定輸出的單元格格式:

我們列舉一個比較複雜的輸出日期類型:

fomat1 = workbook.add_format({'num_format': 'yy/mm/dd/ hh:mm:ss'})

sheet1.write_datetime('E5', datetime.datetime(2019, 11, 9, 22, 44, 26), fomat1)

注意: 上面的格式化一定要加,否則在 Excel 中显示出來的只會是一個時間戳。

其他的輸出類型小編這裏就不一一舉例了,下面列出一些常用的:

# 字符串類型
sheet1.write_string()
# 数字型
sheet1.wirte_number()
# 空類型
sheet1.write_blank()
# 公式
sheet1.write_formula()
# 布爾型
sheet1.write_boolean()
# 超鏈接
sheet1.write_url()

我們還可以在 Excel 中插入圖片,樣例如下:

sheet1.insert_image('I6', 'wx.jpg')

語法如下:

insert_image(row, col, image[, options])

row:行坐標,起始索引值為0;
col:列坐標,起始索引值為0;
image:string類型,是圖片路徑;
options:dict類型,是可選參數,用於指定圖片位置,如URL等信息;

我們還可以在 Excel 中繪圖,支持包括面積、條形圖、柱狀圖、折線圖、散點圖等。

圖表對象是通過 Workbook add_chart() 方法創建的,其中指定了圖表類型:

chart = workbook.add_chart({'type': 'column'})

常見的圖表樣式如下:

area:面積樣式的圖表
bar:條形圖
column:柱狀圖
line:線條樣式的圖表
pie:餅形圖
scatter:散點圖
stock:股票樣式的圖表
radar:雷達樣式的圖表

然後使用 insert_chart() Worksheet方法將其作為嵌入的圖表插入到工作表中:

sheet1.insert_chart('A7', chart)

完整示例如下:

chart = workbook.add_chart({'type': 'column'})

chart.add_series({'values': '=test_sheet!$B$2:$B$4'})
chart.add_series({'values': '=test_sheet!$C$2:$C$4'})
chart.add_series({'values': '=test_sheet!$D$2:$D$4'})

sheet1.insert_chart('A7', chart)

結果如下:

一些常用的簡單的操作就介紹到這裏,想了解更多的同學可以訪問官方文檔,鏈接小編已經找出來了: 。

示例代碼

本系列的所有代碼小編都會放在代碼管理倉庫 Github 和 Gitee 上,方便大家取用。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

賓利「首款電動車」預告年中亮相 將掀層峰品牌電車大戰?

摘錄自2020年3月9日中央社報導

除了在四年前推出層峰休旅車Bentayga外,賓利(Bentley)現在也打算推出零排放的純電動車,預計在今年年中就會亮相,正式跨足電動車領域!

據《TopGear》報導,賓利總裁Adrian Hallmark證實,賓利將於今年年中推出首款量產電動車,並將提供Mulliner客製化項目。至於為何直到現在才推出電動產品,Hallmark則表示,電動車鋰電池的成本是傳統內燃機引擎的六倍,而內燃機也佔了車輛成本的20%,在如此昂貴的情況下,也使賓利相對較晚才推出電動車。不過,考量到未來五到六年內鋰電池將會更便宜、體積更小,屆時賓利也會推出軸距恰當、車格大小適中的電動產品。

賓利目前也已在生產過程達成「碳中和」,並有望成為VAG福斯汽車集團中,第一個實現碳中和的豪華品牌。

能源議題
國際新聞
電動車

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

台灣特斯拉正式成軍,維修業務職缺首先釋出

台灣過去是電動車製造商特斯拉(Tesla)關鍵零件的生產基地,但目前如Model S 仍要透過代理商引進台灣。近日傳來好消息,特斯拉向北市府登記「台灣特斯拉汽車有限公司」已核准設立,完成進軍台灣的第一步。

台灣曾是特斯拉關鍵零件如電動馬達、電控系統的生產基地,供應鏈集中於台中、林口一帶,全盛時期有將近25% 的零組件來自台灣。特斯拉推出第一款電動跑車Tesla Roadster,就已經搭載台灣供應商的零組件。

特斯拉早在 2006 年6 月26 日由經濟部中部辦公室核准設立台灣特斯拉汽車有限公司,負責電動車內部重要的機電整合系統,並與台灣供應鏈密切合作。但原公司在2010年解散並清算完結,今年向台北市政府遞交申請。

由經濟部商業司的全國商工行政服務入口網,已能查詢特斯拉向北市府登記的公開資料,公司名稱為「台灣特斯拉汽車有限公司」,核准設立日期是2016年3 月16 日,營業事業包括汽車批發業、汽車零售業、國際貿易業、汽車修理業、租賃業等項目。

不只如此,該公司也在104 人力銀行刊登徵才資訊,是由中國特斯拉團隊著手籌備,截稿前已有11 個工作機會,需求人數逾20 人,多為銷售、維修等相關職缺。上述皆能看出特斯拉開始佈局台灣電動車市場,期待不久的將來特斯拉正式在台營運,建置充電網並銷售旗下車款。

本文授權轉載自《》──〈〉

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

架構設計:”4+1″視圖

概念

“4+1”視圖,是指從5個不同視角來描述軟件體繫結構。
“4+1”分別指:

  1. 邏輯視圖
  2. 過程視圖
  3. 物理視圖
  4. 開發視圖
  5. 場景/用例 視圖

邏輯架構的描述可以圍繞前四個視圖進行組織,然後結合用例或場景進行說明,形成第五個視圖。

每個視圖只關心繫統的一個側面,5個視圖結合起來,才能反映系統的全部內容。

關於視圖

軟件設計可以從不同的概念角度進行描述和記錄,這些角度通常被稱為視圖。

“視圖表示軟件體繫結構的一部分,它显示軟件系統的特定屬性”

不同的視圖涉及與軟件相關的不同問題。

總之,軟件設計是由設計過程產生的多方面的產物,通常由相對獨立的正交視圖組成,可以結合建築視圖理解。

邏輯視圖

當使用面向對象的設計方法時,邏輯視圖對應設計的對象模型,常用描述方法有UML類圖、E-R圖。

邏輯架構主要支持功能需求,即系統應該為用戶提供什麼樣的服務。
系統被分解成一組關鍵抽象,以對象或對象類的形式從問題中表述。

類的設計遵循抽象、封裝和繼承的原則,這種分解不僅是為了進行功能分析,也是為了理清系統各個部分的通用機制和設計元素。

過程視圖

過程架構關注設計的併發和同步方面,考慮了一些非功能性需求,比如性能和可用性。
過程視圖可以在幾個抽象層次上進行描述,每個抽象層次處理不同的關注點:

  • 在最高層次上關注進程,進程分佈在由LAN或WAN連接的一組硬件資源上,作為一組獨立執行的通信程序邏輯網絡。
  • 多個邏輯網絡可以同時存在,共享相同的物理資源。

主要任務是通過一組定義良好的任務間通信機制進行通信:基於同步和異步消息的通信服務、遠程過程調用、事件廣播等。

次要任務是可以通過集合或共享內存進行通信,避免重大任務在同一過程或處理節點上進行配置假設。

物理視圖

物理視圖描述軟件到硬件的映射,主要反映在分佈式方面。

物理架構主要考慮系統的非功能性需求,如可用性、可靠性(容錯性)、性能(吞吐量)和可擴展性。

常見物理配置:

  • 測試
  • 為不同站點或不同客戶部署系統

開發視圖

開發視圖描述軟件在其開發環境中的靜態組織。

開發架構的重點:

  • 對軟件開發環境中實際軟件模塊進行組織
  • 將軟件打包成小的程序庫,或者打包成可以由一個或少量開發人員開發的子系統

系統的開發架構由模塊和子系統圖表示,表示成“導出”和“導入”關係。只有當軟件的所有元素都被識別之後,才能描述完整的開發架構。

在很大程度上,開發架構考慮發展的便利性、軟件管理、重用或通用性,以及工具集或編程語言施加的約束。

開發視圖是需求分配的基礎,便於開發團隊分配工作,有助於成本評估和提前計劃、監控項目進度、軟件重用、可移植性和安全性的推理。通過開發視圖,容易得出項目開發人員的分工配置。

實際應用中,開發視圖會在邏輯視圖的基礎上增加大量內容,比如大量接口、輔助類等。

場景/用例 視圖

架構的描述決策可以圍繞前四個視圖進行組織,然後由一些選定的用例或場景(成為第五個視圖)進行說明。

其他四個視圖中的元素,可以通過一些重要的場景或用例進行更好的展示,比如:

  • 構造更符合用例的實例
  • 描述一些關聯腳本,如對象之間或進程之間的交互

總結

並非所有的軟件架構都需要完整的“4+1”視圖。

無用的視圖可以從架構描述中省略,例如:

  • 如果只有一個處理器,則不需要物理視圖
  • 如果只有一個進程或程序,則不需要進程視圖
  • 對於非常小的系統,有可能邏輯視圖和開發視圖非常相似,不需要單獨描述

場景視圖在任何情況下都有用。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

台廠商農作廢棄物製吸管 紐約參展進軍美東

摘錄自2020年03月14日世界新聞網全國報導

全球環保意識興起,紐約市也於本月開始禁用免費塑膠袋,來自台灣的鉅田潔淨技術公司以農作廢棄物,包括甘蔗渣、咖啡渣、竹子粉等材料,製成不含聚乳酸(PLA)的甘蔗吸管,以廢棄物循環再利用的環保概念,於過去幾年成功推廣至美西,如今希望藉由到紐約參加專業展覽,讓產品進軍美東地區。

據統計,全世界每年使用3700億支一次性塑膠吸管,今年首次至紐約參展的鉅田潔淨技術公司,推出的甘蔗吸管則是以循環再生經濟理念邁,以可再生材料作為原料製造,並訴求吸管能夠自然分解,確保地球有限的資源能以循環再生、永續方式被使用,形成一個友善的經濟及產業系統。

該公司業務經理楊量祺說,以目前美國市場,加州對於可分解吸管的接受度較高,紐約目前則是有部分店家開始使用環保吸管,普及度仍較低;甘蔗吸管雖然成本是一般塑膠吸管的六倍,但基於大眾環保意識抬頭,展覽期間仍有不低的詢問度。

公害污染
廢棄物
國際新聞
紐約
塑膠袋
吸管

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

三菱電機將自己的導彈技術用在無人駕駛汽車上

日本三菱電機準備將自己的武器技術用在無人駕駛汽車上,可以利用的元件包括雷達、聲納發射機、感測器和攝像頭,這些組件是導彈所必需的。需要注意的是三菱電機並不是汽車製造商三菱。

三菱電機工程師Katsumi Adachi在接受採訪時透露說,公司希望將技術用在汽車中,這些汽車2020年就會上路。

2017年4月,三菱電機就會開始生產車道保持、自動刹車系統元件。在隨後的一個財年裡,公司將會開始生產自動刹車系統。三菱電機為日本空軍提供空對空導彈,它希望用軍事技術幫助無人駕駛汽車偵測障礙物、避免碰撞。據Katsumi Adachi透露,已經有企業向三菱電機定購自動刹車系統和車道保持元件。他還說,三菱電機掌握了高精度感測器、電動助力轉向系統相關技術,明年公司就可以提供更先進的系統了。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?

CSS複合選擇器是什麼?複合選擇器是如何工作

複合選擇器介紹

  • 複合選擇器其實很好理解,說白了就跟我們生活中的有血緣關係家庭成員一樣,通過標籤或者class屬性或id屬性,去找對應的有血緣關係的某個選擇器,具體的大家往下看哦。
  • 如果是初學者對基本的選擇器不是很了解的可以看筆者之前寫過的基本選擇器文章,,在這就不過多的介紹基本選擇器的使用了。

複合選擇器說明表

選擇器 描述 舉例
選擇器1 選擇器2{屬性:值;} 多元素選擇器。同時匹配選擇器1和選擇器2,多個選擇器之間用逗號隔開即可。 h1,h2,h3{color: red;}
E F {屬性:值;} 後代元素選擇器,匹配所有屬於E元素後代的F元素,E和F之間用空格隔開即可。 .box h1{color: red;}
E>F{屬性:值;} 子元素選擇器,匹配所有E元素的子元素為F div >h1{color:red;}
E+F{屬性:值;} 相鄰元素選擇器,匹配所有緊跟隨着E元素之後的同級元素F div+div{color:red;}

多元素選擇器

  • 多元素選擇器在工作當中經常會用到,主要用於設置多個元素使用同一種CSS樣式。
  • 讓我們進入多元素選擇器實踐,實踐內容如:將HTML頁面中的div標籤、h1標籤、p標籤、中的文本顏色設置為紅色。
  • 代碼塊

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>多元素選擇器</title>
</head>
    <style>
        div,h1,p{
           color: red;
        }
    </style>
<body>
    <div>成功不是打敗別人,而是改變自己。</div>
    <h1>成功不是打敗別人,而是改變自己。</h1>
    <p>成功不是打敗別人,而是改變自己。</p>
</body>

</html>
  • 結果圖

  • 注意:作用給列表中的所有的選擇器設置樣式,class類選擇器或id選擇器也是一樣,在這裏就拿class類選擇器屬性值為.box為例,其餘的大家可以自己嘗試。

  • 代碼塊

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>多元素選擇器</title>
</head>
    <style>
        .box,h1,p{
           color: red;
        }
    </style>
<body>
    <div class="box" >成功不是打敗別人,而是改變自己。</div>
    <h1>成功不是打敗別人,而是改變自己。</h1>
    <p>成功不是打敗別人,而是改變自己。</p>
</body>

</html>
  • 結果圖

後代元素選擇器

  • 讓我們進入後代元素選擇器實踐,實踐內容如:將class屬性值為.box的後代元素文本顏色設置為紅色,給大家介紹下結構:class屬性值為.box中一共有三個子元素,第一個h1標籤、第二個h1標籤、第三個div標籤、但是第三個子元素為div標籤裏面還有一個子元素為h1標籤或者我們可以理解為class屬性值為.box的孫子輩元素。
  • 代碼塊

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>後代元素選擇器</title>
</head>
    <style>
        .box h1{
           color: red;
        }
    </style>
<body>
    <div class="box" >
        <h1>成功不是打敗別人,而是改變自己。</h1>
        <h1>微笑是最初的信仰</h1>
        <div>
            <h1>成功不是打敗別人,而是改變自己。</h1>
        </div>
    </div>
    
</body>

</html>
  • 結果圖

  • 注意:後代選擇器只能包含在class屬性值為.box裏面的所有屬性。

子元素選擇器

  • 讓我們進入子元素選擇器實踐,實踐內容如:將class屬性值為.box的子元素文本顏色設置為紅色,給大家介紹下結構:class屬性值為.box中一共有三個子元素,第一個h1標籤、第二個h1標籤、div標籤、但是第三個子元素為div標籤裏面還有一個子元素為h1標籤或者我們可以理解為class屬性值為.box的孫子輩元素。

  • 代碼塊

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>子元素選擇器</title>
</head>
    <style>
        .box > h1{
           color: red;
        }
    </style>
<body>
    <div class="box" >
        <h1>成功不是打敗別人,而是改變自己。</h1>
        <h1>微笑是最初的信仰</h1>
        <div>
            <h1>成功不是打敗別人,而是改變自己。</h1>
        </div>
    </div>

</body>

</html>
  • 結果圖

  • 注意:子元素選擇器和後代元素選擇器是不樣的,子元素選擇器是將class屬性值為.box中的子元素設置CSS樣式,後代元素選擇器是將class屬性值為.box中的所有元素設置CSS樣式,現在大家應該明白了,為什麼div標籤中的h1標籤文本顏色沒有被渲染的原因了吧,因為div標籤中的h1標籤是孫子輩。

相鄰元素選擇器

  • 相鄰元素選擇器必須滿足以下條件才會匹配。
  • E元素與F元素必須是兄弟關係,意思就是平輩關係。
  • E元素與F元素必須要緊挨着,就是之間不能有任何元素阻擋。
  • 要求F元素一定是在E元素的下面。
  • 讓我們進入相鄰元素選擇器實踐,實踐內容如:將HTML頁面中的class屬性值為.box的相鄰元素文本顏色設置為紅色。
  • 代碼塊

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>相鄰元素選擇器</title>
</head>
    <style>
        .box + h1{
           color: red;
        }
    </style>
<body>
    <h1>我在上面學習</h1>
    <div class="box" >
        <h1>成功不是打敗別人,而是改變自己。</h1>
    </div>
    <h1>我在下面學習</h1>
</body>
</html>
  • 結果圖

  • 注意:大家一定要注意以上的2個必須和1個一定的規則,否則CSS樣式不會被渲染。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包”嚨底家”

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

※小三通海運與一般國際貿易有何不同?

※小三通快遞通關作業有哪些?