缩写词
定义article以外的内容,但是与article相关
定义与位置相关内容,但是位置相对独立,移除应不对原来造成影响,比如文本中的一个图片等
伪元素
::first-letter
第一个字符
::first-line
第一行
伪类
:required
选择带有required属性的表单元素,:optional
选择不带required的表单元素
:valid
验证有效时,:invalid
验证无效时
text-transform:uppercase
转化为大写,capitalize首字母大写
font-variant: small-caps
小型大写字母
word-spacing:0.1em
词间距(两个单词间的间距)
letter-spacing
字符间距
text-indent
首段缩进
@supports
large-center
…role
属性标记角色,角色有navigation、banner、form、main、search、application等等,也有一定语义化的功能,HTML5本身自带语义化,所以一般不会使用,但是部分不明确标签需要带上
HOW 2 JS
Code rules the world.
a[href^='http']
匹配href开始为http的a标签a[href$='/about/']
匹配href属性值结尾存在/about/的a标签a[href*='en']
匹配href值存在en子字符串的a标签a[lang|=en]
匹配lang值为en或者en-后接内容的a标签,即lang值为en开头的a标签,比如lang='en'
、lang='en-us'
a[rel~=next]
匹配以rel值为next或者与存在next空格分隔的a标签,比如rel='next'
、rel='next other'
font-size
而不是父元素dir
元素设置排版方向,text-align:justify
可以使排版等间距分布,消除毛边columns:2 20em;columns-gap:1.5em
最多2栏,每栏最小20em,栏间距1.5emcolumns-span:all
达到跨栏效果background-position:20px 20px
如果为绝对值,则相对于父元素位置,如果为百分比,则让图片的相应百分比处与父元素的相应百分比处的交点重合,也可以使用关键词,比如background-position:top left
,但是如果关键词语长度混用时会出想失效的情况,新语法支持先写关键词,在写长度的情况,比如: p{
height: 100px;
padding-right: 2em;
background-image: url('./back.jpg');
background-size: 50px 50px;
background-repeat: no-repeat;
background-position: right 1em top 50%;
}
background-position:calc(100% - 1em) 50%;
background-clip: border-box
裁剪图片,默认为border-box、background-origin: border-box
,设置原点,默认点为padding左上角(padding-box)background-attachment:fixed
可以达到附着图片的目的,滚动窗口时不会随元素一起滚动,指定local
会相对元素内容固定background-size:contain
尽可能将图片最大化,会自动决定哪边使用100%,哪边使用autobackground-size:cover
会将图片覆盖元素,同时比例不会变,所以上下或者可能会被剪切background
简写属性,background-position
和background-size
两个长度单位,先写position,在写size,中间使用/
间隔,存在设置*-box
有background-origin
和background-clip
两个属性,所以简写时先写background-origin
和background-clip
。但是不推荐使用,太不明确了background:url(cat,jpg) 50% 50% / cover no-repeat border-box content-box #baba55;
border-image:url() 40
设置图片填充,沿上、右、下、左各方向向内推40px画一条虚线,图片采用九宫格形式剪切并拉伸,剩下1/9会被忽略。设置为40是为了兼容svgbox-shadow
相对text-shadow
多一个参数用于设置扩展半径,增大这个值阴影增大,减小这个值阴影减小,并且可以设置inset
设置内阴影达到一种内陷的效果background-image
,background-image:linear-gradient(to bottom,#ffffff 0%,#000000 100%)
,第一个位置不仅可以指定边,也可以通过类似to top left
的形式指定对角线,百分比也可以通过像素值的形式指定background-image:radial-gradient(circle closest-corner at 20% 30%,#cfdfee,#2c56a1)
,指定放射渐变,circle或者ellipse指定圆形或者椭圆,at 20% 30%
指定圆心位置。closest-coner
指定沿最近角延伸,可能的值还有farthest-side
沿最远边沿伸、closest-side
沿最近边沿伸、farthest-coner
沿最远角沿伸repeating-radial-gradient(circle,#cfdfee,#2c56a1 20px)
或者background-image: repeating-linear-gradient(#cfdfee,#2c56a1 20px)
指定重复渐变background-image: linear-gradient(transparent,transparent 50%,rgba(55,110,176,0.3) 50%)
将第二个图标与第三个图标都定在50%可以达到突变的效果object-fit:cover
属性设置图片的显示,默认值为fill,设置值为contain、cover与设置background-size
类似,设置none会以原始图片显示,设置为scale-down
会在none和contain中选取,哪个结果尺寸小就选取哪个vertical-align
,设置为middle
代表行内块的中部与文本对应的基线对齐,所以不能达到居中的效果,如果想让紧挨的两个文本块居中,可以同时设置两个行内块vertical-align:middle
设置为同一基点,达到居中的目的 .box::before{
content: '';
height: 100%;
display: inline-block;
vertical-align: middle;
}
font-size:0
(让空格宽度为0),在单个为内容设置font-size:16px
缺点是不能建立可伸缩盒子了 ul{
width: 100%;
box-sizing: border-box;
padding: 0;
display: table;
/* 使第一行列宽具有决定性 */
table-layout: fixed;
}
li{
text-align: center;
vertical-align: middle;
display: table-cell;
width: 25%;
}
margin:auto
就可实现水平和垂直居中flex-basis:0
,那么就不会为该元素分配空间,在设置flex-grow:1
分配空间 li{
flex-basis: 0;
flex-grow: 1;
list-style: none;
border: 1px solid red;
}
flex-shrink
都为1,计算公式为((800*1)/(800*1+500*1))*300px、((500*1)/(800*1+500*1))*300px,默认值为1
默认的自动填补方式是逐行挨个填补,也可以改变方向为逐列填充
grid-auto-flow: column;
自动填补时,有些网格项跨多个网格轨道可能出现空洞的情况,可以使用稠密算法
grid-auto-flow:row dense;
设定网格间间距通过grid-row-gap
或者grid-column-gap
设定
控制
/* 设置自身对齐方式 */
justify-self: start;
align-self: start;
/* 网格容器设置所有网格项对齐方式 */
justify-items:center;
align-items:center;
/* 设置行和列的对齐方式 */
justify-content:center;
align-content:center;
模板
grid最大的一个好处是可以可视化的创建布局
.点符号区域表示匿名单元
@media (-webkit-min-device-pixel-ratio:1.5),
(min-resolution:1.5dppx)
{
.profile{
background-image: url();
}
}
<table>
<caption><strong>这是标题strong>caption>
<colgroup>
<col class="col-1">
<col class="col-2">
<col class="col-3">
colgroup>
<thead>
<tr>
<th scope="col">这是第一个列标题th>
<th scope="col">这是第二个列标题th>
<th scope="col">这是第三个列标题th>
tr>
thead>
<tbody>
<tr>
<td>这是第一个td>
<td>这是第二个td>
<td>这是第三个td>
tr>
<tr>
<td>这是第一个td>
<td>这是第二个td>
<td>这是第三个td>
tr>
tbody>
table>
td::before{
content:attr(data-label);
}
fieldset
元素用于分组相关信息块,比如包含联系inxi,包含留言信息的区块分组,同时可以配合legend
元素使用,legend
元素类似fieldset
的标题 <fieldset >
<legend>这是分组的标题legend>
<input type="text" name="" id="">
<input type="password" name="" id="">
fieldset>
<label>Email:<input />label>
resize:vertical
属性指定textarea的缩放 ul{
/* 定义计时器,名字为count,初始值为2 */
counter-reset: count 2;
list-style: none;
}
li{
position: relative;
/* 递增 */
counter-increment: count;
}
li::before{
/* 使用计数器 */
content: '$' counter(count);
position: absolute;
transform-origin: 100% 100%;
transform: translate(-100%,-100%) rotate(-90deg);
}
transform:skewX(15deg)
设置变形,对哪边设置变形,那么变形后的那边变形后保持水平,另外一边倾斜,可以利用变形达到2.5D的效果position:fixed
则会把变换的元素当作自己视口animation-fill-mode:backwards
,那么第一个关键帧的属性会立即应用,使用forwards
动画完成后应用最后一个关键帧的计算样式,使用both则前向和反向都进行填充如果不存在delay的话加与不加是没有区别的animation-play-state:paused
可以达到暂停动画的目的,默认值是running
perspective:800px
定义观察点位于屏幕前方多远,恰当的距离一般为600px-1000px,在要变换的元素的父元素上设置perspective-origin:top left
定义观察者位置perspective()
函数对单个元素设置透视效果.box{
transform:perspective(800px) rotateY(60deg);
}
transform-style:preserve-3d
rotate3d(1,1,1,45deg)
,绕源点到矢量[1,1,1]的连接线旋转45degmatrix
使用matrix3d
变换矩阵进行变换,接收16个参数,堪称最复杂的CSS属性shape-outside:circle()
指定外轮廓形状,只能对浮动元素设置,指定polygon()
指定多边形 /* 圆和椭圆,类似渐变的配置 */
shape-outside: circle(150px at 50%);
shape-outside: ellipse(150px 40px at 50% 25%);
/* 上下20px,左右30px,圆角10px */
shape-outside: inset(20px 30px round 10px);
shape-image-threshold
改变透明度阈值阈值,默认是以完全透明的边生成形状shape-outside:border-box;
shape-margin
给整个形状添加外边距clip-path
实现了剪切路径形状定义硬边界 /* 多边形剪切 */
clip-path: polygon(0 3vw, 100% 0, 100% calc(100% - 3vw), 0% 100%);
/* 还可以使用circle ellipse inset,剪切 */
对于复杂边界,推荐使用SVG定义边界
-webkit-mask-image: radial-gradient( ellipse 90% 30% at 50%, rgba(0,0,0,0) 45%, #000 70% );
/* 第二个颜色为透明 */
-webkit-mask-size: 100% 200%;
mix-blend-mode:multiply
达到混合的目的,默认是会与背景混合的,也可以设置opacity:0.999
达到新堆叠上下文分离的目的,或者使用新属性isolation:isolation
分离filter:drop-shadow
达到目的,相比box-shadow的优势在于性能更好,会调用GPU处理。backdrop-filter
设置,与filter类似,不过是给元素背景及其后面页面的合成结果,可以利用其实现毛玻璃效果backdrop-filter:blur(5px);
background-color:rgba(0,0,0,.5);