前言
也许你自认为非常熟悉基本的css2属性以及效果,但有些知识盲区你还是不清楚的。
置换元素
- 有些元素本身,你认为是行内元素但是却可以设置高宽,比如input、button、img等,这些元素本身其实是行内块级元素,具有行内块级的基本特征。
- 置换元素设置padding-top以及padding-bottom是有效的,设置line-height无效;而行内非置换元素无效,两者对于padding-left,padding-right都是有效的。
- 拓展延伸:行内非置换元素设置行高无效,高度识别自动。
margin塌陷
- 行内非置换元素,在写外边距时,如果外层盒模型没有padding,border时,行内元素的margin-top会移植到父元素的margin-top实现,而本身没有margin-top效果,俗称margin塌陷。下面代码的最终效果p margin-top:15px,span没有margin-top的效果。(外层模型有padding,border可以正常实现外层10px 内层15px的外间距)
<p style="margin-top:10px">
<span style="margin-top:15px">我是行内非块级元素</span>
</p>
- 行内置换元素,不管外层是否有padding,border时,都会正常实现外层10px 内层15px的外间距。
<p style="margin-top:10px">
<img style="margin-top:15px" src="">
</p>
3 div元素也会有这种情况
(1)为父盒子设置border,为外层添加border后父子盒子就不是真正意义上的贴合 (可以设置成透明:border:1px solid transparent)。
(2)为父盒子添加overflow:hidden;
(3)为父盒子设定padding值;
(4)为父盒子添加position:fixed;
(5)为父盒子添加 display:table;
(6)利用伪元素给子元素的前面添加一个空元素
同级元素margin合并问题
本元素margin-bottom与下一个元素margin-top ,取较大值15px
<p style="margin-bottom:15px"> </p> <p style="margin-top:10px"> </p>
本元素margin-right与下一个元素margin-left ,取和也就是25px
<span style="margin-right:15px;"> sdv </span> <span style="margin-left:10px"> sdv </span>
同时筛选出符合多个条件
- 中间不加任何空格,多用于追加active样式,前提在保证语法正确的情况下
.a.active{} <span class="a active"></span>
html,body不能包含整个页面
- 需要全屏设置背景的时候无效
html,body{ width:100%; height:100%; }
文本框内提示文字颜色
- -webkit-input-placeholder
/* WebKit browsers */ ::-webkit-input-placeholder { color: #777; } /* Mozilla Firefox 4 to 18 */ :-moz-placeholder { color: #777; opacity: 1; } /* Mozilla Firefox 19+ */ ::-moz-placeholder { color: #777; opacity: 1; } /* Internet Explorer 10+ */ :-ms-input-placeholder { color: #777; }
display:none 对元素盒模型影响
position:relative 与默认的static区别
点击元素之后的蓝色轮廓
它是元素在focus伪类状态下的触发的边框效果,如果你想去掉或者修改,代码如下:
:focus{outline:none}