Math.hypot()方法的功能就是先計算它的所有參數的平方和,再返回該和的平方根。我們知道,在數學上一個正數有兩個平方根,它們絕對值相等但一正一負;但是由于Math.hypot()方法只能返回一個值,因此它的結果是為正的那個平方根。Math.hypot()方法可以接受任意多個參數,比如0個、1個、兩個等等。
調用Math.hypot()方法的語法形式如下所示,其中方括號表示它里面的內容可有可無,實際調用該方法的時候不要書寫方括號。
Math.hypot([value1 [, value2 [, ...] ] ] );
因為Math.hypot()方法要先計算它的參數的平方和,那么我們可知它的所有參數都應該是數字,即它們都屬于Number類型。如果某個參數不是Number類型的,那么它會先被自動轉換為Number類型。
我們舉一個具體的例子來演示Math.hypot()方法的作用。假設我們要求一個直角三角形的斜邊有多長,并且已知兩個直角邊分別是3和4。按照勾股定理可知,斜邊等于兩個直角邊的平方和再開方。這一計算過程正好可以交給Math.hypot()方法來完成,我們以兩個參數3和4調用Math.hypot(),那么它的結果就是斜邊的長度5。
Math.hypot(3, 4)的執行過程是這樣的:先計算3和4的平方和,即3的平方9加上4的平方16,結果是25;再計算該平方和(25)的平方根,結果就是5。其它情況以此類推,反正都是先計算所有參數的平方和,再求該和的平方根。
因為Math.hypot()方法可以接受任意多個參數,并且JavaScript的Number類型包含NaN、+0、-0、正無窮(+Infinity)和負無窮(-Infinity)這5個特殊數字,這就讓調用Math.hypot()方法時的參數可能非常復雜。因此JavaScript要按照如下規則來決定Math.hypot()方法的返回值;如果某個參數不是數字,那么下面這些規則中提到的參數的值指的是它被轉換為數字后的值。
1. 如果沒有傳遞任何參數,即Math.hypot()的參數數量為0,那么返回值是+0;
2. 如果任意一個參數是正無窮(+Infinity),那么返回值是正無窮;
3. 如果任意一個參數是負無窮(-Infinity),那么返回值是正無窮;
4. 如果所有參數中都不包含正無窮和負無窮,并且任意一個參數是NaN,那么返回值是NaN;
5. 如果所有參數都是+0或者-0,那么返回值是+0;
6. 其余情況下,就先計算所有參數的平方和,再將該和的平方根作為最終返回值。
對以上這些規則不要死記硬背,它們在本質上都是對先計算所有參數的平方和再計算該和的平方根這一過程的運用,只是當參數為0個或者為特殊數字時,需要額外注意而已。
我們用不同的參數組合來調用Math.hypot()方法,并展示它們的結果;調用每一個Math.hypot()方法時的參數有何特點,都用相應的注釋進行說明。以下代碼的執行結果如圖1所示。
圖1 示例代碼的執行結果
(完)
hoto by Charles Deluvio on Unsplash
我決定寫這個博客的目的是希望探索更多有關使用CSS調整大小的方法。 有這么多種可能性,很容易感到不知所措和困惑。 瀏覽器當前支持16種度量單位:像素,英寸,皮卡,厘米,毫米,點,百分比,em,rem,視口尺寸(vw,vh),ex,ch,Vmax(最大視口)和vmin (viewportmin)在這16個單位中有兩類:相對長度和絕對長度。
首先要了解相對長度,它們會在其他物體上獲得尺寸,這些尺寸在您要設定尺寸的元素之外或相對于它們,例如,父級的尺寸,字體大小和視口尺寸。
百分比基于其父元素。 因此,如果一個元素為200px * 200px,并且該元素的子元素的寬度為50%,高度為50%,則該子元素的等效尺寸為100px * 100px,因為200px的50%為100px。
在這里,我們有一個名為" parent-box"的div元素和一個名為" child-box"的子div元素。
在css文件中,我將父盒的高度和寬度設置為200px,子盒的寬度和高度設置為50%,這意味著現在子盒將是父盒尺寸的50%,因此 如果父框為200px * 200px,則表示子框為100px * 100px,結果如下:
如您所見,藍色元素(即子元素)正好是粉紅色框(即父元素)的50%。
當前有四種類型的視口尺寸單位,vw(視口寬度),vh(視口高度),vmin(視口最小)和vmax(視口最大)。 使用這些單位時要知道的第一件事是,它們會自動將瀏覽器的屏幕劃分為100 x 100的不可見網格,網格中的每個正方形或單位將根據情況代表一個vw,vh,vmin或vmax。
因此,讓我們更深入地研究這兩個。 如果我們聲明一個元素的寬度為50vw且高度為50vh,我們將看到該元素將恰好占據頁面高度的一半,并且占據頁面寬度的一半,每個vw或vh現在相當于那個不可見的100 *中的一個單元 100,所以如果我們聲明一個元素為50vw,它將是瀏覽器寬度的一半,下面我們來看一個示例。
在這里,我們看到父元素恰好是瀏覽器高度和寬度的一半。
這些單位比較棘手。 因此,這些單元的工作方式是將使用高度或寬度的最大或最小長度。 例如,讓我們聲明父框的寬度為50vmax,如果瀏覽器的寬度為800px,高度為500px,則父框的寬度為400px,因為寬度大于高度,所以 元素將從瀏覽器的水平部分的不可見網格中獲取50個單位,現在,如果高度為1000px,寬度為500px,則父框的寬度現在為500px,因為瀏覽器的高度現在大于寬度,因此父元素 box將占據瀏覽器垂直邊100平方中的50平方,并使用它來聲明父對象的框寬。
現在進入vmin。 假設我們聲明父級框的寬度為50vmin,那么從最小視口尺寸開始,父級框的寬度將占據50個網格單位。 同樣的示例,如果瀏覽器的寬度為800px,高度為500px,則父框的寬度現在將為250px,因為我們聲明父框的寬度為最小視口尺寸的50個單位, 在這種情況下,是高度。 現在,如果高度為1000像素,寬度為600像素,則父框的寬度現在為300像素,我知道這非常令人困惑,因此讓我們回到第一個示例:
Here we declare the width to be 50vmax (50 units out of 100 from the BIGGEST viewport dimension)
這樣看起來像這樣:
我們可以看到父框現在恰好是瀏覽器寬度長度的一半,這是因為瀏覽器的寬度大于高度。 現在,如果我們改變一切,將會得到不同的結果。
Here we declare the width to be 50vmin (50 units out of 100 from the SMALLEST viewport dimension)
所以看起來像這樣:
我們可以看到父框現在恰好是瀏覽器高度的一半,這是因為瀏覽器的高度小于寬度。
我從未使用過這些單元,但讓我們看看它們是如何工作的。 所以首先讓我們從ex開始。 這個單位測量您正在使用的任何字體系列的字母" X"的高度,這是指字母" X"的高度? 因此,如果此" X"的高度為10px(字面的字母為" X"),則1ex將為10px,假設您使用的是另一個字體系列中的" X",其中" X"的高度為9px,所以現在1ex 是9px。
ch的行為方式非常相似,不同之處在于1ch的長度將基于字體家族的字母" O"的寬度,因此,如果字母" O"的寬度為5px,則1ch將等于5px 。
此單位響應父元素的字體大小,因此,如果父元素的字體大小為10px,則每個em現在等于10 px。
在這里,我們在父框內聲明一個10px字體大小,并將子元素的寬度和高度設置為5em,因此,如果父元素的字體大小為10px,則意味著每個em值10px,因此我們的子元素將為50px * 50像素
em的作用是它們級聯,這意味著什么? 因此,如果子元素內有另一個元素,并且將其尺寸設置為5em,則第二個子元素將為100px * 100px
發生這種情況的原因是,當一個孩子中有另一個元素時,第二個孩子會將值乘以2,瘋狂嗎? 這就是為什么在使用em時我們必須小心。
現在,rem與em有所不同,因為rem基于根字體大小而不是父字體來確定其尺寸。 rem一詞的意思是" root em",這解決了我們在em元素級聯時遇到的問題,通過基于root取其維度,rem值在整個文件中都相同。 因此,讓我們看一下相同的示例,但帶有rem。
因此,如果將本示例與上面的示例進行比較,我們可以看到父框的字體大小現在為30,但是第一個和第二個子控件的字體大小較小,我們還可以看到元素沒有級聯, 是因為以10px的字體大小聲明了根,所以無論何時我們現在使用rem,它都將始終引用10px。
絕對長度不會根據其他因素或頁面,父級,視口等其他因素來決定其大小。
因此,我覺得關于這些度量單位的解釋很多。 如果您將某物聲明為1in,則無論屏幕大小如何,該值都將為1in。 厘米和毫米也一樣
因此,points和picas是印刷術語。 point是1/72英寸,因此很小,12點活字就是12點或1/6英寸。
最后但并非最不重要…
現在,像素是絕對長度,但是它們的大小可能取決于您所使用的設備,某些設備的像素比其他設備大,這取決于它們的密度和分辨率。
(本文翻譯自Sebastian Delima的文章《CSS: Units Of Measurement (px, em, rem, vw, %, etc.)》,參考:https://medium.com/swlh/css-units-of-measurement-px-em-rem-vw-etc-ed8522620775)
在越南河內和西貢等城市的街道上漫游時,經常會遇到很多外墻狹窄的房屋,它瘦高的立面與背后看似無窮無盡的延伸形成對比,一般來說由三到五層疊加。這些特征組成了越南的傳統民居類型——夾縫住宅(tube houses)。
夾縫住宅的出現主要與越南的地價稅相關。越南的地價稅以房屋所占路面寬度計算,因此很多越南的業主為了減少地價稅,選擇將房子變窄,轉而開發上方的空間。
同時,建筑的背后也反映了城市生活的實際需求。盡管有了現代公寓,但很多越南人仍然希望在一塊有私人入口的土地上擁有自己的房子,并且與家人居住在一起。對于不斷增長的城市人口來說,夾縫住宅成為了一種既高效又節約成本的形式。
然而,這種類型的建筑也帶來了很多使用上的問題。采光通風如何解決,結構如何做到堅固穩定,功能布局如何更為合理有趣?
越南建筑師在當今的設計中持續思考著,他們通過一些創新的解決方案,提供了更高質量的居住環境。這里面又有哪些巧思呢?讓我們接著往下看吧!
作者|芒庫
編輯|Yun Fei,Yihan
Vegan House / Block ArchitectsA
這棟房子位于一個舊露臺上,旁邊是一棟建于 1965 年的公寓。業主在旅游業工作,他計劃將其改造成一個文化場所。在這里,人們見面、分享和烹飪越南傳統食物,特別是素食。
在提出項目之前,業主從朋友那里囤積了很多廢棄的舊東西——各種各樣的家具如桌子、椅子、衣柜、窗戶和燈罩。由于預算緊張,建筑師利用這些舊的東西與可用的和新的東西,創造一個新鮮的地方,并使其仍然保持舊房子的傳統價值。
舊窗戶作為主要材料,創造了獨特的外觀。這些窗戶因為通風良好在越南長期以來被廣泛使。現在,將它們重新排列成不同顏色組合的新立面,覆蓋住舊立面,一直包裹到屋頂。這創造了一種特殊的吸引力,并與整個街區古老的氛圍相協調。屋頂上的一些開窗為樹木提供了生長空間和自然光線。
這些窗戶也可以作為室內的光線隔斷,分隔和裝飾空間。
在底層,一個長長的曲線櫥柜貫穿整個房間。前面的大廚房是人們在餐廳做飯、聊天和享受烹飪的地方。花園和通往一樓的舊樓梯就其旁邊。
在一層有一間臥室和一個供人放松或工作的地方。通往二樓的中庭旁建造了一個新的鋼樓梯,這里曾經是一個未使用的屋頂。
另外,臥室由舊鋼板制成,位于屋頂系統下方,距離較短,以防止熱量影響室內。
從這個房間到前面,有一個花園,可以喝茶,也可以透過窗戶看夜空。
一個小的中庭被放置在末端,用于交叉房間的通風,它也為下面的廁所提供了自然光線。墻壁和地板的材料被保留了下來。粗糙的水泥表面、百葉窗和天花板上的竹條創造了一個既現代又古老的空間,復興了六七十年代的越南建筑。
建筑師渴望為不同文化背景的來者創造一個新的場所。在以新的方式重新組織舊事物的基礎上,舊事物和新事物可以共同存在,相互依附。隨著時間的推移,這里的人們會給這個房子帶來新的活力與靈魂。
VY ANH House / Khuon Studio
該項目的重點也在立面上的百葉窗系統。由于幾乎不需要頂部的生活空間,房子設計為錐形向上。由此產生的表皮也是弧形彎曲的。
百葉系統上的空氣磚以不規則的模式排列,確保采光與通風,且滿足安全與美觀的需求。
藤蔓逐漸生長覆蓋上網架, 形成一個綠色的窗簾,為房子提供陰涼與隱私。
Boundary House / AD+studio
項目位于平陽,面對空氣質量差、噪音污染、交通擁堵等諸多影響到生活質量的問題,最初的設計方案是將住宅與周圍環境隔離開來。
然而由于業主外向的傾向,長期以來與街巷和社區有著很強的聯系,項目開始著重思考邊界的設計。
垂直邊界運用雙層表皮結構,勾勒出室內和室外空間之間的隔斷。燒磚作為外部層次,其顏色及孔隙的過渡體現了背后空間的隱私級別和意圖。
在頂樓,新婚夫婦的私人臥室和工作空間需要高度集中,內部和外部的互動逐漸減少。
水平邊界通過不同的板創造了高度的多樣性,并且圍繞房子布置靈活的樓梯系統,幫助在有限的建筑面積中營造了更大更全面的空間整體。
SR-1 House / SPNG Architects
項目位于胡志明市,業主都從事藝術領域,想建一棟四層樓的房子來滿足生活和未來工作的需 要。他們喜歡自然的氛圍,樹木和動物。因此項目的目標設定為三個主要價值:安靜、與周邊環境相結合以及人與自然緊密聯系。
客戶曾經生活在寬敞的單層鄉村住宅中,空間從前到后相連,因此家庭中的每個人都關系非常親密。基于這種記憶,設計打開了公共生活空間的視野,并且盡量減少實心磚墻來創造連續空間。
立面上的盆栽系統阻擋了下午刺眼的陽光,也使得室內空間更加安靜、私密與涼爽。
從外觀看,綠色的墻面也讓社區看起來更加友好與自然。
Floating Nest / atelier NgNg
該項目位于西貢,和很多其他夾縫住宅一樣,坐落在擁擠城區的狹窄地段上,只有朝西的一面是朝外且開放的。業主熱衷于園藝,首先想要一個舒適放松的空間,有豐富的綠色區域來滿足她回歸田園的愛好。
為了解決上述限制條件,同時加強自然采光和通風,事務所省略了住宅內部的隔墻,使用“綠色植 物”和“空隙”來分隔功能空間。有三個大的空間: 橫跨三層樓的前花園、后花園以及中央橫跨兩層的采光井,將家庭辦公區與休息區、禮拜場所都分隔開來。
立面上使用了當地豐富的天然材料,沿著藤墻排列的竹屏風在保護整個房子免受西曬的同時也保持了高度的隱私,還增加了房子的輕盈感。
NG?C House / Story Architecture
這個項目位于人口密集的胡志明市,安全是首要考慮的問題。房子的立面設計有遮陽板和可任意開啟關閉的折疊門。遮陽傘可以讓屋主最大化地看到外面,卻仍然可以限制陌生人進入的視野。
室內主要是為不同年齡的成員設計的,包括祖父母、父母和孩子。因此設計的核心在于如何為不同需求的家庭成員組織合適的生活空間,并且使其感受到舒適、私密卻又緊密聯系。
事務所在每個臥室前面設計了涼廊供房主放松休息。
兩間臥室的涼廊之間是通高的邊庭,這樣成員彼此之間互相擁有私人距離,也共享著同一空間。
同時,通高空間也間接的為臥室提供了光線與微風。
樓梯著陸處形成的角落被用作孩子們的私人游戲區域。
房子后面是一個大院子,增加了廚房區域的通風,也是閱讀報紙和喝咖啡的理想場所。
RIN’s House / 85 Design
這棟位于世界遺產惠安古鎮的房子。由于是為三代人設計,方案本身既要適應現代生活方式,又要貼近自然,且必須具有傳統建筑的基本特征。
家里最年長的人,即業主的父親,一直飽受疾病和行走困難的折磨,因此,房子既要提供一個適合他日常活動的安靜空間,也要創造樂觀的氛圍。
中間的院子便是是房子的關鍵部分,它能確保通風,避免潮濕,也能最大程度的利用光線。
兩間臥室都有朝向庭院的大玻璃窗,這使得臥室內也一直都有新鮮空氣。
在露臺布置的小樹林還能夠減少太陽熱量的影響。
NDT TLC Home / Kien Truc NDT
項目位于北寧省,占地 80 平方米,建筑開間僅 4 米。房子是為一對有兩個孩子的年輕夫婦所設計的。由于業主是一個自然愛好者,所以設計的核心是創造一個容納大量樹木的生活環境,并且最大限度的增加戶外空間。
由于該地區人口稠密,附近有三個大工業區,所以解決灰塵和噪音污染問題尤其重要。事務所的處理是將起居空間略微推后,在臨街面創造了一個室外緩沖過渡的空間。這使得房子變得更加私密,也能夠提供更好的空間使人們放松、休息與交流。
住宅內部的空間被劃分為兩個獨立的區域,通過位于中間的樓梯連接,從而最大限度地通風,傳播自然光線,并加強樓層之間的連接性(利于植物生長)。屋頂上有一個很大的玻璃屋頂,因此人們在行走時,會感到舒適、寬敞。
充分利用自然能源能夠簡單但有效地帶來最佳的生活空間,并解決夾縫住宅類型存在的缺點。這個項目傳達了簡單生活、綠色生活、節約能源的信息。
Tropical Cave House / H&P Architects
該項目位于北寧市中心,可以容納一個四代人的大家庭。其設計重點為利用光線流動和空間變化營造濕潤的亞熱帶氣候下的“洞穴風格”。
為特定目的而設計的樓層在不同的樓梯位置隨機連接,以創造有趣的景觀和不可重復的新鮮體驗。
植物交替放置創造了一個從共享到半私人到私人的多維度過渡空間。
天窗、門系統和植被都有助于調節小氣候。門系統的靈活性也為用戶提供定制的視角,模糊了室內外、建筑和景觀之間的界限。
在無序的城市化進程中,住宅逐漸變得令人窒息、孤立,與周圍環境的友好關系也被切斷。?????????????????????????????引入熱帶洞穴作為一種解決方案,給使用者帶來了安全感與歸屬感, 創造了一個避風港。
LVS. House / AD9 Architects
該項目基于業主希望所有空間盡可能開放的想法,使用錯層的處理手法,創造視線與行為的流動性及可達性。
垂直的自然采光和空氣流通將自然元素與人的生活緊密聯系在一起。
STH_Stair House / Deline architecture consultancy & constructio
該項目的業主是一對熱衷于建筑,充滿活力的年輕夫婦。他們希望通過對此前典型夾縫住宅的翻新,創造一個充滿情感需求的住宅。
事務所利用樓梯、空隙、橋梁作為場地的中心,構建了一個中庭。通過錯層來混合不同的功能空間,如客廳、廚房和臥室。
為了創造開放的空間,沒有墻壁或柱子來支撐樓梯。所以整個房間的視野都十分暢通與開闊。人與人之間 的交流在無形之間增加。
大型樓梯平臺還能作為休息空間,引導人們的流線,或者作為家庭活動的“舞臺”,成為視線匯集的焦點。橋梁連接著兩個房間,也為孩子們創造一個玩耍的區域,父母可以與他們互動。
項目的另一個特點是它的雙層立面。第一層是不銹鋼框架立方體和穿孔板的組合,可以控制陽光,減少熱量。立面也作為植物的掛鉤和生長框架。第二層是鋼化玻璃和鋁架,位于花園和室內之間。
MM Tropical Suburb Town House / MM++ architects
項目像是由一個單一、整體的混凝土塊雕刻而成。通過鋼架勾勒出了上端的外骨骼,使得屋頂的形式被消解,完全地通向天空。
地塊是獨特的梯形,有兩個臨靠街道的側邊和面向西貢河的景觀。為了使視野更加開闊,設計將梯形建筑分割為大矩形房間及附有浴室和儲存功能楔形空間。
陽臺向內退讓,而不是向外突出,這樣提供了陰影,也保證了全景的視角。
鑲嵌的方式也貫穿了整個空間——床、浴缸、客廳座椅等,創造了不間斷的空間和各個角落不受遮擋的視野。
為了抵抗西貢的炎熱,射孔狀的開口取代了窗戶,同時也扮演著日晷的角色。
蜿蜒的步道穿過大門,引導進入一個隱藏于街道的花園。花園貫穿整個住宅,植物可以自由地在所有樓層之間攀爬,裝點了建筑的立面。
起居區域中一條鑲嵌的長凳貫穿整個空間,強調了非正式性——人們可以隨意的伸開四肢、斜倚或盤腿坐著。
帶有紋理的鐵銹紅墻讓人聯想到土坯磚,它能夠消除眩光,其觸感表面還強調了整個房子材料之間的紋理,與樓梯和地板的澆筑混凝土、圓滑的鋼欄桿和彩色玻璃斑駁的窗格形成對比。
寶石色調的光線通過玻璃精心設計的條紋延續了神圣的感覺。19 世紀 80 年代和 90 年代典型的氣窗玻璃的大膽色彩呈現在極簡主義的構圖中。
設計沒有局限在單一的風格中,而是將在世界各地收集到的記憶集合起來,打造了一個室內探險之家。
雖然越南沒有動輒上千米的高樓
也沒有可以列入“建筑奇跡”的大型地標
但建筑師的巧思給這些
小住宅帶來了優雅溫馨的一面
這些建筑并不是高冷地存在
而是真正的融入了生活
*請認真填寫需求信息,我們會在24小時內與您取得聯系。