关于css布局、居中的问题以及一些小技巧
CSS的两种经典布局
左右布局
- 一栏定宽,一栏自适应
<!-- html --> <div class="left">定宽</div> <div class="right">自适应</div> <!-- css --> .left{ width: 200px; height: 600px; float: left; display: table; text-align: center; line-height: 600px; } .right{ margin-left: 210px; height: 600px; background: yellow; text-align: center; line-height: 600px; }
- 利用绝对定位实现
<!-- html --> <div class= "left"> </div> <div class= "right"> </div> <!-- css--> .left{ position:absolute; left:0; width:200px; } .right{ margin-left:200px; }
左中右布局
- 利用绝对定位实现
<!-- html--> <div class= "left"> </div> <div class= "main"> </div> <div class= "right"> </div> <!-- css--> .left{ width:200px; background-color:yellow; position:absolute; top:0; left:0; } .main{ margin-left:200px; margin-right:300px; } .right{ width:300px; background-color:orange; position:absolute; top:0; right:0; }
- 利用浮动定位实现
<!-- html--> <div class="left"></div> <div class="main"></div> <div class="right"></div> <!-- css--> .left{ width:300px; background-color:yellow; float:left; } .right{ width:200px; background-color:orange; float:right; } .main{ margin-left:300px; margin-right:200px; }
- 圣杯布局,两边定宽,中间自适应
<!-- html--> <div class="container"> <div class="main col">Main</div> <div class="left col">Left</div> <div class="right col">Right</div> </div> <!-- css--> .col{ float: left; position:relative; } .container{ padding:0 200px 0 100px; } .left{ left:-100px; width: 100px; height:100%; margin-left: -100%; background: red; } .main{ width:100%; height: 100%; } .right{ right:-200px; width:200px; height:100%; margin-left: -200px; background: yellow; }
- 双飞翼布局
<!-- html--> <div class="container"> <div class="left col ">Left</div> <div class="main col "> <div class="main_inner">Main</div> </div> <div class="right col ">Right</div> </div> <!-- css--> .col{ float: left; } .main{ width:100%; height:100%; } .main_inner{ margin:0 200px 0 100px; } .left{ width: 100px; height: 100%; margin-left: -100%; background: red; } .right{ height:100%; width:200px; margin-left: -200px; background: yellow; }
CSS居中问题
水平居中
- 对于行内元素(inline):
text-align: center;
<!-- html --> <div> <span >kaka</span> </div> <!-- css --> div { text-align:center }
- 对于块级元素(block):
1.给此块级元素设置宽度
2.margin:0 auto;
<!-- html --> <div class="parent"> <div class="child">kaka</div> </div> <!-- css --> .parent { width:1002px; } .child { width:50%;//也可以是固定像素 margin:0 auto; }
垂直居中
- 行高与高度一致使其居中,适用于只有一行文字的情况
<!-- html --> <div class="parent"> <div class="child">kaka</div> </div> <!-- css --> .parent { height:1002px; line-height:1002px; }
水平垂直均居中
- 已知宽高,给负margin
<!-- html --> <div class="parent"> <div class="child">kaka</div> </div> <!-- css --> .parent { position: relative; } .child { position: absolute; width:1002px; height:828px; top: 50%; left: 50%; margin-top:-414px; margin-left:-501px; }
- 未知宽高,transform方案
<!-- html --> <div class="parent"> <div class="child">kaka</div> </div> <!-- css --> .parent { position: relative; } .child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
CSS的一些小技巧
- 请写出「姓名」与「联系方式」两端对齐的例子
<!-- html --> <span>姓名</span> <span>联系方式</span> <!-- css --> span{ line-height:20px; font-size:20px; height:20px; overflow:hidden; } span::after{ content: ''; display: inline-block; width: 100%; }
- 文本内容过长如何变成省略号?
1 一行文本过长,只需要对该div作以下操作:
<!-- css --> div{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
2 多行文本超出,如:在第二行后省略:
<!-- css --> div{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
- 如何使固定高度的div里面的文字垂直居中?
1.先确定行高 2.再用padding补全高度。这种写法的好处是在文字增减过程中不会出现bug。
例:一个高 40px 的 div,里面的文字垂直居中
<!-- css --> div{ line-height:20px; padding:10px 0; }
- 使该元素变大1.2倍
transform: scale(1.2);
- 动画过渡效果
transition: all 0.3s;
相关推荐
玫瑰小妖 2019-12-31
nercon 2020-02-22
多读书读好书 2020-11-03
drdrsky 2020-06-16
gufudhn 2020-06-12
aSuncat 2020-06-11
PioneerFan 2020-06-10
沈宫新 2020-05-04
swiftwwj 2020-03-28
HSdiana 2020-03-28
葉無聞 2020-03-23
lyg0 2020-03-07
STPace 2020-02-17
STPace 2019-12-30
冰蝶 2020-01-10
爱好HtmlCssJs 2019-12-31
行吟阁 2019-12-08