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小时内与您取得联系。