当前位置: 首页 > Web前端 > CSS

CSS总结

时间:2023-03-31 01:59:39 CSS

.icon{显示:行内块;.middle{垂直对齐:中间;}displayinline/inline-block/block-->>milk/jelly/nutsinline:img,span,strong,em,i,em,a...inline-block:input,button,...(table-cellelement)block:p,div,...(只要元素应用了float,position就会变成块元素)tableflextabletable-row(tr)table-cell(td)table-row-group(tbody)table-header-group(thead)table-footer-group(tfooter)table-caption(caption)table-column(col)table-column-group(colgroup)显示:在表格单元格下,垂直居中,等高特征表表中同一行的列表元素都是等高的。display:table-cell属性元素对margin不敏感,即margin对其不起作用。最适用的场景是列表的数量不固定,但是不管列表有多少,容器空间都会平分。parent设置display:table,width为容器宽度,或者直接width:100%。这时候会显示:table-cellsub-elementis自动划分。flexflex方向|flex-wrap(flexcontainer).container{显示:flex|内联柔性;}.container{flex-direction:行|行反转|栏目|列反转;}.container{flex-wrap:nowrap|包装|换行;}.container{flex-flow:<'flex-direction'>|<'flex-wrap'>}调整内容|对齐项目|align-content(flexcontainer)justify-content定义item在主轴上的对齐方式。item{justify-content:flex-start|弹性端|中心|space-between(两端对齐,item之间的间隔相等)|space-around(最边缘的itemitems之间的间隔等于border的间隔,item之间的间隔是item和border之间间隔的两倍);}align-items定义项目在横轴(侧轴)上的对齐方式。item{align-items:flex-start|弹性端|中心|基线|拉伸(默认);}align-content定义多个轴的对齐方式。如果该项目只有一个轴(当只有一行且没有换行符时),则此属性无效。item{对齐内容:flex-start|弹性端|中心|间隔|环绕空间|拉伸(默认);}order定义item的排列顺序,值越小,顺序越高,default:0(flexitems).item{order:;}弹性增长|收缩|flex-basis(flexitems)flex(default:01auto)auto(11auto)none(00auto).item{flex:none|[<'flex-grow'><'flex-shrink'><'flex-basis'>];}flex-grow(default:0)请求父容器的剩余空间。flex-basis(默认值:auto)是宽度的替代品。在分配空间之前,它会先和父容器预留这么多空间,然后剩下的父容器再把剩下的空间分配给设置了flex-grow的容器。如果同时设置了flex-basis和width,width会被覆盖,即优先级为flex-basis>width。但是如果flex-basis和width中有auto,其他非auto属性的优先级会更高。flex-shrink(默认值:1)定义子容器的压缩率。宽度:300

宽度:160
宽度:120
.container{显示:flex;宽度:500px;高度:150px;背景色:#eee;}.B{高度:100px;}.B1{背景颜色:rgba(255,255,0,.5);宽度:300px;弹性增长:1;伸缩收缩:2;}.B2{背景颜色:rgba(255,0,255,.5);宽度:160px;}.B3{背景颜色:rgba(0,255,255,.5);宽度:120px;}x2=2*x1500=300*x2+160*x1+120*x1总结:剩余空间=父容器空间-(子容器1.flex-basis/width)-(子容器2.flex-basis/width)-...如果父容器空间不够,压缩flex-shrink,否则展开flex-grow;如果不想让一个容器随时关闭压缩,那么就设置flex-shrink:0;如果子容器的flex-basis设置为0(width也可以,但是flex-basis更语义化),那么在计算剩余空间的时候不会为子容器预留空间。如果子容器的flex-basis设置为auto(width也是可以的,但是flex-basis更语义化),那么在计算剩余空间的时候,会根据子容器的内容预留空间.如果父级有足够的空间:flex-grow有效,flex-shrink无效。如果parent空间不足:flex-shrink有效,flex-grow无效。align-self允许单个item与其他item有不同的对齐方式,可以覆盖align-items属性(flex-items).item{align-self:auto(默认,表示继承parent的align-items属性元素,如果没有父元素,则相等拉伸)|弹性启动|弹性端|中心|基线|拉紧;}flexBoxcsstricks:https://css-tricks.com/snippe...cssunits另外注意chrome强制要求最小字体为12号,即使设置为10px,最终也会显示为12px。当html的font-size设置为10px时,子节点rem的计算还是以12px为准,所以网上很多文章都提到html的font-size设置为10是为了计算方便不是那么可取).vw:视点宽度,窗口宽度,1vw等于窗口宽度的1%。vh:viewpointheight,窗口的高度,1vh等于窗口高度的1%。vmin:vw和vh中较小的一个。vmax:vw和vh中较大的一个。vw,vh,vmin,vmax:IE9+部分支持,chrome/firefox/safari/opera支持,iOSsafari8+支持,Androidbrowser4.4+支持,chromeforandroid39支持其他单位包括:%:percentagein:inchcm:cmmm:mmpt:point,约1/72inchpc:pica,约6pt,1/6inchpadding不支持任何负值,margin,letter-spacing,word-spacing,vertical-align支持负值background-clipborder-boxpadding-boxcontent-boxmargin普通元素margin的百分比是相对于父容器的宽度计算的绝对定位圆度margin的百分比是相对于第一个定位祖先元素(relative|absolute|fixed)的margin重叠计算规则宽度计算:取最大的正负值并加上负数和负数的最大负值无效边距:内联水平元素(非替换元素,按钮标签;正常写法)垂直边距无效和边距重叠display:table-cell/table-row声明的margin无效,但替换元素异常(firefox:table-celltypeisinline-blockrendering;IE:表格调用类型是表格单元格渲染)。absolute定位的margin值其实一直是有效的,但是和普通元素不同的是,它可以移动兄弟元素(因为absolute元素脱离文档流),相对于float元素设置margin。不是相对于浮动元素,而是外部容器内联元素-start|引起的margin失效margin-collapsenormalflow,margin-start==margin-left,其他情况可以===margin-right|margin-topvertical-alignvertical-alignonlyforinline/inline-block(table-cell也可以理解为inline-block)horizo??ntalelementsworkvertical-align:-2px元素相对于基线偏移2个像素vertical-align:-10%这里的百分比是相对于元素继承的行高计算的父级适当的上标基线->vertical-align:sub将框的基线降低到父级适当的下标基线。您可以在table-cell本身上设置vertical-align:middle来工作。为table-cell中的内部元素设置middle不起作用。inline-block的基线是正常流中最后一个行框的基线。示例:使图标与文本对齐:居中!.icon{显示:行内块;.middle{垂直对齐:中间;}z-index指定元素及其子元素的[zorder],[zorder]可以确定元素被覆盖时通常哪个元素较大,z-index值最高的元素将覆盖下部元素。如果出现z-index的嵌套,则遵循祖先优先的原则。z-index:auto(默认值)z-index:number(可以为负数,也支持动画,遵循从后面来的原则,谁大)z-index:inherit(不考虑CSS3,只考虑定位(nonthez-indexofthestatic)element(position:relative/absolute/fixed/sticky)works)tips:堆叠上下文指的是z轴上下文,页面的根元素天生就有一个堆叠上下文,称为“根堆叠上下文”,z-index:定位元素也有一个堆叠上下文。stackingcontext中的每个元素都有一个stackinglevel,它决定了相同stackingcontext中元素在z-boat上的显示顺序。级联层次不是z-index,普通元素有级联层次,只有定位元素才有z-index。cascadingorder:cascadingcontextbackground/bordernegativez-indexblockblockhorizo??ntalboxfloatfloatingboxinline/inline-blockhorizo??ntalboxz-index:auto,定位元素的默认值,在级联顺序上,相当于z-index:0positivez-index当z-index嵌套且z-index为Number时,遵循先祖优先原则,但对于z-index:auto,先祖遵循原则,不起作用,因为(z-index:auto)当前堆叠上下文生成的盒子堆叠级别为0,盒子(除非是根元素)不会创建新的堆叠上下文。定位z-index不是auto的元素将创建一个堆叠上下文,而z-index:auto将不会创建一个堆叠上下文。z-index堆叠顺序的比较在父堆叠上下文停止。其他参与stackingcontext的属性有z-indexnotauto的flexitem(父元素是display:flex/inline-flex,子元素要设置z-index,这样不允许默认valueauto)opacity!=1的元素参与层叠上下文transform!=none元素参与层叠上下文position:fixed元素参与层叠上下文必须依赖z-index值创建层叠上下文position:relative/absolute/fixeddisplay:flex容器的flex/inline-flex子项是针对非浮动层元素(弹框)进行练习的,避免设置z-indexz-index不需要超过2负z-index和accessibilityhidden(肉眼不可见,但辅助设备可见)相对于自身定位(绝对是在外面找到受限容器)不侵入,不影响他人top/leftVSbottom/right相对时,相对是一个海峡uggle,top>bottom,left>right(absoluteisstretching)limittop/left/right/bottomlimitlevelz-indexlimitexceedoverflow(absolutecanOutofthelimitofoverflow)提示:相对级别很高,可以覆盖后面的dom,尽量减少relative的使用,应用blackmagicabsolute独立absolute会摆脱overflow的限制,不会受到滚动的影响。更厉害的是,有些小图标只能用absolute实现,使用margin微调动画尽量作用于absoluteline-height内联元素的框高由line-height决定(可继承)高度是line-height而不是文本的内容区域(由font-size和font-style决定)+垂直间距=line-heightline-height:normal|编号|长度|百分比|继承normal:跟随用户浏览器关联元素font:number*(font-size),所有可继承元素根据font-size重新计算它们的line-height:(1.5em|1.5rem|20px|20pt):(150%)是相对于设置了line-height属性的元素的字体大小。即150%*(font-size)inherit:输入框等元素默认行高正常,使用inherit可以让输入框可控更健壮overflowvisible(default)|隐藏|滚动|汽车|继承溢出-x|auto,notvisibleoverflow,前提是不显示:inlinehorizo??ntalsizelimitwidth/height/max-width/max-height/absolutestretch对于td等需要设置为table,table-layout:fixed状态无论什么浏览器,默认滚动条都是从滚动条而不是占用容器的宽度会遇到水平居中跳动的问题,解决办法:html{overflow-y:scroll;}OR.container{padding-left:calc(100vw-100%);锚点位于overflow:1box-sizing:border-box该元素的内边距和边框将不再增加其宽度,内容的宽度可以分别从设置的宽度和高度中减去border和innermargin得到内联元素paddingmargin内联元素的padding-top,padding-bottom,margin-top,margin-bottom属性设置无效内联元素的padding-left,padding-right,margin-left,margin-bottom属性设置为有效内联元素的padding-top和padding-bottom从显示效果上增加,但实际设置无效。对他周围的元素没有任何影响。显示的区别:无;和可见性:隐藏;相关:它们可以使元素不可见。区别:显示:无;会使元素从渲染树中完全消失,渲染时不会占用任何空间;可见性:隐藏;不会让元素从渲染树中消失,渲染器元素继续占据空间,但是内容是看不见的。显示:无;是非继承属性,子节点消失是因为元素从渲染树中消失。不能通过修改后代节点属性显示;可见性:隐藏;是继承属性,后代节点消失因为继承是hidden,通过设置visibility:visible;后代节点可以显式修改常规流中元素的显示,这通常会导致文档重排。修改visibility属性只会导致元素重绘。屏幕阅读器不会阅读display:none;元素内容;将读取可见性:隐藏;元素内容分词|自动换行|white-spacewhite-space:nowrap(textwillnotwrap,textwillbeonthesamelineContinueonuntil遇到一个标签。)浏览器默认是,如果一个词太长,一行剩余空间放不下,浏览器会将单词移动到下一行到下面两个的common重点是长单词可以强行断句word-break:break-all;(单词不会换行,放不下的话直接断句)word-wrap:break-word;(首先会新建一行放置长词,如果新行仍然放不下词,则强行切分长词):before:after对于伪元素:before和:after,属性内容是强制性的css介绍伪类和伪元素的概念是为了格式化文档树之外的信息。即伪类和伪元素用于修饰不在文档树中的部分,例如句子的第一个字母,或列表中的第一个元素。伪类是当一个已经存在的元素处于某种状态时,为其添加相应的样式,这种状态会根据用户的行为动态变化。例如,当用户悬停在指定元素上时,我们可以使用:hover来描述这个元素的状态。虽然它和普通的css类类似,可以给已有的元素添加样式,但是它只能在dom树无法描述的状态下给元素添加样式,所以称为伪类。伪元素用于创建和设置不在文档树中的元素的样式。例如,我们可以使用:before在元素之前添加一些文本并为文本添加样式。虽然用户可以看到文本,但文本实际上并不在文档树中。伪类对文档树中已有的元素进行操作,而伪元素在文档树之外创建一个元素。因此,伪类和伪元素的区别在于:没有在文档树之外创建元素。CSS3规范中要求使用双冒号(::)来表示伪元素,以区分伪元素和伪类。例如:::before和::after伪元素使用双冒号(::),:hover和:active等伪类使用单冒号(:)。除了部分IE8以下版本的浏览器外,大部分浏览器都支持伪元素的双冒号(::)表示。tabindex不想设置顺序,只是让您的元素可聚焦如果您不希望它被聚焦,请在所有这些元素上使用tabindex="0"然后使用tabindex="-1"positivenum:设置顺序"focusable"元素及其使元素"focusable'alt属性是图片无法加载时显示的文字,title属性用于显示图片的文字内容.src属性内容为:url("")list-style(设置ulli样式)list-style-typelist-style-positionlist-style/imageposition好文:https://css-tricks.com/almana...Static(default)这个元素是fixedInthisdocument6.设置left/right/top/bottom/z-index对这个元素不生效relative这个元素存在于文档流中,就像static.left/right/top/bottom/z-index会生效,设置这些属性会移动元素的位置,绝对元素脱离文档流,相当于不存在。设置为p/left/right/bottom默认是相对于document的,但是如果元素的父元素是相对的,那么相对于固定的父元素就脱离了文档流,也就是说没有固定的元素。它总是相对于文档,而不是特定的父元素。它不受滚动的影响。粘性(实验性)在达到视口的特定阈值之前就像相对的。就像fixedinheritandnotcascade一样,继承父元素的position属性