Open shoutingwei opened 6 years ago
伪类,伪元素,锚伪类?解释一下“::before”和“:after”中的双冒号和单冒号的区别
css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来修饰不在文档树中的部分,比如,一句话中的第一个字母,或者是列表中的第一个元素。
伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,我们可以通过:hover来描述这个元素的状态。虽然它和普通的css类相似,可以为已有的元素添加样式,但是它只有处于dom树无法描述的状态下才能为元素添加样式,所以将其称为伪类。(状态、结构化、表单相关等)
p::first-letter {
font-size: 5em;
}
li:first-child {
color: orange
}
伪元素用于创建一些不在文档树中的元素,并为其添加样式。比如说,我们可以通过::before来在一个元素前增加一些文本,并为这些文本添加样式。虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。
伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档数外的元素。(first-line,first-letter不属于元素)因此,伪类与伪元素的区别在于:有没有创建一个文档树之外的元素。 CSS3规范中的要求使用双冒号(::)表示伪元素,以此来区分伪元素和伪类,比如::before和::after等伪元素使用双冒号(::),:hover和:active等伪类使用单冒号(:)。
CSS实现隐藏页面的方式 opacity 设为 0(会被读屏,占位,可以做动画)、将 visibility 设为 hidden(占位, 不会被读屏,事件监听失效,子元素要显式设置可见)、将 display 设为 none(不占位,不读屏,子元素也会被隐藏,不能被添加动画,没有交互操作) 或者将 position 设为 absolute 然后将位置设到不可见区域(读屏),clippath(占位,读屏)。
clip-path 属性可以通过定义裁剪区域来决定目标元素哪个区域可见,哪个区域不可见,也就是只有在闭合路径内的部分才显示,区域以外的部分就不显示。可以通过url 引入内嵌的或者外置的SVG,又或者是直接用自带的形状为clip-path 属性指定路径。 Clip-path 属性是clip属性的替代者,也可以说是click 属性的升级版。
水平居中
center {
width: 960px;//fit-content
margin-left: auto;
margin-right: auto;
}
或不知道宽度如下
{
width: -moz-fit-content;
width:-webkit-fit-content;
width: fit-content;
margin-left: auto;
margin-right: auto;
}
子元素inline-block或者inline,元素的父容器中设置text-align的属性为“center”
<div style="text-align:center"><div style="display:inline-block">haha</div></div>
{
position: absolute;
width: 宽度值;
left: 50%;
margin-left: -(宽度值/2);
}
方法4.. 知道或不知道宽度
Flexbox
{
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-pack: center;
display: -o-box;
-o-box-orient: horizontal;
-o-box-pack: center;
display: -ms-box;
-ms-box-orient: horizontal;
-ms-box-pack: center;
display: box;
box-orient: horizontal;
box-pack: center;
}
方法5.
知道或不知道宽度
.parent{
display:flex;
justify-content: center;
}
方法6.
知道宽度 div{ position:relative; left:50%; width:10%; transform:translateX(-5%); }
-方法7. 不知道宽度
<style>
.son{
position:absolute;
left:50%;
transform: translateX(-50%);
}
</style>
<body>
<div class="son">
haha
</div>
</body>
垂直居中
方法1.
不知道自己高度和父容器高度的情况下, 利用绝对定位只需要以下三行:
<style>
.son{
position:absolute;
top:50%;
transform: translateY(-50%);
}
</style>
- 方法2.
若父容器下只有一个元素,且父元素设置了高度,则只需要使用相对定位即可
parentElement{ height:xxx; } .childElement { position: relative; top: 50%; transform: translateY(-50%); }
- 方法3.
parentElement{ height:xxx; display:flex;/Flex布局/ display: -webkit-flex; / Safari / align-items:center;/指定垂直居中/ }
- 方法4
table
Double Line
Double Line
body { display: table; width: 100%; height: 100%;//如果高度没有撑开 没用 }
.box { display:table-cell; vertical-align: middle; text-align: center; }
- 方法5
子元素line-height和父元素height相同
盒模型,box-sizing
box-sizing属性值可以为这三个值中的一个:content-box(default),border-box(有什么好处?固定了盒子大小,border的改变不会影响周围元素,也不用再考虑padding的大小,简化了计算,比如两个盒子都50%),padding-box
CSS3新特性
border-radius(border-top-left-radius border-bottom-right-radius) box-shadow border-image https://www.w3cplus.com/content/css3-box-shadow box-shadow:第一个参数为正(负)数是右(左)边的阴影 第二个参数为正(负)数是下(上)的阴影 第三个是模糊直径,第四个是颜色,多条边可以用逗号分开每组。如果是内嵌:在每组最前面加上inset border-image:https://aotu.io/notes/2016/11/02/border-image/index.html
background-image:url1,url2,...,urlN; background-repeat : repeat1,repeat2,...,repeatN; backround-position : position1,position2,…,positionN; (background-position-x, background-position-y)(为正数时往右往下) background-size : size1,size2,…,sizeN;//可以用百分比 background-attachment : attachment1,attachment2,…,attachmentN;(fixed, scroll, inherit)//图片会不会跟着内容滚动,还是固定,默认滚动 background-clip : clip1,clip2,…,clipN;( border-box|padding-box|content-box;绘制区域默认border-box) background-origin : origin1,origin2,…,originN;(padding-box|border-box|content-box 规定背景图片的定位区域。默认border-box) background-color : color; (ex. background-image: url(img_flwr.gif), url(paper.gif); background-position: right bottom, left top; background-repeat: no-repeat, repeat; )
background: linear-gradient(angle, color-stop1, color-stop2);(y轴正方向0度,往左负角度,往右正角度,单位deg) linear-gradient(direction, color-stop1, color-stop2, …);direction不是必填 默认从上到下 ex 注意写法从左到右
repeating-linear-gradient
repeating-radial-gradient http://www.runoob.com/css3/css3-gradients.html
text-shadow box-shadow text-overflow word-wrap word-break
transform-origin 转换位置 正数 第一个参数是原位置向上,第二个参数原位置向右。 除了scale rotate matrix 都可以写X ,Y 比如 skewX
transform: matrix(a,b,c,d,e,f);
3D转换 transform: rotateX(120deg); transform: rotateY(130deg); 省略。。 http://www.runoob.com/css3/css3-3dtransforms.html
过渡
或
resize (none, both, horizontal, vertical)调整大小 box-sizing border-box
outline:2px solid red; outline-offset:15px;(border外15px)
弹性盒子
flex
多媒体查询
可用于检测很多事情,例如:viewport(视窗) 的宽度与高度,设备(print screen speech)的宽度与高度,朝向 (智能手机横屏,竖屏) 。分辨率 http://www.runoob.com/cssref/css3-pr-mediaquery.html
方法一
@media not screen and (color), print and (color)
http://www.w3school.com.cn/cssref/css_selectors.ASP
元素的每个
元素。
元素
元素
元素的每个
元素。
元素。
元素。(前面不是p元素也算)
元素的每个
元素。
元素。
元素(包括文本节点)。
元素的每个元素。