SS控制居中是前端開發中非常常用的布局技能,本文列出幾種CSS控制元素居中的幾種方法。
談及HTML元素居中展示,涉及到水平居中和垂直居中,以及水平垂直居中。由于HTML文檔流是水平方向的,所以水平方向上的布局控制比垂直方向要簡單很多,居中也是如此。不過(水平)垂直居中還是有很多種寫法,至少一只手是數不過來了,本文列出幾種,并進行簡單比較。
一、水平居中
使用CSS控制水平居中很簡單:
<div class="container"> <div class="content"> 水平居中哦 </div> </div>
1. 塊級元素水平居中
.container { height: 300px; width: 300px; border: 1px solid red; } .content { width: 10rem; border: 1px solid green; margin: 0 auto; }
效果:
2. 內聯元素水平居中
.container { height: 300px; width: 300px; border: 1px solid red; text-align: center; } .content { display: inline-block; border: 1px solid green; }
效果:
代碼很簡單,而且沒什么兼容性問題,所以通常也不需要用別的復雜方式來實現水平居中效果。
二、水平垂直居中
使用CSS控制垂直居中(或者水平垂直居中)就不像控制垂直居中那么方便,這里主要羅列幾種。
1. flex布局
flex布局出現以后,垂直居中就很方便了,直接設置父元素:
display flex align-items center
如果同時要水平居中,則同時設置:
justify-content center
需要注意的是IE10+才支持,webkit前綴瀏覽器設置flex屬性需要加webkit。
.container { width: 300px; height: 300px; border: 1px solid red; display: -webkit-flex; display: flex; // 關鍵屬性 align-items: center; // 垂直居中 justify-content: center // 水平居中 } .content { border: 1px solid green; }
2. margin+ position:absolute布局
position: absolute布局的元素,通過設置top/bottom, left/right這兩對屬性,可以讓元素在垂直方向和水平方向分別具有了自適應的特性。就像div在水平方向的默認表現一樣!
上文中對于塊級元素的水平居中,我們設置寬度然后配合以margin可以實現水平居中。而對于設置了top/bottom,left/right的absolute定位元素,我們設置寬高再配合margin就可以達到水平垂直居中:
.container { width: 300px; height: 300px; position: relative; border: 1px solid red; } .content { position: absolute; left: 0; right: 0; top: 0; bottom: 0; width: 200px; height: 100px; margin: auto; border: 1px solid green; }
效果:
兼容性很好,IE8以上支持。
3. transform + absolute
absolute定位元素的left、top屬性是子元素的左邊界、上邊界相對父元素進行定位;transform是CSS3中非常強大的一個屬性,可以接收多個屬性值,包括旋轉、縮放、平移等多種功能。這里使用二者配合,先將子元素左上定點定位到父元素中心點,再使用transform將子元素中心點移動到父元素的中心點即可:
.container { width: 300px; height: 300px; position: relative; border: 1px solid red; } .content { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); border: 1px solid green; }
效果:
這個方法有個小缺陷,就是translate函數的參數,最后的計算值不能為小數,否則有的瀏覽器渲染出來效果會模糊,所以使用本方法的話最好設置一下寬高為偶數。
4. absolute+margin負值
與上一種方法很類似,上一種方法是使用transform將元素向左上平移,本方法則是使用margin負值的方式將元素拉向左上角。
代碼:
.container { width: 300px; height: 300px; position: relative; border: 1px solid red; } .content { position: absolute; left: 50%; top: 50%; width: 200px; height: 100px; margin-top: -50px; margin-left: -100px; border: 1px solid green; }
效果:
5. absolute + calc
從上兩種方法可以看到,absolute設置了left和top再通過平移或者margin將元素重新定位回去。如果我們直接可以計算出正確的left和top值,豈不是一次到位?calc函數正有此功能,當然我們需要知道子元素的寬高:
.container { width: 300px; height: 300px; border: 1px solid red; text-align: center; position: relative; } .content { position: absolute; border: 1px solid green; width: 200px; height: 100px; left: calc(50% - 100px); top: calc(50% - 50px); }
效果:
6. line-height + vertical-align
vertical-align是一個作用于內聯元素的屬性。內聯元素的特性是會和其它內聯元素或者文字在同一行顯示,但是默認情況下是與父元素“基線對齊”的。這里的的基線指的是父元素每一行中的一個垂直位置,是英文x下邊緣所在的水平, 通過設置vertical-align為middle可以將內聯元素的中部對齊父元素的中部(基線+字母x的一半高度)。所以可以利用這一點,將父元素的行高設置為其自身高度,然后將子元素與父元素中線對齊,即可實現垂直居中。
代碼:
.container { width: 300px; height: 300px; border: 1px solid red; line-height: 300px; text-align: center; } .content { display: inline-block; line-height: 1.5; border: 1px solid green; vertical-align: middle; }
效果:
以上幾種方法各有不同的適用條件,因此也有不同的優缺點,下表對各種方法進行了比較:
方法條件兼容性flex布局無IE10+margin + absolute知道子元素寬高IE8+transform + absolute無,子元素寬高應為偶數IE10+absolute + margin負值知道子元素寬高absolute + calc知道子元素寬高IE9+line-height + vertical-align知道父元素寬高
CSS中同一種表現效果往往有多種不同的實現方法,要刻意地嘗試多種寫法,避免熟悉了一兩種方法就止步不前,這樣才能對各種情況得心應手
天是劉小愛自學Java的第76天。
感謝你的觀看,謝謝你。
話不多說,繼續html的學習:
昨天學習了最基礎的文本標簽及屬性,除此之外還有很多其它標簽,今天逐一學習。
a標簽有一個必不可少的屬性:href。href也就是超鏈接的意思。
下面編寫代碼,其中我每行之間用了兩個換行符(<br/><br/>),為了使頁面看起來相對而言更加美觀些。
①href="#"
作用是跳轉本頁面。
②href="對應網頁鏈接地址"
作用是跳轉到對應網頁。
③href="本地主頁"
這個呢是我自己電腦里面的一個html文件,自己可以訪問,但是別人就沒法訪問了。
②中的是只要網址能打開,所有人都能訪問。
④href="mailto:對應郵箱地址"
作用是用本地的郵箱客戶端,給填寫的郵箱發送郵件。
⑤target="_self"
self,自身的意思,作用就是在當前頁面中打開填入的網頁鏈接。
⑥target="_blank"
blank,空白的意思,作用就是在新窗口中打開填入的網頁鏈接。
⑦title="劉小愛的博客"
title,又是標題,這里的作用是:當我們將鼠標放在當前鏈接上的時候會出現一個標題提示。
代碼編寫完畢,做一個測試:
其中有個小常識:
左鍵直接點擊,會在當前頁面中打開對應鏈接。
Ctrl+左鍵點擊,會在新的頁面中打開對應鏈接。
1圖片標簽
image,圖像的意思,簡寫為img,圖片標簽也就是用img來表示。
①src="圖片地址"
如果是本地圖片,寫出圖片所在的路徑即可。
如果是網絡圖片,寫出其對應的鏈接即可。
其中width為寬度,height為高度,如果只設置其中一項,高度和寬度是等比例縮放的。
當然也可以寬度高度同時設置不同的值。
②alt="圖片丟失了啦"
如果圖片丟失了,就會顯示alt里面的內容。
③title="我是劉小愛"
同a標簽一樣,當鼠標放在該圖片上時,會顯示title里的內容。
2列表標簽
list,即列表的意思,其中又分為有序列表和無序列表。
有序列表:ordered list,簡寫就是ol。
①type="1"
數字排序,這也是默認的有序排序規則,所以可以省略不寫。
②type="a"
使用小寫字母排序,詳情見上圖。
③type="A"
使用大寫字母排序,詳情見上圖。
④type="Ⅰ"
使用羅馬字母排序,詳情見上圖。
⑤type="i"
使用字母i來排序,詳情見上圖。
無序列表:unordered list,簡寫就是 ul。
①type="disc"
disc,唱片、圓盤的意思,這是無序列表的默認屬性,所以可以省略不寫。
②type="circle"
circle,圓形的意思。
③type="square"
square,正方形的意思。
1基本介紹
table,表格的意思,這在學數據庫時就接觸過。
tr,tablerow的縮寫,表示的是表格中的行。
td,tabledata的縮寫,表示的是表格中的數據。
①單元格:cell:細胞的意思,在表格中就表示為一個單元格。
②表格外邊框:border,邊界的意思,用其可以設置外邊框的粗細。
③單元格外間距:cellspacing,用其設定外間距。
④單元格內間距:cellpadding,用其設定內間距。
其中width表示表格的寬度,并且外間距一般都會設定為0,不然都不像是個表格的樣子。
①caption標簽
標題的意思,用以說明表格的標題,我這邊還用了一個b標簽將其給加粗了。
②th標簽
table head的簡寫,也就是表格的表頭,它是默認居中加粗的。
當然我們也可以根據align屬性來設定排序位置(居左,居中,居右)。
此外,其中也可以使用thead、tbody、tfoot標簽來劃分表格。
這個稍作了解即可,感覺使用這些標簽和不使用這些標簽對表格本身沒有影響。
2表格快速模板設置
看到左上角那個黃燈后點擊,選擇Language Injection Settings,最后選擇html即可。
這樣設置后就可以使用表格快速創建模板了。
先輸入table>tr*4>td*4,再加上Tab鍵,即可快速創建一個4*4的表格。
3合并單元格
①rowspan
合并行的意思,相同的列不同的行。
“2”的意思就是表示是跨兩行,從第1行開始將第1行和第2行合并起來了。
既然如此,那么第2行總共也就只需要3列了,所以將其第2行第1列刪除。
②colspan
合并列的意思,相同的行不同的列。
“3”的意思就是表示是跨3列,從第2列開始將第2列第3列和第4列合并起來了。
既然如此,那么第3行總共也就只需要2列了,所以將第3行中第3列第4列刪除。
謝謝你的觀看。
如果可以的話,麻煩幫忙點個贊,謝謝你。
申請人成功拿到移民簽,準備登陸加國開啟美好新生活的時候,是不是除了興奮之外,還會有一點小迷茫?第一次登陸加拿大,應該注意些什么呢?別急,小編將給你一一解答。
登陸之前事項
登陸期:一般為體檢后一年,全家人都要在最晩登陸期之前登陸,且副申請人不得早于主申請人登陸(可以同時登陸或主申請人先登陸)。
新移民第一次登陸,需要重點關注的是登陸時間,并不是說拿到移民簽證之后隨時可以登陸。我們需要在移民簽證到期之前完成登陸,而楓葉卡從辦理到收取需要1-3個月,所以環球出國建議,申請人在移民簽證到期前3個月登陸,可無縫切換楓葉卡。
移民證件:準備好全家人貼好簽證的護照以及移民紙。
機票及行李:提前定機票會比較便宜,暑期和圣誕節是旺季,登陸應盡量避免這個時期
訂票時請留意各航空公司對于行李的規定,不要超重。
現金及銀行開戶:每個人(包括小孩)可以攜帶不超過1萬加元的現金,超過部分須申報。可以提前開好加拿大本地銀行賬戶,并預先匯款至該賬戶,抵達后只需要到預約銀行激活即可領取銀行卡并使用。
加拿大的地址用以接收楓葉卡:可以是親戚或朋友的地址,入境時需填寫。
子女上學的報名文件:根據不同階段提供相應階段的文件。
駕照:國內駕照公證件可在登陸后使用三個月,之后須考本地或國際駕照。
物品清單:視長登或短登準備相應數量的物品,加拿大海關對新移民第一次帶的所有物品入境是免稅的。
禁止攜芇:武器、煙花鞭炮、毒品、文物、珍稊動植物制品、肉、蔬菜、水果、雞蛋及奶制品等入境。19歲以上的旅客每人可帶1.5升酒(或1.14升白酒)、200支香煙(或50支雪茄)入境,超量將征收關稅
特別注意:若登陸前您的婚姻或子女情況發生變化,請一定要提前告知移民局。
入境程序
不管我們選擇哪個城市登陸,入境手續都大同小異。
第一步:飛機下機前,我們會收到一份“海關申報單”
第二步:拿到申報單之后,要去“護照檢查處”。
流程如下:在新移民檢查處出示護照和移民簽證,然后接受工作人員的身份核實和一些細節詢問,移民官員在移民紙上簽字蓋章,然后領取行李接受海關的檢查后就可以離開了。(注意:移民紙是非常重要的文件,一定要妥善保管哦!)
以上每個關卡的具體事宜:
在護照檢查處:在這里要通知移民局的審核官員(IO)做我們的“入境登記”。移民局官員會檢查移民的入境申報單和護照,以及簽證,然后會指導移民前往“移民柜臺”。
加拿大邊境服務局(Canada Border Services Agency):這是一個很重要的地點,所有報關的物品都會在這里檢查。需要帶上三樣證件:
1.所帶物品清單
2.運輸貨物清單
3.貨幣申報單
前兩份清單必須要準備兩份,一份由CBSA(加拿大邊境服務局)保留,第二份在檢查完之后會退給我們,在運輸貨物的時候會被用到。
就算沒有出國經驗,也不用太擔心,通常邊境服務局里的所有的工作人員都非常友好,也樂于助人。在資料準備齊全,并且排隊人數不多的情況下,上述流程花費時間約為40分鐘到1個小時,在此期間還能完成行李領取等其他事情。
入境需要準備的資料清單如下:
1)每位家庭成員的加拿大移民簽證和移民紙;
2)每位家庭成員的護照或旅行證;
3)兩份攜帶入境的個人物品及其價值的明細表;
4) 兩份即將要抵達入境的個人物品及其價值明細表;
5) 至少六個月的最低生活資金開銷的資金證明,加拿大邊境服務局可能會檢查。
6) 辦理楓葉卡需要的照片(辦理楓葉卡時,加拿大移民局提供免費拍照的服務,但是建議最好每人準備2-3張照片作為備用哦!)
小貼士:準備的東西越齊全,給移民局官員留下的印象就越好,流程就更加順暢。
關于航班的建議:
中國目前有15個城市可以直飛加拿大,包括:北京、上海、廣州、成都、沈陽、昆明、廈門、鄭州、南京、杭州、青島、重慶、天津、深圳。
入境資金證明需要注意什么?
入境時攜帶1萬加元或者以上的現金必須申報,但是并未限制你攜帶入境現金的金額。所攜帶的現金如果超過1萬加元,就需要如實向加拿大政府申報,這是反洗錢目的,而不是真正的“限制”。
雖然資金沒有上限但是需要證明來源合法。這里還需要格外小心的是,當邊境工作人員詢問“是否攜帶相當于1萬加元或更多現金”,如果實際攜帶金額超過了1萬加元但是回答是no,這種情況就不是沒有申報,而是謊報。這會被認定為“欺詐”行為,是會被處罰的。
入境后注意事項
楓葉卡:即永久居民卡,登陸當天在機場辦理,免費,需要加拿大地址,6周左右寄到,今后返回加拿大需要該卡。
SIN卡 Sociallnsurance number,社會保險卡又稱工卡。到就近的SIN卡辦理地址盡快辦理。4-6周寄到,免費。有此卡才可工作,申請牛奶金。
醫保卡,又名健康卡,今后免費就醫就憑此卡。在溫哥華不用親臨辦理。可以填好申
表,連同移民紙和護照首頁復印件一起寄出辦理。3-4個月可以辦好,期間若需要,可以購買臨時醫療保險。
銀行借記卡及信用卡。各大銀行幾乎都有中文專員及服務。2-3周寄到,盡量多使用信用卡,既可以累計信用記錄,又可以享受刷卡免息期及回饋。記得及時還款(可以綁定信用卡和借記卡)。
駕照:登陸后三個月內可以使用中國駕照。美國和國際駕照可在加拿大使用,但保險費較貴。可請原居住國汽車保險公司開出的無肇事記錄證明,辦理保險時會有優惠。滿2年的中國駕照可免除筆試后(即交規考試,可以選中文考)的八個月等待期,立即考G2.
通訊:可根據話費預算簽訂手機計劃,手機基本白送,但白送的機型取決于話費量。固定電話連同寬帶和電視節目,可以根據自己的需求簽訂計劃,同一家公司辦理。
子女入學:移民子女讀書需要登陸紙和加拿大住址,只能在登陸后才能具體辦理,這點不同于留學。在登陸期內,可以先了解相關學校及準備好報名材料。
年度報稅(資產申報),每個納稅年度為12月31日,需要在4月底之前完成報稅。
更多詳細信息您可以通過以下網站查詢:
加拿大聯邦官網:
https://www.canada.ca/en/immigration-refugees-citizenship/services/new-immigrants/prepare-life-canada/border-entry.html
加拿大邊境服務局:
https://www.cbsa-asfc.gc.ca/menu-eng.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。