调样式更顺畅的CSS细节

170 阅读2分钟

样式不生效可能是

选择器优先级太低

选择器没有选中期望的元素

属性用的不对:

元素不支持这个属性:比如行内级非替换元素设置width和height无效
被共类型属性覆盖,比如background覆盖background-color
浏览器不支持

定位

image.png

绝对定位元素(包括fixed)特点

可以设置宽高(包括行内元素)

宽高默认由内容决定

不受标准流约束

不再向父元素汇报高度

元素内部还是默认按照标准流排布

flex布局子元素item特点

不再严格区分块级元素和行内级元素

默认包裹内容,但是可以设置宽高

flex-grow

默认值0,,不扩展

当flex container在主轴方向有剩余空间时才生效

扩展后也不能超过max-width和max-height

flex-shrink

默认值为1,默认宽度之和大于容器的时候会发生收缩

flex-basis

flex-basis(除auto外)比width/height优先级更高但是低于max-width/max-height/min-width/min-height

收缩后也不能小于min-width/min-height

flex

单值:

无单位,就是flex-grow,如flex:1,就是flex-grow:1
带单位的值,比如flex:100px,就是flex-basis:100px

水平垂直居中

position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;

text-align

text-aline 只对设置元素内的行内级元素起作用,文字、图片、input等,或者给块级加display-inline-block,只适用于块元素

块级元素水平居中

margin: 0 auto

转为行内块级元素 子元素display:inline-block,父元素text-align:center

margin上下传递

子盒子设置margin-top和margin-bottom(父元素高度要设置为auto才出现)会传递给父元素, 解决办法:

父元素触发BFC,设置overflow:auto
父元素设置border
父元素使用padding-top、padding-bottom代替

image.png

image.png

image.png

行内非替换元素设置margin padding border

设置margin-top margin-bottom 不生效

设置padding-top padding-bottom 上下被撑开,但是不占据空间

image.png

设置border也是上下被撑开但是不占据空间

em

在CSS中,1em表示当前元素的字号大小,实际值取决于在哪个元素上应用

color设置前景色

color设置前景色,不仅是文本颜色,所以像text-decoration属性也会被设置颜色

line-height

设置文本垂直居中,line-height减去文本高度就是行距上下各分一半

image.png

元素隐藏

display:none 不渲染这个元素,相当于没有

visibility:hidden 元素位置保留

color:rgba(xx,xx,xx,0) 不影响子元素内容

opacity 子元素会被影响