*{
margin:0;
padding:0;
}
p{
color:red;
}
.warning{
color:red;
}
#warning{
color:red;
}
优先级
!important>行内样式>ID选择器>类、伪类、属性>元素、伪元素>继承>通配符
{
示例HTML
//<ul>
<li foo>1</li>
<li foo="abc">2</li>
<li foo="abc efj">3</li>
<li foo="abcefj">4</li>
<li foo="efjabc">5</li>
<li foo="ab">6</li>
</ul>
[attribute]
[foo]{
background-color:red;
}
选择所有带 foo 属性的元素
[attribute=value]
[foo=abc]{
background-color:red;
}
选择所有 foo=abc 的元素
[attribute~=value]
[foo~=abc]{
background-color:red;
}
选择所有 foo中包含abc单词 的元素
[attribute^=value]
[foo^=abc]{
background-color:red;
}
选择所有 foo中abc开头 的元素
[attribute$=value]
[foo$=abc]{
background-color:red;
}
选择所有 foo中abc结尾 的元素
[attribute*=value]
[foo*=abc]{
background-color:red;
}
选择所有 foo中包含abc 的元素
[attribute|=value]
[foo|=abc]{
background-color:red;
}
选择所有 foo中abc开头 的元素
}
//<ul>
<li>
<h1>h1</h1>
<p>p1</p>
</li>
<li>
<h1>h1</h1>
<p>p1</p>
</li>
</ul>
示例:
ul li p || ul li h1
选择 element 元素内部的所有 element 元素。
ul li{
border: 1px solid red;
}
选择父元素为 element 元素的所有 element 子元素。
ul>li>p{
border: 1px solid red;
}
选择紧接在 element元素之后的 element 元素。
示例HTML:
<div>
<h1>h1</h1>
<p>p1</p>
<p>p2</p>
<p>p3</p>
</div>
css
h1+p{
color:red;
}
选择前面有 element1 元素的每个 elem 元素。
h1~p{
border: 1px solid red;
}
:root 文档根元素伪类
:root{
background-color:red;
}
:nth-child(n) 孩子选择器
:nth-of-type(n) 同类型的第n个元素
element:first-child
选择属于父元素element的第一个子元素。 等同 :nth-child(1)
element:last-child
选择属于父元素element的最后一个子元素。
element:first-of-type
同类型的第一个子元素
element:last-of-type
同类型的最后一个子元素
element:only-child
选择了父元素 element 唯一的子元素
<div>
<h1>h1</h1>
<p>p1</p>
<p>p2</p>
<p>p3</p>
</div>
<div>
<h1>h2</h1>
</div>
div :only-child{
color: red;
}
最终h1内容中的h2颜色为红色
:empty 没有子元素
<!DOCTYPE html>
<html>
<head>
<style>
p:empty
{
width:100px;
height:20px;
background:#ff0000;
}
</style>
</head>
<body>
<h1>这是标题</h1>
<p>第一个段落。</p>
<p></p>
<p>第三个段落。</p>
<p>第四个段落。</p>
<p>第五个段落。</p>
</body>
</html>
生效的是 <p></p>
:nth-last-child(n) 倒数第n个子元素
element:nth-last-of-type(n)
同类型的倒数第n个子元素
2n+1(odd):奇数、2n(even):偶数
element:last-of-type
同类型的倒数第一个子元素
element:first-of-type
同类型的第一个子元素
element:only-of-type
父元素里唯一同类型子元素
同上面的only-child
a:link
没有访问过的状态
a:active
链接正在被点击
a:hover
选择鼠标指针位于其上的链接。
a:visited
选择所有已被访问的链接。
:focus
:focus 选择器用于选取获得焦点的元素。
接收键盘事件或其他用户输入的元素都允许 :focus 选择器。
:enabled / :disabled
选择每个启用的 input 元素 / 选择每个禁用的 input 元素
:checked
选择每个被选中的 input 元素。自定义开关可以用这个实现
:not(selector)
选择非 selector 元素的每个元素。(反向选择)
element::first-line
<!DOCTYPE html>
<html>
<head>
<style>
p:first-line{
background-color:yellow;
}
</style>
</head>
<body>
<h1>WWF's Mission Statement</h1>
<p>To stop the degradation of the planet's natural environment and to build a future in which humans live in harmony with nature, by; conserving the world's biological diversity, ensuring that the use of renewable natural resources is sustainable, and promoting the reduction of pollution and wasteful consumption.</p>
</body>
</html>
p的第一行文字背景颜色变黄色
element::first-letter
<!DOCTYPE html>
<html>
<head>
<style>
h1:first-letter{
color:yellow;
}
</style>
</head>
<body>
<h1>WWF's Mission Statement</h1>
</body>
</html>
p第一个字符变黄
element::before
在每个 element 元素的内容之前插入内容。我们更多的可能是当作一个div来用
element::after
在每个element元素的内容之后插入内容。我们可能更多的是用来清除浮动或验证表单提示等其它
::selection
选择被用户选取的元素部分。
以上内容引用至掘金:稀土掘金
backdrop-filter
CSS 属性可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。因为它适用于元素背后的所有元素,为了看到效果,必须使元素或其背景至少部分透明。
语法
/* 关键词值 */
backdrop-filter: none;
/* 指向 SVG 滤镜的 URL */
backdrop-filter: url(commonfilters.svg#filter);
/* <filter-function> 滤镜函数值 */
backdrop-filter: blur(2px);
backdrop-filter: brightness(60%);
backdrop-filter: contrast(40%);
backdrop-filter: drop-shadow(4px 4px 10px blue);
backdrop-filter: grayscale(30%);
backdrop-filter: hue-rotate(120deg);
backdrop-filter: invert(70%);
backdrop-filter: opacity(20%);
backdrop-filter: sepia(90%);
backdrop-filter: saturate(80%);
/* 多重滤镜 */
backdrop-filter: url(filters.svg#filter) blur(4px) saturate(150%);
/* 全局值 */
backdrop-filter: inherit;
backdrop-filter: initial;
backdrop-filter: revert;
backdrop-filter: unset;
filter
css属性 将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像、背景和边框的渲染
语法
/* URL to SVG filter */
filter: url("filters.svg#filter-id");
/* <filter-function> values */
filter: blur(5px);
filter: brightness(0.4);
filter: contrast(200%);
filter: drop-shadow(16px 16px 20px blue);
filter: grayscale(50%);
filter: hue-rotate(90deg);
filter: invert(75%);
filter: opacity(25%);
filter: saturate(30%);
filter: sepia(60%);
/* Multiple filters */
filter: contrast(175%) brightness(3%);
/* Use no filter */
filter: none;
/* Global values */
filter: inherit;
filter: initial;
filter: revert;
filter: unset;
布局的方式
盒子内部的布局
盒子之间的布局
脱离标准文档流下的盒子的布局
标准文档流下的盒子的布局
浮动就是浮动元素会脱离文档的普通流,根据 float 的值向左或向右移动,直到它的外边界碰到父元素的内边界或另一个浮动元素的外边界为止。
浮动布局的生成:
css 属性 float:left/right/none 左浮动/右浮动/不浮动(默认)
标准文档流和浮动布局都只能在水平或垂直方向布局元素,但现实是,我们可能需要在上下左右几个方向上同时偏移元素,定位布局正是为了解决这一问题而设计的。
定位布局的生成:
通过设置元素的 position 属性,可以让元素处于定位布局中,并通过 left、right、top、bottom 属性设置元素具体的偏移量。
定位布局分为四种:
BFC( Block Formatting Context )
BFC是一个独立的区域,它内部的元素都依照它的规则渲染,并且不会与BFC外部打交道。
行内格式化上下文
IFC( Inline formatting contexts )
块级元素中仅包含内联级别元素。
自适应格式化上下文
FFC( Flex Formatting Contexts ),display 值为 flex 或者 inline-flex 的元素将会生成自适应容器。flex box 由伸缩容器和伸缩子元素组成。通过设置元素 display:flex/inline-flex 可以得到伸缩容器,前者为块级元素,后者为行内元素。伸缩容器外元素不受影响。
网格布局格式化上下文
GFC( GridLayout Formatting Contexts ),当一个元素设置为 display:grid 的时候,此元素将获得一个独立的渲染区域,可以在网格容器上定义网格行和列,为每一个网格定义位置和空间。GFC 和 table 的区别在于 GridLayout 会有更加丰富的属性来控制行列,控制对齐以及更为精细的渲染。
表格布局上下文
随着各种技术的不断发展,table 布局已经逐渐退出了历史的舞台,但是因为 table 本身的一些特性,比如上下对齐,左右对齐,文字默认居中使得 table 在曾经的布局中占有一席地位。
display 可能是最常用的元素隐藏方法; 。当其值为 none 时元素就隐藏了。被隐藏的元素不会在页面中占据位置,也不会响应绑定的监听事件。
visibility 属性可以设置为 visible 或 hidden 来显示和隐藏元素。
opacity: N 和 filter: opacity(N) 属性可以传递一个 0 到 1 之间的数字,或者 0% 和 100% 之间的百分比,对应地表示完全透明和完全不透明。
在现代浏览器中,这两者之间几乎没有实际的区别,但如果同时应用多种效果(模糊、对比度、灰度等)时,应该使用 filter 属性。
注意:opacity 可以设置动画并提供出色的性能,但页面上保留完全透明的元素可能会触发事件。
transform 属性可以用于元素的平移、缩放、旋转或倾斜等。可以使用 scale(0) 或者 translate(-9999px, 0px) 属性值来将元素隐藏:
可以将元素的color、background-color 和 border-color 等属性设置为rgba(0,0,0,0),这样就会使元素完全透明:
color: rgba(0,0,0,0);
background-color: rgba(0,0,0,0);
clip-path 属性可以创建一个剪辑区域,用于确定元素的哪些部分是可见的。使用 clip-path: circle(0) 可以将元素进行隐藏。
如果一个元素要浮动,那么它的父元素一定要有高度。高度的盒子,才能关住浮动。可以通过直接给父元素设置height,实际应用中我们不大可能给所有的盒子加高度,不仅麻烦,并且不能适应页面的快速变化;另外一种,父容器的高度可以通过内容撑开(比如img图片),实际当中此方法用的比较多。
在最后一个子元素新添加最后一个冗余元素,然后将其设置clear:both,这样就可以清除浮动。这里强调一点,即在父级元素末尾添加的元素必须是一个块级元素,否则无法撑起父级元素高度。
结合 :after 伪元素和 IEhack ,可以完美兼容当前主流的各大浏览器,这里的 IEhack 指的是触发 hasLayout。
/*开启haslayout*/
.clearfix {
*zoom: 1;
}
/*ie6 7 不支持伪元素*/
.clearfix:after {
content: '';
display: block;
clear: both;
height:0;
line-height:0;
visibility:hidden;//允许浏览器渲染它,但是不显示出来
}
这种方案让父容器形成了BFC(块级格式上下文),而BFC可以包含浮动,通常用来解决浮动父元素高度坍塌的问题。
BFC的触发方式
我们可以给父元素添加以下属性来触发BFC:
这里可以给父元素设置overflow:auto,但是为了兼容IE最好使用overflow:hidden。
但这种办法有个缺陷:如果有内容出了盒子,用这种方法就会把多的部分裁切掉,所以这时候不能使用。
br标签存在一个属性:clear。这个属性就是能够清除浮动的利器,在br标签中设置属性clear,并赋值all。即能清除掉浮动。
<div id="wrap">
<div id="inner"></div>
<br clear="all" />
</div>
在Es5中this指向,始终坚持一个原则:this 永远指向最后调用它的那个对象,this 永远指向最后调用它的那个对象,this 永远指向最后调用它的那个对象;重要的事情要说三遍。
var name = "windowsName";
function a() {
var name = "Cherry";
console.log(this.name); // windowsName
console.log("inner:" + this); // inner: Window
}
a();
console.log("outer:" + this) // outer: Window
我们先找a调用,在a()调用时并没有响应的对象,那么就是全局对象;this 永远指向最后调用它的那个对象 所以当前的this指向是window,及this.name输出结果为“windowsName”。
接下来看下一个例子:
var name = "windowsName";
var a = {
name : "Cherry",
func1: function () {
console.log(this.name)
},
func2: function () {
setTimeout( function () {
this.func1()
},100);
}
};
a.func2() // this.func1 is not a function
在调用并执行func2()过程中,setTimeout()是window对象。在window对象中没有func1()方法,所以会报错
下面我们用箭头函数解决这个问题:
var name = "windowsName";
var a = {
name : "Cherry",
func1: function () {
console.log(this.name)
},
func2: function () {
setTimeout( () => {
this.func1()
},100);
}
};
a.func2() // Cherry
在ES5中 箭头函数的 this 始终指向函数定义时的 this,而非执行时。箭头函数需要记着这句话:“箭头函数中没有 this 绑定,必须通过查找作用域链来决定其值,如果箭头函数被非箭头函数包含,则 this 绑定的是最近一层非箭头函数的 this,否则,this 为 undefined”。
当然了用 _this = this 也是可以解决这个问题
使用 apply
var a = {
name : "Cherry",
func1: function () {
console.log(this.name)
},
func2: function () {
setTimeout( function () {
this.func1()
}.apply(a),100);
}
};
a.func2() // Cherry
使用 call
var a = {
name : "Cherry",
func1: function () {
console.log(this.name)
},
func2: function () {
setTimeout( function () {
this.func1()
}.call(a),100);
}
};
a.func2() // Cherry
使用 bind
var a = {
name : "Cherry",
func1: function () {
console.log(this.name)
},
func2: function () {
setTimeout( function () {
this.func1()
}.bind(a)(),100);
}
};
a.func2() // Cherry
现在我们基本说了apply、call、bind 的用法,但是apply、call、bind 是有区别的:
MDN中apply的定义
apply() 方法调用一个具有给定 this 值的函数,以及以一个数组(或类数组对象)的形式提供的参数。
语法
func.apply(thisArg, [argsArray])
apply 和 call 的区别
apply() 与 call() 非常相似,不同之处在于提供参数的方式
语法
function.call(thisArg, arg1, arg2, ...)
所以 apply 和 call 的区别是 call 方法接受的是若干个参数列表,而 apply 接收的是一个包含多个参数的数组。
bind()
bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
语法
function.bind(thisArg[, arg1[, arg2[, ...]]])
这么说可能不清楚具体bind()用法,举个栗子:
var a ={
name : "Cherry",
fn : function (a,b) {
console.log( a + b)
}
}
var b = a.fn;
b.bind(a,1,2)() // 3
以上内容引用自:稀土掘金
先来个图看看构造函数,实例,原型对象之间的关系
实例与原型对象之间有直接的联系,但实例与构造函数之间没有
Vue2.0的生命周期钩子一共有10个分别简单介绍如下:
vue3.0的生命周期与vue2.0有些许不同
选项式API生命周期钩子
组合式API的生命周期钩子
组合式 API 上的生命周期钩子与选项式 API 的名称相同,但前缀为 on
因为 setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显式地定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在 setup 函数中编写
本文作者:无所事事彼得兔
本文链接:https://www.3dcw.cn/index.php/archives/501/
最后修改时间:2023-03-20 20:45:06
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!