●、常见问题
○、CSS上下元素外边距margin重叠
详细文档
防止外边距重叠解决方案:
- 外层元素padding代替
- 内层元素透明边框 border:1px solid transparent;
- 内层元素绝对定位 postion:absolute:
- 外层元素 overflow:hidden;
- 内层元素 加float:left;或display:inline-block;
- 内层元素padding:1px;
○、子级margin-top给父级所带来的影响
方法一:给父元素设置高度(不推荐)
方法二:子元素外边距溢出的问题,使用table布局
#d2:before{
content:"";
display:table;
}
○、浮动给父级带来的影响
工作原理:
浮动原理:浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。
引起的问题:
- 父元素的高度无法被撑开,影响与父元素同级的元素
- 与浮动元素同级的非浮动元素会跟随其后
- 若非第一个元素浮动,则该元素之前的元素也需要浮动,否则会影响页面显示的结构
解决方法:
1. 在浮动结尾处添加空div标签clear:both
弊端就是增加了无意义标签。
div {
clear: both;
}
2. 父级div定义伪类:after和zoom
.clearfix:after {
content: "";
display: block;
clear: both;
}
3. 父级div定义display:table
.clearfix {
display: table;
}
4. 父级div也一起浮动
5. 给父级div设置高度
6. 给父级div设置 overflow 为 hidden 或者 auto
○、CSS实现垂直居中
如需了解更多方法:请参照文档
html
<div class="box box1">
<span>垂直居中</span>
</div>
css
/* 方法1:table 布局 */
.box1{
display: table-cell;
vertical-align: middle;
text-align: center;
}
/* 方法2:flex 布局 */
.box1{
display: flex;
justify-content:center;
align-items:Center;
}
/* 方法3:transform 布局 */
.box1 {
position: relative;
}
.box1 span {
position: absolute;
top: 50%;
left: 50%;
width: 100%;
transform: translate(-50%, -50%);
text-align: center;
}
//...
●、flex布局
- Flex 布局教程:语法篇
- Flex 布局教程:实例篇
注意:{ flex: 1 0 auto; width: 100px; } 都可以灵活扩展和收缩空间余量,但收缩最小宽度等于100px。
○、使用FLEX实现一种上下高度不固定的自适应布局
html<div class="wrapper">
<div class="head">
头部
</div>
<div class="content">
内容
</div>
<div class="foot">
底部
</div>
</div>
css图1:
.wrapper {
display: flex;
flex-direction: column;
}
.head {
flex-shrink: 0;
}
.content {
flex: 1;
overflow: auto; //此行是关键
}
.foot {
flex-shrink: 0;
}
●、@media 媒体查询
-
●、CSS 属性
- CSS outline 属性
-
●、CSS 文档
-
- 重置样式表的目标是减少浏览器在默认行高、页边距和标题字体大小等方面的不一致。
- 关于input type=’number’去掉箭头
- less中使用calc计算
- textarea文本域不可拖拽